2012/02/07

ビルド後の .NET アセンブリを 32bit で動作させる方法


.NET アプリのプラットフォームターゲットを「ANY CPU」でビルドすると、32bit 環境では 32bit で、64bit 環境では 64bit で動作します。

通常はこれで問題ないのですが、「ANY CPU」でビルドした exe ファイルが 32bit の外部 DLL を参照していた場合、64bit 環境でこのアプリを動作させると 64bit と 32bit のアセンブリが共存することになりエラーとなります。この場合は、exe ファイルを 32bit で動作させる必要があります。

Visual Studio Professional Edition 以上では、プラットフォームターゲットを「x86」にしてビルドするだけでよいのですが、Visual Studio Express Edition にはこの機能はないため、SDK にある「CorFlags」を利用します。

「CorFlags」を利用すれば、「ANY CPU」でビルドした .NET のアセンブリを、後から 32bit で動作するように変更できます。

その方法ですが、Visual Studio Express Edition をインストールした場合は SDKがインストールされていないため、以下から SDK をダウンロードしてインストールする必要があります(最新版を利用)。

Visual Studio Professional Edition 以上の場合は、最初から SDK がインストールされているためこの作業は必要ありません。

SDK のインストールが済んだらコマンドプロンプトを起動し、「CorFlags」が格納されているディレクトリに移動します。

cd "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin"

「CorFlags」の文法は簡単で、以下のように実行することでターゲットのアセンブリが 32bit で動作するようになります。

CorFlags /32BIT+ ターゲットアセンブリ

「CorFlags」は、64bit での利用が想定されていないアプリを 64bit 環境で動作させることもできるのでこの方法は覚えておくと便利かと思います。


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

はじめましてですヽ(゚◇゚ )ノブログ楽しくて結構チェックしてるんですよ(*゜▽゜ノノ゛☆実は読者なんです(笑)普段はあんまりコメントとかしないほうなんだけど(照)見てるだけなのもアレかなって思ってコメントしてみました(笑)仲良くしてもらえたら嬉しいです(-^□^-)一応わたしのメアド載せておくので良かったらお暇なときにでもメールくださいo(〃^▽^〃)oココログやってないからメールしてもらえたら嬉しいです( ´艸`)まってるねえヽ(゚◇゚ )ノ

コメントを書く



プロフィール