/CLRUNMANAGEDCODECHECK
(SuppressUnmanagedCodeSecurityAttribute の削除)
/CLRUNMANAGEDCODECHECK
は、リンカーがマネージド コードからネイティブ DLL へのリンカー生成PInvoke
呼び出しにSuppressUnmanagedCodeSecurityAttributeを適用しないことを指定します。
構文
/CLRUNMANAGEDCODECHECK
/CLRUNMANAGEDCODECHECK:NO
解説
既定では、リンカーによって生成されたPInvoke
呼び出しにSuppressUnmanagedCodeSecurityAttribute
属性が適用されます。 /CLRUNMANAGEDCODECHECK
が有効になると、SuppressUnmanagedCodeSecurityAttribute
は削除されます。 リンカーによって生成されたPInvoke
呼び出しにSuppressUnmanagedCodeSecurityAttribute
属性を明示的に適用するには、/CLRUNMANAGEDCODECHECK:NO
を使用できます。
リンカーは、 /clr
または /clr:pure
を使用してコンパイルされるオブジェクトにのみ属性を追加します。 ただし、 /clr:pure
コンパイラ オプションは Visual Studio 2015 では非推奨となり、Visual Studio 2017 以降ではサポートされていません。
PInvoke
呼び出しは、リンカーがマネージド呼び出し元からの参照を満たすマネージド シンボルを見つけられないが、その参照を満たすネイティブ シンボルを見つけることができる場合に、リンカーによって生成されます。 PInvoke
の詳細については、「マネージド コードからのネイティブ関数の呼び出し」を参照してください。
コードでAllowPartiallyTrustedCallersAttributeを使用する場合は、SuppressUnmanagedCodeSecurity
属性を削除するように/CLRUNMANAGEDCODECHECK
を明示的に設定する必要があります。 イメージに SuppressUnmanagedCodeSecurity
属性と AllowPartiallyTrustedCallers
属性の両方が含まれている場合、これは潜在的なセキュリティの脆弱性です。
SuppressUnmanagedCodeSecurityAttribute
の使用による影響の詳細については、「アンマネージ コードの安全なコーディング ガイドライン」を参照してください。
Visual Studio 開発環境でこのリンカー オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳しくは、「コンパイラとビルドのプロパティを設定する」をご覧ください。
[構成プロパティ]>[リンカー]>[詳細] プロパティ ページを選択します。
[CLR アンマネージド コード チェック] プロパティを変更します。
このリンカーをコードから設定するには
- 以下を参照してください。CLRUnmanagedCodeCheck