を変更する<TargetFrameworkVersion>
だけでは不十分です。ビルド ツールは、マシンにインストールされている .NET 4 バージョンを引き続き使用します。生成されたアセンブリで ildasm.exe を実行すると、何かを確認できます。マニフェストをダブルクリックして表示します。
// Metadata version: v4.0.30319
...
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.hash = (DD 9E C9 8D BF 2A 2D C2 AA 2D C3 8B 51 CD 4C A6 // .....*-..-..Q.L.
15 F0 22 F6 ) // ..".
.ver 2:0:0:0
}
...
.assembly extern mscorlib as mscorlib_4
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.hash = (47 6E C0 E3 BA CD CE B1 9A 4D 68 BE 29 75 61 6F // Gn.......Mh.)uao
BE 04 C6 BA )
.ver 4:0:0:0
}
mscorlib.dll の両方のバージョンが依存関係になったことに注意してください。発生した問題。
リンクしたフィードバック記事では、ツールセットを「v90」に変更することを推奨していました。ただし、VS2008 がインストールされていても、これは私のマシンでは機能しません。オプションがコンボボックスのドロップダウンに表示されず、強制すると次のビルド エラーが発生します。
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(43,5): エラー MSB8020: Visual Studio 2008 のビルド ツール (プラットフォーム ツールセット = 'v90 ') 見つからない。v90 ビルド ツールを使用してビルドするには、[プロジェクト] メニューをクリックするか、ソリューションを右クリックして [VC++ プロジェクトの更新...] を選択します。Visual Studio 2008 ビルド ツールを使用してビルドするには、Visual Studio 2008 をインストールします。
エラーメッセージで与えられたアドバイスに従って、私はこれを得ます:
------ Update VC++ projects started -------
Updating project 'ConsoleApplication74'...
Configuration 'Debug|Win32': changing Platform Toolset to 'v110' (was 'v90').
Configuration 'Release|Win32': no update required. Platform Toolset is 'v110'.
TargetFrameworkVersion = v4.5 (was v2.0)
振り出しに戻って。VS2012 を使用した C++/CLI プロジェクトで .NET 2.0 をターゲットにすることは、失われた原因だと思います。