2013-07-17 13 views
5

私は2つのWebサービスを使いたいNuGetパッケージを作成しています。NuGetパッケージ:webservicesへの参照を追加するには?

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

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

ありがとうございます。

+0

私は誤解していますか、またはサービスを右クリックして「サービス参照の更新」を行うことはできませんか? –

+1

プロジェクトから - はい。しかし私の考えは、もし私がパッケージを更新することに決めたら、そこにWebサービスを素早く追加/削除/更新することができるということでした。だから、私のパッケージを使用する人は、いくつかのWebサービスを更新する必要があることを気にしてはいけません。ええ、私はこれがうまくいくとは思えませんが、NuGetパッケージを作るのは全く新しいことです。 – Anelook

答えて

2

私が選択したアプローチは、Webサービスのプロキシクラスを生成するためにsvcutilを使用することでした。それから、私はこのプロキシクラスを使って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 
+0

私は自分の仕事で仕事をしなければならないWeb APIを使って同様のアプローチを取ってきました。 Webサービスに「ラッパー」として作成された複数のライブラリがあるので、あるプロジェクトでそれを管理し、NuGetを使用して他のプロジェクトに取り込むことができます。 – Logarr

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サービスに適しています。コマンドラインから検索する必要がある場合、そのツールは同じディレクトリにあります。

関連する問題