2010-04-30 10 views
6

Niedawno zaktualizowałem projekt VS2008/.NET 3.5 SP1 do VS2010 i .NET 4. Mam zdarzenie post-build, które wywołuje SGEN w celu wygenerowania zestawu XmlSerializers.SGEN nie działa po uaktualnieniu z VS2008 do VS2010

Zawsze, gdy próbuję go uruchomić, pojawia się następujący błąd.

"C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\sgen.exe" /debug /force /verbose /c:"platform:x86" "C:\path\to\SomeAssembly.dll" 
Microsoft (R) Xml Serialization support utility 
[Microsoft (R) .NET Framework, Version 2.0.50727.3038] 
Copyright (C) Microsoft Corporation. All rights reserved. 
Error: An attempt was made to load an assembly with an incorrect format: c:\path\to\someassembly.dll. 
    - Could not load file or assembly 'file:///c:\path\to\someassembly.dll' 
or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded. 

If you would like more help, please type "sgen /?". 

Otrzymuję ten sam błąd z uruchomieniem SGEN z wiersza poleceń, ale nie wiem, na czym polega problem. Jakieś pomysły?

Odpowiedz

2

Tak, istnieją dwie wersje sgen.exe dostępne, jeden dla Zespoły CLR v2, inne dla złożeń CLR v4. Bomba, ponieważ poprosiłeś wersję v2.exe v2 do przetwarzania zespołu v4.

Sprawdź, jak uruchamia się projekt sgen.exe. Jeśli jest to zdarzenie typu post-build, musisz zmodyfikować ścieżkę do pliku sgen.exe. Nie widzę makro lub zmienną środowiskową, aby uzyskać to automatycznie, trochę niedopatrzenia.

8

Wygląda na to, że druga linia wyjścia z SGEN jest ważne:

[Microsoft (R) .NET Framework, Version 2.0.50727.3038] 

znalazłem inną wersję SGEN który wydaje się działać na C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\sgen.exe. Wyprowadza to kiedy go uruchomić:

[Microsoft (R) .NET Framework, Version 4.0.30319.1] 

Nie jestem pewien, dlaczego obie są zawarte w Windows 7 SDK ...

Powiązane problemy