2011-03-29 164 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。

相关问题