使用參考管理員新增或移除參考

針對由您本身、Microsoft 或其他公司所開發的元件,您可以使用 [參考管理員] 對話方塊來新增及管理這些元件的參考。 如果您正在開發通用 Windows app,您的專案會自動參考所有正確的 Windows SDK DLL。 當您建立 .NET 專案時,您的專案會自動參考它所需的元件 (例如 .NET SDK),但您需要在新增功能時新增參考。 某些 .NET API 是在您手動加入的元件中公開。 您必須手動加入對 COM 元件或自訂元件的參考。

[參考管理員] 對話方塊

[參考管理員] 對話方塊的左邊會依專案類型,顯示各種不同的分類:

  • 組件,其中包含 [架構][延伸模組] 子群組 (僅限 .NET Framework)

  • COM,其中列出所有可供參考的 COM 元件

  • 專案

  • 共用的專案

  • Windows,其中包含 [核心] 和 [延伸模組] 子群組。 您可以使用 [物件瀏覽器] 探索 Windows SDK 或延伸模組 SDK 中的參考。

  • 瀏覽,其中包含 [最近] 子群組

    注意

    如果您正在開發 C++ 專案,則可能不會在 [參考管理員] 對話方塊中看到 [瀏覽]

加入參考

  1. 在 [方案總管] 中,以滑鼠右鍵按一下 [參考] 或 [相依性] 節點,然後從捷徑功能表選擇 [新增專案參考]、[新增共用專案參考] 或 [新增 COM 參考]。 (您也可以透過滑鼠右鍵按一下專案節點,然後從飛出功能表選取 [新增] 以從這些選項中進行選擇。)

    Screenshot of the Add Reference dialog from the context menu in Solution Explorer.

    [參考管理員] 隨即開啟,並依群組列出可用的參考。

    Screenshot of the Reference Manager dialog box in Visual Studio.

  2. 選取要新增的參考,然後選取 [確定]

    注意

    如果您沒有看到要尋找的參考,請選取 [瀏覽] 以找出參考。 (如果您正在開發 C++ 專案,則可能看不到瀏覽選項。)

[組件] 索引標籤 (僅限 .NET Framework)

注意

[組件] 索引標籤不適用於以 .NET Core 或 .NET 5 及更新版本為目標框架的專案,因為這些專案的組件會以 NuGet 套件的形式來新增,或者是透過以特定的 .NET 版本為目標框架來包含。 若要查看專案中參考的組件,請展開專案中的 [相依性] 節點,並在 [框架] 下檢視。 在 [相依性] 節點中,您可以按一下滑鼠右鍵來新增或移除專案參考,或開啟 NuGet 套件瀏覽器來管理 NuGet 套件。 請參閱 NuGet 文件中的「使用 NuGet 套件管理員在 Visual Studio 中安裝和管理套件」

對於 .NET Framework 專案,[組件] 索引標籤會列出可供參考的所有 .NET 組件。 [組件] 索引標籤不會列出全域組件快取 (GAC) 中的任何組件,因為 GAC 中的組件是執行階段環境的一部分。 如果您部署或複製的應用程式中包含在 GAC 中註冊之元件的參考,則不論 [複製到本機] 設定為何,該組件都不會隨著應用程式一起部署或複製。 如需詳細資訊,請參閱管理專案中的參考

手動新增對任何 EnvDTE 命名空間 (EnvDTEEnvDTE80EnvDTE90EnvDTE90aEnvDTE100) 的參考時,請在 [屬性] 視窗中,將參考的 [內嵌 Interop 類型] 屬性設定成 False。 如果將此屬性設成 True,可能會導致組建問題,因為某些 EnvDTE 屬性無法內嵌。

所有傳統型專案都包含 mscorlib 的隱含參考。 Visual Basic 專案包含 Microsoft.VisualBasic 的隱含參考。 所有專案都包含 System.Core 的隱含參考,即使已從參考清單中移除也一樣。

[組件] 索引標籤包括兩個子索引標籤:

  1. [Framework] 會列出組成目標 Framework 的所有組件。

    針對不以 .NET Core 或通用 Windows 平台為目標的專案,[Framework] 索引標籤會列舉來自目標 Framework 的組件。 使用者必須加入該應用程式所需的任何參考。

    通用 Windows 專案預設會包含目標 Framework 中所有組件的參考。 在受控專案中,方案總管 [參考] 資料夾下的唯讀節點表示整個架構的參考。 因此,[Framework] 索引標籤不會列舉架構中的任何組件,並改為顯示下列訊息:「所有 Framework 組件都已經被參考了。 請使用物件瀏覽器瀏覽 Framework 中的參考」。

  2. [延伸模組] 會列出外部元件和控制項廠商為了擴充目標 Framework 所開發的全部組件。 根據使用者應用程式的用途,可能會需要這些組件。

    填入 [延伸模組] 的方式是列舉下列位置所註冊的組件:

    32 位元電腦:

    • HKEY_CURRENT_USER\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]

    64 位元電腦:

    • HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]

    和舊版的 [目標 Framework 識別碼]

    例如,如果專案在 32 位元電腦上的目標是 .NET Framework 4,則延伸模組會列舉 \Microsoft.NETFramework\v4.0\AssemblyFoldersEx\Microsoft.NETFramework\v3.5\AssemblyFoldersEx\Microsoft.NETFramework\v3.0\AssemblyFoldersEx\Microsoft.NETFramework\v2.0\AssemblyFoldersEx 下註冊的組件。

