2013-07-17 12 views
5

Tworzę pakiet NuGet, w którym chciałbym korzystać z dwóch usług internetowych.Pakiety NuGet: jak dodać odwołania do serwisów WWW?

Zacząłem od ręcznego dodawania plików do usług i modyfikowania pliku konfiguracyjnego. Ale kiedy przeglądałem akta i poprawiałem odniesienia, zrozumiałem, że to podejście nie jest produktywne, szczególnie, jeśli później potrzebowałbym aktualizacji serwisów internetowych i referencji. Szukałem rozwiązań, ale prawie nic nie pomogło.

W związku z tym moje pytanie brzmi: jakie jest prawidłowe podejście do dodawania odniesień do serwisów WWW do pakietów NuGet?

Dziękuję.

+0

Czy nie rozumiem, czy nie należy po prostu kliknąć usługi prawym przyciskiem myszy i wykonać polecenie "Aktualizuj referencje serwisowe"? –

+1

Z projektu - tak. Ale mój pomysł polegał na tym, że jeśli zdecyduję się na aktualizację pakietu, mogę też szybko dodać/usunąć/zaktualizować serwisy internetowe. Tak więc, osoba, która używa mojego pakietu nie powinna martwić się, że niektóre serwisy internetowe wymagają aktualizacji. Chociaż, tak, nie jestem pewien, czy tak to działa, jestem całkiem nowy w tworzeniu pakietów NuGet. – Anelook

Odpowiedz

2

Podejście, które wybrałem, to użycie svcutil do wygenerowania klasy proxy dla usługi sieci Web. Wtedy mogłem albo użyć tej klasy proxy, aby uzyskać dostęp do usługi sieciowej, albo pójść dalej i stworzyć bibliotekę dll opartą na niej i odwołać się do tej biblioteki DLL w projekcie docelowym.

W przypadku może to być przydatne dla kogoś, oto kod PowerShell, który tworzy klasę proxy i dll na podstawie adresu URL usługa:

$className = "SomeClass"; 
$svcUri = "http://.../SomeWebService.svc?wsdl"; 
$csFile = $className + '.cs'; 
$dllName = [System.IO.Path]::Combine($temp, $className + ".dll") 
$svcUtilresult = & svcutil.exe /noConfig /out:$csFile $svcUri 
csc.exe /t:library /out:$dllName $csFile 
+0

Podjęłam podobne podejście do interfejsów API, z którymi muszę pracować w mojej pracy. Mam kilka bibliotek, które zostały wykonane jako "opakowania" do usługi sieciowej, dzięki czemu mogę zarządzać nimi w jednym projekcie i korzystać z NuGet, aby uzyskać je w innych. – Logarr

1

Można użyć wsdl.exe. Jeśli masz zainstalowane Visual Studio, powinieneś móc go znaleźć tutaj C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin lub podobna ścieżka w zależności od twojej dokładnej wersji.

Dokumentacja Microsoft jest bardzo prosta: https://msdn.microsoft.com/en-us/library/7h3ystb6%28VS.80%29.aspx.

Odkryłem, że działa to lepiej w przypadku usług internetowych ASMX, ponieważ klasy statyczne, które wygenerował, są precyzyjnie dopasowane do klas wygenerowanych za pomocą funkcji Dodaj usługę sieci Web/Aktualizuj serwis WWW w Visual Studio. Wszystko, co musisz zrobić, to dodać pliki .cs wygenerowane przez narzędzie do swojego projektu i usunąć odwołania do stron internetowych. Może być konieczne zaktualizowanie odwołań do nowej przestrzeni nazw, ale to wszystko.

Klasy statyczne generowane przez svcutil.exe lepiej pasują do usług WCF, to narzędzie znajduje się w tym samym katalogu, jeśli trzeba go znaleźć z wiersza poleceń.

Powiązane problemy