6

最近、VS2008/.NET 3.5 SP1 プロジェクトを VS2010 および .NET 4 にアップグレードしました。SGEN を呼び出して XmlSerializers アセンブリを生成するビルド後のイベントがあります。

実行しようとするたびに、次のエラーが発生します。

"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 を実行しても同じエラーが発生しますが、何が問題なのかわかりません。何か案は?

4

2 に答える 2

8

SGEN からの出力の 2 行目が重要なようです。

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

で動作すると思われる SGEN の別のバージョンを見つけましたC:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\sgen.exe。実行すると次のように出力されます。

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

なぜ両方が Windows 7 SDK に含まれているのかわかりません...

于 2010-04-30T18:35:53.867 に答える
2

はい、2 つのバージョンの sgen.exe が利用可能です。1 つは CLR v2 アセンブリ用、もう 1 つは CLR v4 アセンブリ用です。sgen.exe の v2 バージョンに v4 アセンブリを処理するように要求するため、爆撃します。

プロジェクトがどのように sgen.exe を開始するかを確認します。ビルド後のイベントの場合は、sgen.exe へのパスを微調整する必要があります。マクロや環境変数が自動的に正しくなるようには見えませんが、見落としがあります。

于 2010-04-30T19:12:23.187 に答える