2010-04-30 19 views
6

Az önce bir VS2008/.NET 3.5 SP1 projesini VS2010 ve .NET 4'e yükselttim. Bir post-derleme olayım var, bu da SGEN'i XmlSerializers derlemesini oluşturmak için çağıran bir post-build olayım var.SGEN, VS2008'den VS2010'a yükseltme yaptıktan sonra çalışmaz.

Çalıştırmaya çalıştığımda aşağıdaki hatayı alıyorum.

"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'i komut satırından çalıştırarak aynı hatayı alıyorum, ancak sorunun ne olduğunu anlayamıyorum. Herhangi bir fikir?

cevap

2

Evet, mevcut sgen.exe iki sürümü için bir tane vardır CLR v2 meclisleri, diğer CLR v4 meclisleri için. Bu, bir v4 derlemesini işlemek için sgen.exe'nin v2 sürümünü sorduğunuz için bombalar.

Projenizin sgen.exe'yi nasıl başlattığını kontrol edin. Yapı sonrası bir etkinlikse, sgen.exe yolunu değiştirmeniz gerekecektir. Doğru otomatik elde etmek için bir makro veya ortam değişkeni göremiyorum, bir gözetim.

8

SGEN gelen çıktının ikinci çizgi gibi görünüyor önemlidir:

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

Ben C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\sgen.exe çalışmak gibi görünüyor SGEN başka bir sürümünü buldum. bunu çalıştırdığınızda bu çıkışı:

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

hem Windows 7 SDK'DE neden emin değilim ...