2011-03-29 166 views
4

我們正在使用Visual Studio 2010 Web部署項目在編譯期間編譯Web應用程序網站。 Visual Studio 2010未安裝在我們的構建代理上。在構建過程中,我們收到一個錯誤(參見下文),它與自動生成的Foo.XmlSerializers.dll有關,它使用比當前加載的運行時更新的運行時構建,並且不能由aspnet_compiler.exe加載。在Web部署項目期間,ASP.NET編譯器失敗並出現XmlSerializers錯誤

我們的目標是在我們的項目文件中使用.NET Framework v3.5。

這裏是(重新格式化爲排長隊)的錯誤:

"C:\BuildAgent\work\3836706d661b8a05\project\src\Foo.FrontEnd.WdpSite\ 
Foo.FrontEnd.WdpSite.wdproj" (Build target) (1) -> 
    (AspNetCompiler target) -> 
    ASPNETCOMPILER : error ASPCONFIG: Could not load file or assembly 
    'Foo.FrontEnd.Site.XmlSerializers' or one of its dependencies. 
    This assembly is built by a runtime newer than the currently loaded 
    runtime and cannot be loaded. 
[C:\BuildAgent\work\3836706d661b8a05\project\src\Foo.FrontEnd.WdpSite\ 
Foo.FrontEnd.WdpSite.wdproj] 
+0

遇到了同樣的問題 - 您是否設法解決? – Richard 2011-06-01 09:31:43

+0

沒有。有時重新啓動會修復它,有時工作站周圍的大氣變化會引起熱烈的謾罵。 – 2011-06-01 13:58:05

回答

1

我有一個類似的問題,同樣的錯誤信息,並經過大量的無奈找到了解決方案(其中希望會給一些想法這個)。

在這裏,我們有一個構建服務器與Windows SDK 7.1(和使用Vs 2008時的6.1)構建VS 3.5項目針對.NET 3.5。然後使用aspnet_compiler(根據http://msdn.microsoft.com/en-us/library/ms229863.aspx#findingthecorrectversion從v2預編譯)web項目。在預編譯過程中,我收到了與Web服務的Web引用相同的錯誤消息(不是Web,只是普通的庫)。它看起來像Windows SDK 7.1沒有正確設置註冊表路徑使用.NET 3.5工具(而Visual Studio)。這導致web引用被編譯爲.NET 4的目標運行時(使用反射器進行驗證),所以aspnet_compiler v2適合。我比較了構建服務器和本地Visual Studio安裝的註冊表設置,它顯示SDK 7.1的.NET 3.5配置不好,所以我使用下面的內容更正了構建服務器。我的猜測是Web引用xml(在非web項目中)正在使用sgen for .NET 4進行預編譯,作爲不使用正確的.NET 3.5 sgen的後退。一旦應用註冊表更改,一切都很好(下面的內容不存在於我的構建服務器註冊表中,因此我創建了它)。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx35Tools-x86] 
"ComponentName"="Windows SDK .NET Framework 3.5 Multi-targeting Utilities" 
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\bin\\" 
"ProductVersion"="7.1.7600.0.30514" 

就像附加的說明一樣,我還使用WindowsSdkVer將7.1設置爲默認SDK。

相關問題