Visual C++ アプリケーションウィザードでは、確認可能なプロジェクトは作成されません。
重要
確認可能なプロジェクトの /clr:pure および /clr:safe の作成は、Visual Studio 2015 で非推奨になり、Visual Studio 2017 ではサポートされていません。 確認可能なコードが必要な場合は、コードを C# に変換することをお勧めします。
ただし、/clr:pure と /clr:safe をサポートする古いバージョンの Microsoft C++ コンパイラ ツールセットを使っている場合は、プロジェクトを確認可能に変換できます。 このトピックでは、プロジェクトのプロパティを設定し、プロジェクトのソース ファイルを変更して、Visual Studio C++ プロジェクトを変換し、確認可能なアプリケーションを生成する方法について説明します。
コンパイラとリンカーの設定
既定の .NET プロジェクトでは、/clr コンパイラ フラグが使われ、x86 ハードウェアをターゲットにするようにリンカーが構成されます。 確認可能なコードの場合は、/clr:safe フラグを使う必要があり、ネイティブ マシン命令ではなく MSIL を生成するようにリンカーに指示する必要があります。
コンパイラとリンカーの設定を変更するには
プロジェクトのプロパティ ページを表示します。 詳しくは、「コンパイラとビルドのプロパティを設定する」をご覧ください。
[全般] ページの [構成プロパティ] ノードで、[共通言語ランタイム サポート] プロパティを [安全な MSIL 共通言語ランタイム サポート (/clr:safe)] に設定します。
[詳細設定] ページの [リンカー] ノードで、[CLR イメージ タイプ] プロパティを [安全 IL イメージの強制 (/CLRIMAGETYPE:SAFE)] に設定します。
ネイティブ データ型の削除
ネイティブ データ型は、実際には使われていない場合でも確認できないため、ネイティブ型を含むすべてのヘッダー ファイルを削除する必要があります。
注
次の手順は、Windows フォーム アプリケーション (.NET) とコンソール アプリケーション (.NET) のプロジェクトに適用されます。
ネイティブ データ型への参照を削除するには
- Stdafx.h ファイル内のすべてをコメントアウトします。
エントリ ポイントの構成
確認可能なアプリケーションでは C ランタイム ライブラリ (CRT) を使用できないため、標準のエントリ ポイントとして main 関数を呼び出すために CRT に依存することはできません。 これは、最初に呼び出される関数の名前を、リンカーに明示的に指定する必要があることを意味します。 (この場合、CRT 以外のエントリ ポイントであることを示すために main() または _tmain() の代わりに Main() が使用されますが、エントリ ポイントを明示的に指定する必要があるため、この名前は任意です。)
注
次の手順は、コンソール アプリケーション (.NET) プロジェクトに適用されます。
エントリ ポイントを構成するには
プロジェクトのメイン .cpp ファイルで _tmain() を Main() に変更します。
プロジェクトのプロパティ ページを表示します。 詳しくは、「コンパイラとビルドのプロパティを設定する」をご覧ください。
[詳細設定] ページの [リンカー] ノードで、
Mainプロパティの値として「」と入力します。