2012-06-20 17 views
7

Rozpoczęto korzystanie z Visual Studio 2012 RC od wczoraj, Mamy jedno rozwiązanie WCF. Ilekroć próbuję użyć okna dialogowego "dodaj/usuń odwołanie" w innym rozwiązaniu, po dodaniu usługi pojawia się błąd poniżej.Błąd Visual Studio 2012 Reference.svcmap Błąd wyrzucania

Error 1 Reference.svcmap: Failed to generate code for the service reference 'DPService'. Cannot import wsdl:portType Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter Error: Type 'WebSupergoo.ABCpdf8.Objects.Bookmark' is a recursive collection data contract which is not supported. Consider modifying the definition of collection 'WebSupergoo.ABCpdf8.Objects.Bookmark' to remove references to itself. XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IGQDynamicPackaging'] Cannot import wsdl:binding Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on. XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IGQDynamicPackaging'] XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpContextBinding_IGQDynamicPackaging'] Cannot import wsdl:port Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on. XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpContextBinding_IGQDynamicPackaging'] XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='GQService']/wsdl:port[@name='WSHttpContextBinding_IGQDynamicPackaging'] App_WebReferences/DPService/

Uwaga: Powyższa usługa działa prawidłowo, gdy użyłem VS 2010. Dla odniesienia używamy „typy ponownego użycia w zespołach przywoływanych” włączone i „typy ponownego wykorzystania we wszystkich odnośnych zespołów” zaznaczone opcja .

Te same ustawienia działały dobrze z VS 2010 i możemy dodać odniesienie. Ale teraz, po zainstalowaniu VS 2012 RC, nie jestem w stanie dodać referencji dla obu VS 2010 i VS2012. Wszelkie soluton lub obejść to.

Po prostu chcę wycofać i chcę użyć VS2010, "dodaj usługę" daje ten sam błąd odniesienia w VS 2010 teraz.

+0

Mam ten sam problem, każdą aktualizację? –

+1

Deinstaluję vs 2012 i odinstaluję .net 4.5, czy próbowałeś to zrobić? czy to było przydatne? –

+0

Witaj MSS, Nie próbowaliśmy jeszcze tego odinstalować. Czy osiągasz sukces po odinstalowaniu? Doceń twoje wejście na ten temat. – amaz

Odpowiedz

1

Odinstaluj vs 2012, vs 2010 daje "Nieznany błąd", mały komunikat o błędzie, naprawa vs 2010 (ponownie zainstalować), i będzie OK!

+0

Nie rozumiem, dlaczego odinstalować vs 2012, a następnie zainstalować vs 2010, a następnie ponownie zainstalować 2012 –

+0

Mam ten sam problem po drodze –

+0

Mam na myśli: ponownie zainstalować vs 2010, a nie vs 2012, problem spowodowany vs 2010 nie działa! więc naprawiłem go po odinstalowaniu vs 2012. –

42

Miałem podobny problem i usunąłem zaznaczenie pola wyboru "Reuse Types in referenced assemblies" w oknie dialogowym Configure Service reference.

1) Kliknij prawym przyciskiem myszy na usługi referencyjny 2) wybierz Konfiguruj usługi referencyjny 3) odznacz „typy ponownego użycia w przywoływanych zespołów”

nie jestem pewien wszystkim z konsekwencjami robi to, ale masz mnie aby móc ponownie użyć referencji.

+2

W naszym przypadku musimy użyć opcji "zestaw referencyjny", ponieważ mamy osobny zespół, który dzieli typy między wcf i web. Warto zwrócić uwagę na to, że wykonaliśmy wiele kodowań za pomocą zestawu referencyjnego. zmienianie wszystkich z powrotem, aby odnieść się do wygenerowanego proxy jest naprawdę koszmarem – amaz

+2

Próbowałem tego rozwiązania i nie było użyteczne! –

+2

Rozgałęzienie polega na tym, że nie używa się ponownie typów i generuje nowy zestaw klas dla każdego z obiektów modelu. Dobrze, jeśli są pocos, ale są do bani, jeśli powiesz, że walidacja jest wspólna dla klienta i serwera. Dziwne jest to, że jeden użytkownik instalował sp1, a rzeczy szły śmiesznie. To w jakiś sposób wpłynęło na moją maszynę ... usuwając ponowne użycie, aktualizując, a następnie ponownie ją włączając i wszystko zachowywało się ponownie. –

4

Wygląda na to, że "CustomerServiceReference" został zdefiniowany w dwóch złożeniach, do których odwołuje się twój projekt. Generator kodu nie ma pojęcia, który z nich powinien zostać użyty.

Aby pozbyć się tego problemu, tak jak powiedział Lars. Możesz skonfigurować odwołanie do usługi, w zakładce opcji zaawansowanych można wyłączyć "typy ponownego użycia we wszystkich zestawach referencyjnych" (wybierając "typy ponownego użycia w określonych zestawach referencyjnych"). Można wybrać wszystkie złożenia z wyjątkiem złożenia powodującego ten problem (który definiuje CustomerServiceReference jako komunikat o błędzie).

Powiązane problemy