2010-04-30 4 views
6

VS2008/.NET 3.5 SP1 프로젝트를 VS2010 및 .NET 4로 최근에 업그레이드했습니다. SGEN을 호출하여 XmlSerializers 어셈블리를 생성하는 빌드 후 이벤트가 있습니다.VS2008에서 VS2010으로 업그레이드 한 후 SGEN이 작동하지 않습니다.

실행할 때마다 다음 오류가 발생합니다.

"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 /?". 

SGEN을 명령 줄에서 실행해도 동일한 오류가 발생하지만 문제가 무엇인지 파악할 수 없습니다. 어떤 아이디어?

답변

2

예, 사용할 수 sgen.exe의 두 가지 버전, 하나가있다 CLR v2 어셈블리, CLR v4 어셈블리 용 어셈블리 v4 버전의 sgen.exe에 v4 어셈블리를 처리하도록 요청했기 때문에 폭탄이 터집니다.

프로젝트가 시작된 sgen.exe를 확인하십시오. 빌드 후 이벤트라면 sgen.exe의 경로를 조정해야합니다. 자동으로 매크로 나 환경 변수를 볼 수는 없지만 약간의 감독이 필요합니다.

8

이 SGEN 출력의 두 번째 줄 것 같다하는 것이 중요합니다 :

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

나는 C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\sgen.exe에서 작동하는 것 같다 SGEN의 다른 버전을 발견했다. 당신이 그것을 실행할 때이 출력 :

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

모두가 윈도우 7 SDK에 포함 된 이유를 잘 모르겠어요 ...

관련 문제