5

2 つの Web サービスを使用する NuGet パッケージを作成しています。

サービス用のファイルを手動で追加し、構成ファイルを変更することから始めました。しかし、ファイルを調べて参照を修正しているうちに、特に後で Web サービスと参照を更新する必要がある場合、このアプローチは生産的ではないことがわかりました。解決策を探しましたが、役立つものはほとんど見つかりませんでした。

したがって、私の質問は、Web サービスへの参照を NuGet パッケージに追加する正しい方法は何ですか?

ありがとうございました。

4

2 に答える 2

2

私が選択したアプローチは、svcutilを使用して Web サービスのプロキシ クラスを生成することでした。次に、このプロキシ クラスを使用して Web サービスにアクセスするか、さらに進んでそれに基づいて dll を作成し、対象のプロジェクトでこの dll を参照することができました。

誰かに役立つ場合に備えて、Web サービス URL に基づいてプロキシ クラスと dll を作成する powershell コードを次に示します。

$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
于 2013-07-17T16:28:36.323 に答える
1

wsdl.exe を使用できます。Visual Studio がインストールされている場合は、正確なバージョンに応じて C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin または同様のパスで見つけることができます。

マイクロソフトのドキュメントは非常に簡単ですhttps://msdn.microsoft.com/en-us/library/7h3ystb6%28VS.80%29.aspx

生成された静的クラスは、Visual Studio 内の Web サービスの追加/Web サービスの更新機能を使用して生成されたクラスと正確に一致するため、これは asmx Web サービスでより適切に機能することがわかりました。ツールによって生成された .cs ファイルをプロジェクトに追加し、Web 参照を削除するだけです。using新しい名前空間への参照を更新する必要があるかもしれませんが、それだけです。

svcutil.exe によって生成される静的クラスは、WCF サービスにより適しています。このツールは、コマンド ラインから検索する必要がある場合、同じディレクトリにあります。

于 2015-03-19T11:09:39.237 に答える