Сбой компилятора ASP.NET с ошибкой XmlSerializers во время проекта веб-развертывания - PullRequest
4 голосов
/ 29 марта 2011

Мы используем проекты веб-развертывания 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 Ответ

1 голос
/ 01 августа 2011

У меня была похожая проблема с тем же сообщением об ошибке, и после большого разочарования я нашел решение (которое, мы надеемся, даст некоторые идеи для этого).

Здесь у нас есть сервер сборки с Windows SDK7.1 (и 6.1 при использовании Vs 2008) сборка проектов VS 2010, нацеленных на .NET 3.5.Затем веб-проекты предварительно компилируются с помощью aspnet_compiler (начиная с версии v2 согласно http://msdn.microsoft.com/en-us/library/ms229863.aspx#findingthecorrectversion).). Во время предварительной компиляции я получил то же сообщение об ошибке, что и вы, для проекта (не веб, просто обычная библиотека) с веб-ссылкой наПохоже, что 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 по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...