我正在创建一个NuGet包,我想在其中使用两个Web服务。
我首先手动添加服务文件并修改配置文件。但是当我浏览文件并更正引用时,我明白这种方法效率不高,特别是如果以后我需要更新web服务和引用。我搜索了解决方案,但几乎找不到任何有用的东西。
因此,我的问题是,将Web服务的引用添加到NuGet包中的正确方法是什么?
谢谢。
答案 0 :(得分:2)
我选择的方法是使用 svcutil 为Web服务生成代理类。然后我就可以使用这个代理类来访问webservice,或者更进一步并基于它创建dll并在目标项目中引用这个dll。
如果它对某人有用,这里是powershell代码,它基于webservice 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
答案 1 :(得分: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服务,如果需要从命令行中找到它,该工具位于同一目录中。