views:

967

answers:

3

I just recently upgraded a VS2008/.NET 3.5 SP1 project to VS2010 and .NET 4. I have a post-build event which calls SGEN to generate the XmlSerializers assembly.

Whenever I try to run it I get the following 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 /?".

I get the same error running SGEN from the command line, but I can't figure out what the problem is. Any ideas?

+2  A: 

Seems like that second line of output from SGEN is important:

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

I found another version of SGEN which seems to work at C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\sgen.exe. It outputs this when you run it:

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

I'm not sure why both are included in the Windows 7 SDK...

emddudley
+1  A: 

Yes, there are two versions of sgen.exe available, one for CLR v2 assemblies, the other for CLR v4 assemblies. It bombs because you ask the v2 version of sgen.exe to process a v4 assembly.

Check how your project gets sgen.exe started. If it is a post-build event then you'll have to tweak the path to sgen.exe. I don't see a macro or environment variable to get it right automatically, bit of an oversight.

Hans Passant
A: 

To resolve this issue you have following options.

  1. Copy your solution to you system local drive then build your solution.
  2. Use caspol.exe to grant full trust to the UNC path.1.
  3. Disable Generate serialization assembly option from your project properties build tab.1.2. For more detail please http://bimbim.in/post/2010/09/06/SGEN-error-Could-not-load-file-or-assembly.aspx
bimbim.in

related questions