[解決済み] vs2010でC++/CLIプロジェクトを4.0とは別のフレームワークに変更する。
質問
Visual Studio 2010のプロジェクト形式にアップグレードしたため、私のC++/CLIプロジェクトは.net framework 4.0をターゲットにしています。
C#プロジェクトでフレームワークのバージョンを別のバージョンに切り替えるのは簡単ですが、C++/CLIプロジェクトでこれを行う方法がわかりません。プロジェクトのプロパティページにこのための設定がありません。
解決方法は?
フレームワークとリファレンス]ダイアログでF1キーを押したときに表示されます。
新しいプロジェクトのデフォルトでは、ターゲットフレームワークは.NET Framework 4に設定されています。IDE はターゲットフレームワークの変更をサポートしていませんが、手動で変更することは可能です。 プロジェクト ファイル (.vcxproj) では、デフォルトのターゲット フレームワークは v4.0 のプロパティ要素で表されます。ターゲットとなるフレームワークを変更するには、プロジェクトをアンロードし、テキストエディタでプロジェクトファイルを開き、プロパティ要素の値をv4.0からサーバーにインストールされている別のバージョンに変更します。例えば、v3.5を指定した場合、これは.NET Framework v3.5を表します。 Visual Studio 2008 SP1 がインストールされている必要があります。 . ファイルを保存して閉じ、プロジェクトを再読み込みして、対象のフレームワークがプロパティ・ページに表示されることを確認します*。
変換されたプロジェクトでは、これはあまり正確ではありません。
<TargetFrameworkVersion>
要素を使用します。 それをPropertyGroupのquot;Globals"というラベルのついたところに置いてください。
<PropertyGroup Label="Globals">
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<others...>
</PropertyGroup>
VS2012 以降は、General プロパティページに Platform Toolset 設定が追加された最初のバージョンの VS で、話が異なります。 3.5をターゲットとする適切なビルドを取得するには、"v90"を選択する必要があります。 しかし、これは不器用なことで、この選択を可能にするには、マシンにVSのすべての中間バージョンをインストールする必要があります。
なぜVS2008のインストールが必要なのかは、それ自体に説明が必要です。 核心的な問題は、Cランタイムライブラリ(msvcrt100.dll以上)にマネージドコードの実行をサポートするための.NETコードが含まれていることです。 重要なのは、C++/CLIコードを使用するプログラムでCRTが正しく初期化されるようにするためのモジュールイニシャライザーです。 このコードは常に.NET 4をターゲットとしており、msvcrt100.dll(およびそれ以降)にハードベイクされているため、v4.0.30319ランタイムに常に強固な依存関係を持ちます。 古いCランタイムであるmsvcrt90.dllを使用する場合、純粋なv2.0.50727への依存しか持ちえません。 msvcrt90.dllの依存関係があることを確認できるのは、VS2008のコンパイラーの#includeファイルを使用するときだけです。
すぐに.NET 4に移行することがかなり必要であるという冷厳な事実、そうしなければこのようなビルドの問題で苦労することになるでしょう。 .NET 4は、あなたが想像するすべてのターゲット上で無料で広く利用可能であるため、現実的な障害はほとんどありません。 より高いランタイムバージョンに移行することに関連するFUDを克服することは、一般的に本当の問題でしかありません。 恐怖や疑念を抱く理由はなく、安定しています。
関連
-
[解決済み] [Solved] ファイル *.mdf をデータベースとしてアタッチできない
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み] Visual Studioでディレクトリ構造全体を「既存の項目を追加」するにはどうすればよいですか?
-
[解決済み] MemoryStreamから文字列を取得する方法は?
-
[解決済み] .NET 4.0 プロジェクトで .NET 2.0 混合モード アセンブリを参照するために必要な「追加設定」は何ですか?
-
[解決済み] キーファイル 'blah.pfx' をインポートできない - エラー 'The keyfile may be password protected'.
-
[解決済み] xsdから.NET 4.0クラスを生成する方法は?
-
[解決済み】Visual Studio 2010でプロジェクトが古くなったと常に認識されるが、何も変わっていない
-
[解決済み】C# 6.0は.NET 4.0に対応しますか?
-
[解決済み] Visual Studio 2010による.NET Framework 4.5のターゲット化
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】WCFとは何か、何ができるのか?
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] データテーブルの並べ替え
-
[解決済み] C++/CLIにおけるキャレット('^')の意味は?
-
[解決済み] スマートクライアント・ソフトウェアファクトリーの体験談
-
[解決済み] 24:00:00 を超える値を持つ .Net Timespan を格納するための正しい SQL タイプは何ですか?
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] app.configが作成されるタイミングとapp.exe.configが作成されるタイミング、その違いとは?
-
[解決済み] WCF - メッセージサイズのクォータを増加させる方法
-
[解決済み] dllの.NET Frameworkバージョンの決定