vs2010でC ++ / CLIプロジェクトを4.0以外のフレームワークに変更する


153

プロジェクトをVisual Studio 2010プロジェクト形式にアップグレードしたので、私のC ++ / CLIプロジェクトは.net Framework 4.0をターゲットにしています。

フレームワークのバージョンをC#プロジェクトから別のバージョンに切り替えるのは簡単ですが、C ++ / CLIプロジェクトでこれを行う方法を知る手がかりがなく、プロジェクトのプロパティページにこの設定が表示されません。

回答:


190

これは、Framework and ReferencesダイアログでF1を押すと表示されます。

新しいプロジェクトのデフォルトでは、ターゲットフレームワークは.NET Framework 4に設定されています。IDEはターゲットフレームワークの変更をサポートしていませんが、手動で変更できます。プロジェクトファイル(.vcxproj)では、デフォルトのターゲットフレームワークはv4.0プロパティ要素で表されます。ターゲットフレームワークを変更するには、プロジェクトをアンロードし、テキストエディターを使用してプロジェクトファイルを開き、プロパティ要素の値をv4.0からサーバーにインストールされている別のバージョンに変更します。たとえば、.NET Framework v3.5を表すv3.5を指定する場合、Visual Studio 2008 SP1をインストールする必要があります。ファイルを保存して閉じ、プロジェクトをリロードし、ターゲットフレームワークがプロパティページに表示されることを確認します。*

これは、変換されたプロジェクトではそれほど正確ではありません<TargetFrameworkVersion>。自分で要素を追加する必要があります。「Globals」というラベルの付いたPropertyGroupに配置します。

  <PropertyGroup Label="Globals">
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <others...>
  </PropertyGroup>

ストーリーは、VS2012以降を使用する場合は異なります。VS2012の最初のバージョンは、[全般]プロパティページでプラットフォームツールセットの設定を取得しました。次に、「v90」を選択して、3.5をターゲットとする適切なビルドを取得する必要があります。しかし、それは不器用です。選択を利用できるようにするには、マシンにVSのすべての中間バージョンをインストールする必要があります。

VS2008をインストールする必要がある理由は、それ自体で説明が必要です。中心的な問題は、Cランタイムライブラリ(msvcrt100.dll以降)に、マネージコードの実行をサポートする.NETコードが含まれていることです。重要な詳細は、C ++がC ++ / CLIコードを使用するプログラムで正しく初期化されるようにするモジュール初期化子です。このコードは常に.NET 4をターゲットにしており、msvcrt100.dll(およびそれ以降)にハードベイクされているため、v4.0.30319ランタイムへの絶対的な依存関係があります。古いCランタイムであるmsvcrt90.dllを使用する場合、純粋なv2.0.50727の依存関係しか持てません。VS2008のコンパイラの#includeファイルを使用する場合にのみ、msvcrt90.dll依存関係があることを確認できます。

すぐに.NET 4に移行する必要があるという冷酷な事実、そうしないと、このようなビルドの問題に苦しむことになります。実用的な障害はほとんどなく、.NET 4は、想像するすべてのターゲットで無料で広く利用できます。上位のランタイムバージョンへの移行に関連するFUDを克服することは、通常、実際の問題にすぎません。恐れや疑いの理由はありません、それは安定しています。


8
これらの手順を実行しましたが、「MSB8009:.NET Framework 2.0 / 3.0 / 3.5がv90プラットフォームツールセットを対象としています。VisualStudio 2008がマシンにインストールされていることを確認してください」というエラーが表示されます。VS2008を持っていません。
codymanix、2010年

8
私の答えからの引用:「Visual Studio 2008 SP1をインストールする必要があります」。 必要なビルドツールがありません。
ハンスパッサント2010年

2
.suoファイルを削除してソリューションを再度開く必要がある場合もあります。私の場合のように。
alehro

Visual Studio 2008 Express(無料)をインストールするだけで機能します。プラットフォームツールセットをv90に変更すると、実際に大量のエラーが発生しました。v100に戻ると、すべて修正されました!
simon.d 2011

4
Visual Studio 2010を使用してC ++ / CLIとC#の混合プロジェクトを使用する.NET Framework 4.0プログラムを作成する場合、.NET Framework 4.5(または.NET Framework 4.5に付属するVisual Studio 2013)をインストールすると、C ++ / CLIプロジェクトが作成されます。以前の4.0ではなく、4.5に対してビルドされるVS 2010。C ++ / CLIプロジェクトを参照する同じソリューションで4.0に対してビルドされたC#プロジェクトがある場合、これは壊れます。C ++ / CLIプロジェクトのvcxprojファイルに<TargetFrameworkVersion> v4.0 </ TargetFrameworkVersion>を挿入すると、この問題が解決します。\ o /
Daniel Albuschat 2014年

18

はい、マネージC ++プロジェクトでもターゲットを変更できます。

C ++ / CLIのターゲット.NET Frameworkの変更(VS 2010)C ++ / CLIプロジェクトの.NET Frameworkのバージョンを変更するには(VS 2010)

ソリューションエクスプローラでプロジェクトを右クリックし、ソリューションエクスプローラで、無負荷のプロジェクトをクリックし、[編集]を選択しアンロードプロジェクトを右をクリックし <projectname>.vcxprojてプロジェクトのXMLファイルをノードを見つけ<PropertyGroup Label="Globals">、そのノードにノードを見つけ<TargetFrameworkVersion>(ノードは、それを追加し、見つからない場合)は、ノードの定義の内部テキストターゲットフレームワーク。v2.0、v3.0、v3.5、v4.0のいずれかです。vcxprojファイルを保存して閉じます。ソリューションエクスプローラーでアンロードされたプロジェクトを右クリックし、[プロジェクトの再読み込みの例]をクリックします。 <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

注:これらの手順は新しい形式のC ++プロジェクトファイルを使用するため、Visual Studio 2010にのみ適用されます。

MSDNのソース:方法:ターゲットの.NET Frameworkを変更する


5

匿名ユーザー:

(私は新しいユーザーであり、これに応答できないため、編集して、誰でもこれを自由に送信してください。)ツールセットをv100に変更すると、実際にはVS2010が.NET 4.0をターゲットにします。プロジェクトのプロパティ。VS2010は、これに関する警告を実際に吐き出すはずです。現在、あなたは.NET 3.5をターゲットにすることができますが、それはできません。


これは、マルチターゲティングではV2.0、3.0、3.5、4.0のみをターゲティングできるためです。1.xバージョンの.Netは、この方法ではターゲットにできません
Jeroen Landheer

0

VS 2010では、ツールセットがインストールされている場合、プロジェクトのプロパティ->構成プロパティ->全般に移動し、プラットフォームツールセットをv90からv100に変更します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.