Сбой компилятора 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 по умолчанию.

Другие вопросы по тегам