視專案的 Framework 版本而定,清單中的部分元件可能不會顯示。 這種情形可能會在以下狀況下發生:

  • 使用最近版本 Framework 的元件,與以舊版為目標的專案並不相容。

    如需如何為專案變更目標 Framework 版本的相關資訊,請參閱 Framework 目標概觀

  • 使用舊版 .NET Framework 的元件與以較新版的 .NET Framework 為目標框架的專案不相容。

如需 .NET Framework 版本之間版本相容性的詳細資訊,請參閱版本相容性

您應該避免將檔案參考新增至同一解決方案中的其他專案輸出,因為這麼做可能會造成編譯錯誤。 請改用 [加入參考] 對話方塊中的 [專案] 索引標籤,來建立專案對專案間的參考。 這種做法能夠更有效的管理您在專案中所建立的類別庫,使得小組開發更為容易。 如需詳細資訊,請參閱針對中斷參考進行疑難排解

注意

如果某個專案的目標框架版本為 .NET Framework 4.5 或更新版本,而另一個專案的目標版本為 .NET Framework 2、3、3.5 或 4.0,則會建立檔案參考 (而非專案參考)。 如需 .NET、.NET Framework 和 .NET Core 的詳細資訊,請參閱什麼是 .NET (和 .NET Core)

若要在加入參考對話方塊中顯示組件

  • 將組件移動或複製至下列其中一個位置:

    • 目前專案目錄。 (您可以使用 [瀏覽] 索引標籤尋找這些組件)。

    • 同一方案中的其他專案目錄。 (您可以使用 [專案] 索引標籤尋找這些組件)。

    - 或 -

  • 設定用以指定組件顯示位置的登錄機碼:

    針對 32 位元的作業系統,請加入下列登錄機碼之一。

    • [HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    針對 64 位元的作業系統,請在 32 位元登錄區中,加入下列登錄機碼之一。

    • [HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    <VersionMinimum> 為適用的最低 Framework 版本。 如果 <最低版本> 是 3.0 版,則 AssemblyFoldersEx 中指定的資料夾適用於以 .NET Framework 3.0 (含) 以後版本為目標的專案。

    <組件位置> 代表您想要在 [新增參考] 對話方塊中顯示的組件目錄,例如 C:\MyAssemblies

    HKEY_LOCAL_MACHINE 節點下建立登錄機碼,可讓所有使用者都能在 [新增參考] 對話方塊中看到指定位置的組件。 在 HKEY_CURRENT_USER 節點下建立登錄機碼,只會影響目前使用者的設定。

    再次開啟 [加入參考] 對話方塊。 組件應該會出現在 [.NET] 索引標籤上。如果沒有顯示,請確認組件位於指定的 AssemblyLocation 目錄中,然後重新啟動 Visual Studio 並再試一次。

[專案] 索引標籤

[專案] 索引標籤會在 [解決方案] 子索引標籤內列出目前解決方案的所有相容專案。

專案可以參考以不同 Framework 版本為目標的其他專案。 例如,您可以建立一個以 .NET 8.0 為目標框架,但是參考針對 .NET 6.0 所建置的組件的專案。 不過,.NET 6.0 專案無法參考 .NET Framework 8.0 專案。 如需詳細資訊,請參閱 Framework 目標概觀

[共用的專案] 索引標籤

在 [參考管理員] 對話方塊的 [共用的專案] 索引標籤上,新增對共用專案的參考。 共用的專案可讓您撰寫由許多不同應用程式專案所參考的通用程式碼。

[通用 Windows] 索引標籤

[通用 Windows] 索引標籤會列出 Windows 作業系統執行所在平台特定的所有 SDK。 此索引標籤有兩個子群組:核心延伸模組

[核心] 子群組

根據預設,通用 Windows 應用程式專案具有通用 Windows SDK 的參考。 因此,[參考管理員] 中的 [核心] 子群組不會列舉 Windows SDK 中的任何組件。

[延伸模組] 子群組

[延伸模組] 會列出擴充目標 Windows 平台的使用者 SDK。

SDK 是檔案集合,Visual Studio 會將這個集合視為單一元件。 在 [延伸模組] 索引標籤中,適用於進行 [參考管理員] 對話方塊叫用之專案的 SDK 會以單一項目形式列出。 新增至專案時,Visual Studio 會使用所有 SDK 內容,因此使用者不需要採取任何進一步動作就可以在 IntelliSense、工具箱、設計工具、物件瀏覽器、組建、部署、偵錯和封裝中利用 SDK 內容。

如需如何在 [延伸模組] 索引標籤中顯示 SDK 的資訊,請參閱建立軟體開發套件

注意

如果專案參考的 SDK 取決於另一個 SDK,則除非您手動新增第二個 SDK 的參考,否則 Visual Studio 不會使用第二個 SDK。 當您在 [延伸模組] 索引標籤上選擇 SDK 時,[參考管理員] 對話方塊會透過在 [詳細資料] 窗格中列出所有相依性,協助您識別 SDK 相依性。

如果專案類型不支援延伸模組,此索引標籤就不會出現在 [參考管理員] 對話方塊中。

[COM] 索引標籤

[COM] 索引標籤會列出所有可供參考的 COM 元件。 如果您要將參考加入包含內部資訊清單的已註冊 COM DLL,請先移除註冊 DLL。 否則 Visual Studio 會將組件參考新增為 ActiveX 控制項,而不是原生 DLL。

如果專案類型不支援 COM,此索引標籤就不會出現在 [參考管理員] 對話方塊中。

瀏覽

您可以使用 [瀏覽] 按鈕,瀏覽檔案系統中的元件。

專案可以參考以不同 Framework 版本為目標的元件。 例如,您可以建立一個以 .NET Framework 4.7.2 為目標框架,但是參考以 .NET Framework 4 為目標框架的元件的應用程式。 如需詳細資訊,請參閱 Framework 目標概觀

請避免將檔案參考加入至同一方案中其他專案的輸出,因為這種做法可能會造成編譯錯誤。 請改用 [參考管理員] 對話方塊的 [方案] 索引標籤來建立專案對專案的參考。 這樣一來就能夠更有效的管理在專案中所建立的類別庫,使得小組開發更為容易。 如需詳細資訊,請參閱針對中斷參考進行疑難排解

您無法瀏覽至 SDK,並將它新增至您的專案。 您只能瀏覽至檔案 (例如,組件或 .winmd),並將它新增至專案。

對 WinMD 執行檔案參考時,預期的配置是將 <FileName>.winmd<FileName>.dll<FileName>.pri 檔案全部放置在一起。 如果您在下列情境中參考 WinMD,則會將不完整的檔案集複製到專案輸出目錄中,因而導致建置和執行階段失敗。

  • 原生元件:原生專案會為每一個不相鄰的命名空間集合建立一個 WinMD,並且建立一個包含實作的 DLL。 WinMD 有不同的名稱。 參考此原生元件檔時,MSBuild 不會將採用不同名稱的 WinMD 辨識為同一個元件。 因此,只會複製同名的 <FileName>.dll<FileName>.winmd,並且會發生執行階段錯誤。 若要解決這個問題,請建立延伸模組 SDK。 如需詳細資訊,請參閱建立軟體開發套件

  • 使用控制項:XAML 控制項至少包含 <FileName>.winmd<FileName>.dll<FileName>.pri<XamlName>.xaml<ImageName>.jpg。 專案建置後,不會將與檔案參考相關聯的資源檔複製到專案的輸出目錄中,只會複製 <FileName>.winmd<FileName>.dll<FileName>.pri。 此時會記錄建置錯誤,指出資源 <XamlName>.xaml<ImageName>.jpg 遺漏。 若要成功,請手動將這些資源檔複製到專案輸出目錄中以供建置和偵錯/執行階段使用。 若要解決這個問題,請遵循建立軟體開發套件中的步驟建立延伸模組 SDK,或編輯專案檔以新增下列屬性:

    <PropertyGroup>
       <GenerateLibraryOutput>True</GenerateLibraryOutput>
    </PropertyGroup>
    

    注意

    如果您加入屬性,建置執行速度可能會變慢。

最近

[組件]、[COM]、[Windows] 和 [瀏覽] 各支援一個 [最近] 索引標籤,其中會列舉最近新增至專案中的元件清單。

[參考管理員] 對話方塊中的搜尋列會在成為焦點的索引標籤上運作。 例如,如果您在 [方案] 索引標籤成為焦點時於搜尋列中鍵入 "System",則除非方案擁有包含 "System" 的專案名稱,否則搜尋不會傳回任何結果。

移除參考

您可以使用 [移除未使用的參考] 功能表項目,移除 Visual Studio 中 SDK 樣式專案的未使用參考。

Screenshot of the Remove Unused Reference dialog from the context menu in Solution Explorer.

如需詳細資訊,請參閱移除未使用的參考