2012-04-20 6 views
2

私はVS2008VS2010と同時に異なるプロジェクトで作業しています。最近、私は、エンティティのプロジェクトのためのシリアル化アセンブリを生成しようとしましたが、これは以下のエラーをスローするのVisual Studio 2010を経由して同じことを生成することができませんでした:不正な形式のアセンブリをロードしようとしました

An attempt was made to load an assembly with an incorrect format: X:\Dev\Proj\X.Entities\bin\Debug\X.entities.dll. 

これは私がエンティティのためのセットアップを持っているポストビルドイベントでありますプロジェクト

"$(FrameworkSDKDir)\Bin\sgen" /nologo /force $(TargetFileName) 
copy "$(TargetDir)X.Entities.Serializer.dll" "$(SolutionDir)\X.Site\Bin" 

は私がVS 2010のコマンドラインからシリアライザdllファイルを生成することができますよ。 VS2008プロジェクトの場合。ラインは正常に動作しています。しかし、このエラーはVS2010プロジェクトにあります!

VS2010には別のFrameworkSDKDir変数がありますか?そうでない場合は、VS2010とVS2008の両方のプロジェクトで動作するように変更するにはどうすればよいですか?

私はwin 2008 Server 32ビットOS、IIS 7を使用して開発しています。

+0

VS2010でsgen.exeの4つのバージョンがあります。 32ビットと64ビットの組み合わせとCLR 2とCLR 4. CLR 2を対象とするプロジェクトで.NET 4のバージョンを取得しようとしています。 –

+1

@HansPassant:すべてのプロジェクトが設定されています4.0のフレームワークになってしまったので、CLR 2をロードしようとしているとは思えません。それを指していても、どうすれば変更できますか? – Kay

+0

まず、問題を特定し、それを修正することを考える必要があります。 ildasm.exeを使用して前提条件を確認し、マニフェストに期待されるCLRバージョンを表示します。 –

答えて

3

あなたが指しているsgenは、CLR 2.0用です。理想的には、C:¥Program Files¥Microsoft SDKs¥Windows¥v7.0A¥binにあります。

「C:¥Program Files¥Microsoft SDKs¥Windows¥v7.0A¥bin¥NETFX 4.0 Tools」の下に4.0のバージョンのsgenがあり、問題を解決しています。

あなたのポストビルドコマンドは次のように起動する必要があります:

"$(FrameworkSDKDir)\bin\NETFX 4.0 Tools\sgen" 
関連する問題