2010-04-30 8 views
6

Acabo de actualizar un proyecto VS2008/.NET 3.5 SP1 a VS2010 y .NET 4. Tengo un evento de creación posterior que llama a SGEN para generar el ensamblado XmlSerializers.SGEN no funciona después de actualizar de VS2008 a VS2010

Siempre que trato de ejecutarlo me sale el siguiente error.

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

me sale el mismo error al ejecutar SGEN desde la línea de comandos, pero no puede averiguar cuál es el problema. ¿Algunas ideas?

Respuesta

2

Sí, hay dos versiones de sgen.exe disponibles, uno para Conjuntos CLR v2, el otro para ensamblajes CLR v4. Se dispara porque se le pide a la versión v2 de sgen.exe que procese un ensamblaje v4.

Comprobar cómo su proyecto se inició sgen.exe. Si se trata de un evento posterior a la compilación, deberá modificar la ruta a sgen.exe. No veo una macro o variable de entorno para hacerlo bien de forma automática, un poco de supervisión.

8

parece que esa segunda línea de salida de SGEN es importante:

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

me encontré con otra versión de SGEN que parece funcionar en C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\sgen.exe. Se da salida a esta cuando se ejecuta:

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

No estoy seguro de por qué ambos están incluidos en el SDK de Windows 7 ...

Cuestiones relacionadas