現在オフラインです。再接続するためにインターネットの接続を待っています

.NET Framework 4.5 のインストールにより Visual Studio 2010 が起動するビルドツールが 64 bit 版に変化する場合がある

現象
.NET Framework 4.5 をインストールすることで、Visual Studio 2010 が起動するコマンド・ツール ( msbuild.exe, lc.exe など) が 32 bit 版から 64 bit 版に変更される場合があります。


64 bit版の Windows に Visual Studio 2010 をインストールした前提で以下のシナリオを考えます。
・ .NET Framework 4.5 をインストールします。
・ x64 をターゲットとしたプロジェクトをビルドします。
このとき、Visual Studio 2010 の IDE から起動されるコマンド・ツール (msbuild.exe, lc.exe など) は 32 bit 版ではなく、64 bit版になります。
.NET 4.0 がインストールしてある場合には、同じ条件下において32 bit 版のコマンド・ツールが起動されます。

原因
.NET Framework 4.5 では、msbuid.exe が 32 bit, 64 bit 版にかかわらず、そこから起動できるコマンド・ツールのビットを選択できるようになりました。
また、x64 ターゲットのプロジェクトに対して x64 ツールが利用できる場合には、それまでの 32 bit 版のツールを利用するのではなく 64 bit版の x64ツールでビルドを行うようにしました。 これは意図した変更であり、同じビットのツールを利用するほうがより適切であるという仮定によるものです。
解決方法
一般に 32 bit, 64 bit いずれのビルドツールを用いた場合においても生成される結果に影響はないため、上記の変更を意識する必要はありません。

上記の変更により影響を受けるプロジェクトがある場合 (ビルドするプロジェクトのターゲットプラットフォームは x64 であるが、32 bit 版 のビルドツールを起動する必要がある場合など) には、環境変数またはプロジェクトファイル (.vbproj または .csproj) にて、「DisableOutOfProcTaskHost」の値に「1」に設定します。

DisableOutOfProcTaskHost は 32 bit のビルドツールである Visual Studio の IDE である devenv.exe から 64 bit の ビルドツール msbuild.exe を起動するという機能を抑止します。このことにより、.NET Framework 4.0 がインストールされている環境と同様に、32 bit 版のツールを起動することが可能です。

プロジェクト毎に設定を行う場合は、プロジェクトファイルの <PropertyGroup> 要素に <DisableOutOfProcTaskHost>1</DisableOutOfProcTaskHost> を追加します。

全てのプロジェクトに対して設定を行う場合は、環境変数に DisableOutOfProcTaskHost を追加し、「1」を設定します。
環境変数は、[コントロールパネル] - [システム] - [詳細設定] - [環境変数]から設定します。ユーザの環境変数の場合にはログオフ・ログオン後に、システムの環境変数に設定する場合には、コンピュータの再起動後から有効になります。


回避策
状況
詳細
関連情報
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2783939 - 最終更新日: 12/03/2012 06:34:00 - リビジョン: 1.0

Microsoft .NET Framework 4.5, Microsoft Visual Studio 2010 Premium with MSDN, Microsoft Visual Studio 2010 Professional, Microsoft Visual Studio 2010 Ultimate

  • KB2783939
フィードバック