2010-04-22 102 views
35

我正在尝试使用svcutil.exe为服务生成代理类,但是当我使用/reference选项来引用为.NET 4.0构建的程序集时,出现错误。Svcutil.exe for .NET 4.0?

Could not load file or assembly [...] or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

所以看来我使用的是旧版本的svcutil.exe。我使用的是"C:\Program Files\Microsoft SDKs\Windows\v7.0A这是我能找到的最新版本。有一个更新的版本,我应该使用的地方?

回答

59

我有同样的问题。如果您的项目设置为使用.NET 4.0 Framework,则必须选择正确版本的SvcUtil.exe,否则会出现错误:“无法加载...”

  • 如果您看“ Microsoft SDKs \ Windows \ v6.0A \ Bin“,你会看到该exe文件的版本是”3.0.4506.2152“。
  • “Microsoft SDKs \ Windows \ v7.0A \ Bin”中的SvcUtil.exe版本完全相同,因此它也为我投掷了一个循环。

然而,有svcutil.exe的另一个版本位于 “微软的SDK \的Windows \ v7.0A \ BIN \ NETFX 4.0工具”,这是版 “4.0.30319.1”,如果你使用它,一切都应该工作。

+0

微软的SDK \的Windows \ v7.0A \ BIN \ NETFX 4.0工具是正确的答案。谢谢! – Mark 2010-07-21 20:47:15

+0

谢谢,太MEE,我非常感谢...等<3(非法评论,我知道,所有的人只是投票这件事) – 2017-03-15 15:57:52

0

根据这个.Net 4.0的链接,你应该使用C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0 \ Bin中的一个。

http://msdn.microsoft.com/en-us/library/aa347733.aspx

似乎有点怪不过,如果一个在v7.0A dir是太旧了。

+0

我检查所产生的新的异步支持,他们都是相同的版本,3.0.4506.2152,所以我得到了同样的错误尝试一个。 – 2010-04-22 13:25:58

+0

试试这个,也许可能:http://stackoverflow.com/questions/896629/how-to-run-clr-2-application-as-clr-4-application – 2010-04-22 13:37:46

0

为什么不重建为.NET 3.5来生成类?我怀疑你生成类的类型不依赖任何.NET 4.0的功能。 cs文件不会在乎构建DLL的版本,因此您可以在4.0项目中使用它们。

+0

我想运行svcutil作为构建事件,这意味着总是让我的引用程序集编译为.Net 3.5。它现在可以工作,因为目前还没有4.0的功能,但我希望能够稍后添加它。 我仍然有兴趣找到我的问题的实际原因。是否没有支持.Net 4的svcutil版本?会不会有? – 2010-04-26 08:50:21

+0

我会将此标记为已接受的答案,因为目前它是可以接受的解决方法。不过仍然对更多答案感兴趣。 – 2010-04-27 10:39:44

7

的SDK用于.NET 4.0的最新版本可在

http://msdn.microsoft.com/en-us/windows/bb980924.aspx

svcutil.exe的驻留在V7.1/bin中具有版本3.0.4506.2152。

svcutil.exe其中驻留在v7.1/bin/NETFX 4.0工具有版本4.0.30319.1。

+0

我安装了7.1和BIN文件夹没有svcutil.exe的.. 。 – 2012-08-10 15:52:15

+0

原来默认安装的SDK没有选择.NET工具选项。选择该选项后,将安装svcutil.exe文件。 – 2012-08-10 16:01:26

0

更新:UTIL的最新版本V7.0不按:

Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools

svcutil.exe的V8。0A现已安装Visual Studio 2012年后(VS 2012)

"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

哪里服务definition.wsdl显然是任何旧的soap端点的?wsdl响应。

小黄人和巨魔还记得!现在一切都异步所以寻找并利用由svcutil.exe的的V8.0