Share via


/CLRUNMANAGEDCODECHECK (Remove SuppressUnmanagedCodeSecurityAttribute)

/CLRUNMANAGEDCODECHECK 指定連結器不適用於 SuppressUnmanagedCodeSecurityAttribute 從 Managed 程式碼到原生 DLL 的連結器產生的 PInvoke 呼叫。

語法

/CLRUNMANAGEDCODECHECK
/CLRUNMANAGEDCODECHECK:NO

備註

根據預設,連結器會將 SuppressUnmanagedCodeSecurityAttribute 屬性套用至連結器產生的 PInvoke 呼叫。 當 作用中時 /CLRUNMANAGEDCODECHECKSuppressUnmanagedCodeSecurityAttribute 會移除 。 若要將 屬性明確套用 SuppressUnmanagedCodeSecurityAttribute 至連結器產生的 PInvoke 呼叫,您可以使用 /CLRUNMANAGEDCODECHECK:NO

連結器只會將 屬性新增至使用 /clr/clr:pure 編譯的物件。 不過, /clr:pure 編譯器選項在 Visual Studio 2015 中已被取代,且 Visual Studio 2017 和更新版本中不支援。

PInvoke當連結器找不到 Managed 符號以滿足 Managed 呼叫端的參考時,連結器會產生呼叫,但可以找到原生符號來滿足該參考。 如需 PInvoke 的詳細資訊,請參閱從受控程式碼呼叫原生函式

如果您在 AllowPartiallyTrustedCallersAttribute 程式碼中使用 ,則應該明確設定 /CLRUNMANAGEDCODECHECK 為移除 SuppressUnmanagedCodeSecurity 屬性。 如果映射同時包含 SuppressUnmanagedCodeSecurityAllowPartiallyTrustedCallers 屬性,則這是潛在的安全性弱點。

如需使用 SuppressUnmanagedCodeSecurityAttribute 之含意的詳細資訊,請參閱 Unmanaged 程式碼 的安全編碼指導方針。

在 Visual Studio 開發環境中設定這個連結器選項

  1. 開啟專案的 [ 屬性頁 ] 對話方塊。 如需詳細資訊,請參閱 設定編譯器和建置屬性

  2. 選取 [組態屬性 > ] 連結器 > [ 進階 ] 屬性頁。

  3. 修改 [CLR 非受控碼檢查] 屬性。

若要以程式設計方式設定這個連結器選項

  1. 請參閱 CLRUnmanagedCodeCheck

另請參閱

MSVC 連結器參考
MSVC 連結器選項