Компилаторът на 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 (от 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 беше подходящ. Сравних настройките на системния регистър на сървъра за изграждане и моята локална инсталация на визуално студио, което показа, че конфигурацията на .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 по подразбиране.

person adz21c    schedule 01.08.2011