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ココログやってないからメールしてもらえたら嬉しいです( ´艸`)まってるねえヽ(゚◇゚ )ノ

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。


    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから