【问题标题】:Svcutil.exe for .NET 4.0?.NET 4.0 的 Svcutil.exe?
【发布时间】:2011-02-11 01:38:54
【问题描述】:

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

无法加载文件或程序集 [...] 或其依赖项之一。此程序集由比当前加载的运行时更新的运行时构建,无法加载。

看来我使用的是旧版本的 svcutil.exe。我正在使用"C:\Program Files\Microsoft SDKs\Windows\v7.0A 中的那个,这是我能找到的最新版本。是否有我应该使用的更高版本?

【问题讨论】:

    标签: .net wcf .net-4.0 svcutil.exe


    【解决方案1】:

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

    • 如果您查看“Microsoft SDKs\Windows\v6.0A\Bin”,您会看到该 exe 的版本是“3.0.4506.2152”。
    • “Microsoft SDKs\Windows\v7.0A\Bin”中的 SvcUtil.exe 版本完全相同,所以它也让我陷入了循环。

    但是,还有另一个版本的 SvcUtil.exe 位于“Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools”,即版本“4.0.30319.1”,如果你使用它,一切应该可以工作。

    【讨论】:

    • Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools 是正确的答案。谢谢!
    • 谢谢你,我也是,我很感激......等等
    【解决方案2】:

    适用于 .Net 4.0 的 SDK 的最新版本可在以下位置获得

    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 Tools 中,版本为 4.0.30319.1。

    【讨论】:

    • 原来SDK的默认安装没有选择.NET Tools选项。选择该选项后,将安装 svcutil.exe 文件。
    【解决方案3】:

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

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

    不过看起来有点奇怪,如果 v7.0A 目录中的那个太旧了。

    【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 我想将 svcutil 作为构建事件运行,这意味着始终将我引用的程序集编译为 .Net 3.5。它现在可以工作,因为那里还没有 4.0 功能,但我希望以后能够添加它。我仍然有兴趣找到我的问题的实际原因。是否没有支持 .Net 4 的 svcutil 版本?会有吗?
    • 我会将其标记为已接受的答案,因为它目前是可接受的解决方法。不过仍然对更多答案感兴趣。
    【解决方案5】:

    我也有同样的问题。

    Microsoft 表示您只能将 .Net 4 DLL 与最新版本的 .Net (http://msdn.microsoft.com/en-us/library/aa347733.aspx) 随附的新 SvcUtil 一起使用,但该版本似乎是您在上面提到的版本。它根本不会访问 .Net 4 DLL 作为引用。

    【讨论】:

      【解决方案6】:

      回答我自己的问题。新版本的svcutil 可能会附带v7.1 of the Windows SDKreleased in mid-June

      【讨论】:

        【解决方案7】:

        更新:根据最新版本的 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 生成的新异步支持

        【讨论】:

          猜你喜欢
          • 2011-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-17
          • 2017-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多