純和可驗證的程式碼 (C++/CLI)
針對 .NET 程式設計,Visual Studio 2017 中的 Visual C++ 支援使用 /clr (Common Language Runtime Compilation) 編譯器選項來建立混合元件。 Visual Studio 2015 中已淘汰 /clr:pure 和 clr:safe 選項,Visual Studio 2017 不支援。 如果您的程式碼必須安全或可驗證,建議您將其移植到 C#。
混合 (/clr)
混合元件(以 /clr 編譯),同時包含 Unmanaged 和 Managed 元件,讓它們能夠使用 .NET 功能,但仍包含機器碼。 這可讓應用程式和元件更新為使用 .NET 功能,而不需要重寫整個專案。 使用 Visual C++ 以這種方式混合 Managed 和原生程式碼,稱為 C++ Interop。 如需詳細資訊,請參閱 混合式(原生和 Managed)元件 和 原生和 .NET 互通性 。
透過 P/Invoke 從 Managed 元件到原生 DLL 的呼叫將會編譯,但可能會根據安全性設定在執行時間失敗。
有一個程式碼撰寫案例會傳遞編譯器,但會導致無法驗證的元件:使用範圍解析運算子透過物件實例呼叫虛擬函式。 例如: MyObj -> A::VirtualFunction();
。