もさぷい

ゲーム、3D関連技術ついて

Visual Studio 2010(C#)を使用する上での注意点

■プラットフォーム(x86, x64, AnyCPU)の設定について

 

visualstudioのプロパティ画面でPlatformTargetをx86に設定しても、「~~.csprojファイル」内では、AnyCPUのままの場合がある。この状態だと、実行時に「~~間違ったフォーマットのプログラムを読み込もうとしました。~~」の例外が発生する。これを解決するためには、「~~.csprojファイル」を直接編集する必要がある。

 

タグ内のの指定をx86に修正する。

 

■プラットフォームの統一について

作成するアプリケーション、リンクするライブラリについて、プラットフォーム(x86, x64)は全て統一されている必要がある。

統一されていない場合、実行時に「間違ったフォーマットのプログラムを読み込もうとしました。 」旨の例外が発生する。

C#だけで、ライブラリを作る場合は、AnyCpuを使用しておけば、無難であるが、C++/CLIのライブラリ(dll)をリンクする場合、リンクするライブラリのプラットフォーム(x86, x64)を考慮して、統一する必要がある(SlimDXを使う場合とか)。

 

参考:

『間違ったフォーマットのプログラムを読み込もうとしました。 - のねの日記 - human brain programing』

http://d.hatena.ne.jp/none53/20100707/1278470575

『32 / 64bit 環境の取り扱い - SlimDX と C# で学ぶ DirectX

http://mainori-se.sakura.ne.jp/slimdx/?page=32+%2F+64bit+%B4%C4%B6%AD%A4%CE%BC%E8%A4%EA%B0%B7%A4%A4

 

.NET Frameworkの統一について

リンクするライブラリ、アプリケーションの.NET Frameworkのバージョンが違うと「混合モード アセンブリ~~」の例外が発生する。そのため、.NET Frameworkのバージョンを統一するようにした方が良い。

もしくは、以下の様にApp.configを編集すること。

 

参考:

『NKY-TECH. ソフトウェア開発部: .NET Framework 4.0で混合モードのアセンブリを読み込めない旨のエラー』

http://nky-tech-sdt.blogspot.jp/2010/02/net-framework-40.html

『オンラインマニュアル : 混合モード アセンブリは・・・(Visual Studio 2010)』

http://blog.livedoor.jp/mochi888/archives/51605437.html