共用方式為


#using 指示詞 (C++/CLI)

將元數據匯入使用 /clr 編譯的程式。

語法

#using檔案 [as_friend]

參數

file
Microsoft中繼語言 (MSIL) .dll.exe.netmodule.obj 檔案。 例如,

#using <MyComponent.dll>

as_friend
指定檔案中的所有類型都可以存取。 如需詳細資訊,請參閱 Friend 元件(C++)。

備註

file 可以是您為其受控數據和 Managed 建構匯入的Microsoft中繼語言 (MSIL) 檔案。 如果 DLL 包含元件指令清單,則會匯入指令清單中參考的所有 DLL。 您要建置的元件會將元數據中的檔案列為元件參考。

也許 檔案 不包含元件(檔案 是模組),而且您不打算在目前 (元件) 應用程式中使用模組的類型資訊。 您可以使用 /ASSEMBLYMODULE,指出模組是元件的一部分。 任何參考該組件的應用程式就可以使用模組的類型。

另一種使用 #using 方式是 /FU 編譯程序選項。

.exe傳遞至 #using 的元件應該使用其中一個 .NET Visual Studio 編譯程式來編譯 (例如 Visual Basic 或 Visual C# )。 嘗試從以 /clr 編譯的 .exe 組件匯入中繼資料,可能會產生檔案載入例外狀況。

注意

#using 參考的元件可以使用編譯時期匯入的不同檔案版本來執行,導致用戶端應用程式產生非預期的結果。

為了讓編譯程式能夠辨識元件中的類型(而非模組),必須強制解析類型。 例如,您可以定義 型別的實例來強制它。 還有其他方法可以解析編譯程式元件中的類型名稱。 例如,如果您繼承自元件中的類型,編譯程式就會知道類型名稱。

從使用 __declspec(thread)的原始碼匯入元數據時,線程語意不會保存在元數據中。 例如,以 __declspec(thread)宣告的變數,在針對 .NET Framework Common Language Runtime 建置的程式中編譯,然後透過 #using匯入的 變數不會有 __declspec(thread) 變數的語意。

所參考 #using 檔案中的所有匯入類型(同時受管理及原生)都可供使用,但編譯程式會將原生類型視為宣告,而不是定義。

/clr 編譯時,mscorlib.dll 會自動參考。

當編譯程式解析傳遞至 #using的檔名時,LIBPATH 環境變數會指定要搜尋的目錄。

編譯程式會沿著下列路徑搜尋參考:

  • 語句中指定的 #using 路徑。

  • 目前目錄。

  • .NET Framework 系統目錄。

  • 使用編譯程式選項新增的 /AI 目錄。

  • LIBPATH 環境變數的目錄。

範例

您可以建置元件,參考本身參考第三個元件的第二個元件。 如果您明確使用其中一個類型,您只需要從第一個元件明確參考第三個元件。

原始程式檔 using_assembly_A.cpp

// using_assembly_A.cpp
// compile with: /clr /LD
public ref class A {};

原始程式檔 using_assembly_B.cpp

// using_assembly_B.cpp
// compile with: /clr /LD
#using "using_assembly_A.dll"
public ref class B {
public:
   void Test(A a) {}
   void Test() {}
};

在下列範例中,編譯程式不會報告有關參考using_assembly_A.dll的錯誤,因為程式不會使用using_assembly_A.cpp定義的任何類型。

// using_assembly_C.cpp
// compile with: /clr
#using "using_assembly_B.dll"
int main() {
   B b;
   b.Test();
}

另請參閱

預處理器指示詞