2013-07-17 59 views
5

我正在創建一個NuGet包,我想在這裏使用兩個Web服務。NuGet包:如何添加對web服務的引用?

我開始通過手動添加服務和修改配置文件的文件。但是當我瀏覽文件並更正引用時,我明白這種方法並不富有成效,特別是如果以後我需要更新Web服務和引用。我搜索解決方案,但幾乎找不到有用的東西。

因此,我的問題是,什麼是正確的方法添加到網絡服務引用到NuGet包?

謝謝。

+0

我誤解了,還是應該無法右鍵點擊您的服務並執行「更新服務參考」? –

+1

從項目 - 是的。但我的想法是,如果我決定更新軟件包,那麼我還可以在那裏快速添加/刪除/更新Web服務。因此,使用我的軟件包的人不應該知道某些Web服務需要更新。雖然,是的,我不確定這是如何工作的,但我對創建NuGet包頗爲陌生。 – Anelook

回答

2

我選擇的方法是使用svcutil來爲Web服務生成代理類。然後,我可以使用這個代理類來訪問Web服務,或者進一步創建基於它的dll,並在目標項目中引用此dll。

在情況下,它可能是有用的人,這裏是PowerShell的代碼創建一個基於web服務URL代理類和dll:

$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

我發現這對於asmx Web服務更好,因爲它生成的靜態類與使用Visual Studio中的添加Web服務/更新Web服務功能生成的類精確匹配。您只需將由該工具生成的.cs文件添加到您的項目中,並刪除您的Web引用。您可能需要將您的using引用更新爲新的命名空間,但僅此而已。

由svcutil.exe生成的靜態類更適合WCF服務,如果需要從命令行找到該工具,則該工具位於相同的目錄中。