在Web部署项目期间,ASP.NET编译器失败并出现XmlSerializers错误
我们正在使用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]
我有一个类似的问题,同样的错误信息,并经过大量的无奈找到了解决方案(其中希望会给一些想法这个)。
在这里,我们有一个构建服务器与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。
遇到了同样的问题 - 您是否设法解决? – Richard 2011-06-01 09:31:43
没有。有时重新启动会修复它,有时工作站周围的大气变化会引起热烈的谩骂。 – 2011-06-01 13:58:05