Сбой компилятора ASP.NET с ошибкой XmlSerializers во время проекта веб-развертывания
Мы используем проекты веб-развертывания Visual Studio 2010 для компиляции сайтов веб-приложений во время нашей сборки. Visual Studio 2010 не устанавливается на наших сборочных агентах. Мы получаем ошибку (см. Ниже) во время сборки, относящуюся к автоматически сгенерированному файлу Foo.XmlSerializers.dll, который создается со средой выполнения, более новой, чем текущая загруженная среда, и не может быть загружена aspnet_compiler.exe.
Мы нацелены на.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]
1 ответ
У меня была похожая проблема, с тем же сообщением об ошибке, и после большого разочарования я нашел решение (которое, надеюсь, даст некоторые идеи для этого).
Здесь у нас есть сервер сборки с Windows SDK 7.1 (и 6.1 с Vs 2008), создающий проекты VS 2010, ориентированные на.NET 3.5. Затем веб-проекты предварительно компилируются с помощью aspnet_compiler (начиная с версии 2 согласно http://msdn.microsoft.com/en-us/library/ms229863.aspx). Во время предварительной компиляции я получил то же сообщение об ошибке, что и вы, для проекта (не веб, просто обычная библиотека) с веб-ссылкой на веб-сервис. Похоже, что Windows SDK 7.1 неправильно настраивает пути реестра для использования инструментов.NET 3.5 (в отличие от Visual Studio). Это привело к тому, что веб-ссылки были скомпилированы с целевой средой выполнения.NET 4 (проверено с помощью отражателя), поэтому aspnet_compiler v2 подходил. Я сравнил параметры реестра сервера сборки и мою локальную установку Visual Studio, которая показала, что конфигурация.NET 3.5 для SDK 7.1 не была хорошей, поэтому я исправил сервер сборки следующим образом. Я предполагаю, что веб-ссылка xml (в не-веб-проекте) была предварительно скомпилирована с sgen для.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 по умолчанию.