如何:移除 CRT 程式庫 DLL 的相依性以建立部分信任的應用程式
本主題討論如何藉由移除對 msvcm90.dll 的相依性,使用 Visual C++ 建立部分信任的 Common Language Runtime 應用程式。
使用 /clr 建置的 Visual C++ 應用程式將相依於msvcm90.dll,這是 C-Runtime 連結庫的一部分。 當您想要將應用程式用於部分信任環境中時,CLR 會在 DLL 上強制執行特定程式代碼存取安全性規則。 因此,您必須移除此相依性,因為msvcm90.dll包含機器碼,且無法對它強制執行程式代碼存取安全策略。
如果您的應用程式未使用 C-Runtime 連結庫的任何功能,而且您想要從程式代碼中移除此連結庫的相依性,則必須使用 /NODEFAULTLIB:msvcmrt.lib 連結器選項,並使用 ptrustm.lib 或 ptrustmd.lib 連結。 這些連結庫包含初始化和未初始化應用程式的物件檔、初始化程式代碼所使用的例外狀況類別,以及 Managed 例外狀況處理程式代碼。 鏈接這些連結庫中的其中一個連結將會移除任何相依性msvcm90.dll。
注意
使用 ptrust 連結庫的應用程式,元件未初始化的順序可能會有所不同。 對於一般應用程式,元件通常會以載入的反向順序卸除,但這並不保證。 對於部分信任應用程式,元件通常會以載入的相同順序卸除。 這也不保證。
建立部分信任的混合式 (/clr) 應用程式
若要移除msvcm90.dll的相依性,您必須使用 /NODEFAULTLIB:msvcmrt.lib 連結器選項,指定連結器不要包含此連結庫。 如需如何使用 Visual Studio 開發環境或以程式設計方式執行這項操作的資訊,請參閱 /NODEFAULTLIB (忽略連結庫)。
將其中一個 ptrustm 連結庫新增至連結器輸入相依性。 如果您要以發行模式建置應用程式,請使用 ptrustm.lib。 針對偵錯模式,請使用 ptrustmd.lib。 如需如何使用 Visual Studio 開發環境或以程式設計方式執行這項操作的資訊,請參閱 。Lib 檔案做為連結器輸入。