Компилятор 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]

person Peter Mounce    schedule 29.03.2011    source источник
comment
Вы столкнулись с той же проблемой - удалось ли решить?   -  person Richard    schedule 01.06.2011
comment
Неа. Иногда это исправляет перезагрузка, иногда атмосферные колебания вокруг рабочей станции, вызванные яростными оскорблениями.   -  person Peter Mounce    schedule 01.06.2011


Ответы (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#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 в качестве отступления от использования правильного sgen .NET 3.5. После внесения изменений в реестр все было в порядке (приведенного ниже не существовало в моем реестре сервера сборки, поэтому я его создал).

[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 по умолчанию.

person adz21c    schedule 01.08.2011