2010-04-22 103 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