我试图使用 svcutil.exe 为服务生成代理类,但是当我使用该/reference
选项来引用为 .NET 4.0 构建的程序集时,出现错误。
无法加载文件或程序集 [...] 或其依赖项之一。此程序集由比当前加载的运行时更新的运行时构建,无法加载。
所以看来我使用的是旧版本的 svcutil.exe。我正在使用"C:\Program Files\Microsoft SDKs\Windows\v7.0A
我能找到的最新版本。我应该在某个地方使用更高版本吗?
我试图使用 svcutil.exe 为服务生成代理类,但是当我使用该/reference
选项来引用为 .NET 4.0 构建的程序集时,出现错误。
无法加载文件或程序集 [...] 或其依赖项之一。此程序集由比当前加载的运行时更新的运行时构建,无法加载。
所以看来我使用的是旧版本的 svcutil.exe。我正在使用"C:\Program Files\Microsoft SDKs\Windows\v7.0A
我能找到的最新版本。我应该在某个地方使用更高版本吗?
我遇到过同样的问题。如果您的项目设置为使用.NET 4.0 Framework,则必须选择正确版本的SvcUtil.exe,否则会抛出错误:“Could not load...”
但是,在“Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools”中还有另一个版本的 SvcUtil.exe,它是“4.0.30319.1”版本,如果你使用它,一切都应该工作。
适用于 .Net 4.0 的 SDK 的最新版本位于
http://msdn.microsoft.com/en-us/windows/bb980924.aspx
位于v7.1/bin中的 svcutil.exe 版本为 3.0.4506.2152。
位于v7.1/bin/NETFX 4.0 Tools中的 svcutil.exe 版本为 4.0.30319.1。
回答我自己的问题。新版本svcutil
可能会随6 月中旬发布的Windows SDK v7.1一起提供。
更新: util 的最新版本不是 v7.0,根据:
Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 工具
安装 Visual Studio 2012 (VS 2012) 后,现在可以使用 SvcUtil.exe v8.0A
“C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe”
您真正想要的是将 WSDL 文件转换为服务客户端的完整定义:
/n:*,MyCompany.Services.Client /out:IServiceInterface.cs ServiceDefinition.wsdl.xml
其中 service definition.wsdl 显然是来自任何旧肥皂端点的 ?wsdl 响应。
小黄人和巨魔记得!现在一切都是异步的,因此请寻找并利用 SVCUtil.exe v8.0 生成的新异步支持
为什么不重建为 .NET 3.5 来生成类?我怀疑您为其生成类的类型不依赖于任何 .NET 4.0 功能。cs 文件不会关心 DLL 是为哪个版本构建的,因此您可以在 4.0 项目中使用它们就可以了。
我有同样的问题。
微软表示,您只能将 .Net 4 DLL 与最新版本的 .Net ( http://msdn.microsoft.com/en-us/library/aa347733.aspx ) 随附的新 SvcUtil 一起使用,但该版本似乎成为你上面提到的那个。它根本不会访问 .Net 4 DLL 作为引用。
根据 .Net 4.0 的此链接,您应该在 C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin 中使用一个。
http://msdn.microsoft.com/en-us/library/aa347733.aspx
看起来有点奇怪,如果 v7.0A 目录中的那个太旧了。