使用參考管理員新增或移除參考
您可以使用 [參考管理員] 對話框,新增和管理您、Microsoft或其他公司開發的元件參考。 如果您正在開發通用 Windows 應用程式,您的專案會自動參考所有正確的 Windows SDK DLL。 當您建立 .NET 專案時,您的專案會自動參考所需的元件,例如 .NET SDK,但您需要在新增功能時新增參考。 某些 .NET API 會在您必須手動新增的元件中公開。 必須手動新增 COM 元件或自定義元件的參考。
如果您參考的連結庫可以使用 NuGet 套件,請使用 NuGet 套件管理員。 請參閱 安裝和使用 NuGet 套件。
參考管理員對話框
[參考管理員] 對話框會顯示左側的不同類別,視項目類型而定:
元件,具有 Framework 和 Extensions 子群組 (僅限.NET Framework)
COM 列出可供參考的所有 COM 元件
Windows,包含 Core 和 Extensions 子群組。 您可以使用 物件瀏覽器,探索 Windows SDK 或擴充功能 SDK 中的參考。
瀏覽,帶有 最近的 子群組
注意
如果您正在開發 C++專案,則可能不會在 [參考管理員] 對話方塊中看到 [瀏覽]。
新增參考
在 [方案總管]中,按一下滑鼠右鍵並選擇 [參考] 或 [相依性] 節點,然後從功能表中選擇 [新增專案參考]、[新增共用項目參考] 或 [新增 COM 參考]。 (您也可以以滑鼠右鍵按一下項目節點,從飛出功能表中選取 [新增],以從這些選項中選擇。)
參考管理員 會開啟,並依群組列出可用的參考。
選取要新增的參考,然後選取 [確定]。
注意
如果您沒有看到您要尋找的參考,請選取 [瀏覽] 來尋找參考。 (如果您正在開發C++專案,可能不會看到瀏覽選項。
「組件」索引標籤(僅限 .NET Framework)
注意
元件 索引標籤不適用於以 .NET Core 或 .NET 5 和更新版本為目標的專案。 選取「流覽」,在檔案系統中尋找組件,並將其新增為參考。 若要查看專案中參考的組件,請展開專案中 相依性 節點。 從 [相依性] 節點中,您可以按兩下滑鼠右鍵以新增或移除專案參考、檢視或移除 元件 節點中的元件,或開啟 NuGet 套件瀏覽器來管理 NuGet 套件。 請參閱 NuGet 檔中的 使用 NuGet 套件管理員 在 Visual Studio 中安裝和管理套件。
針對 .NET Framework 專案,元件 索引卷標會列出所有可用於參考的 .NET 元件。 元件 索引標籤不會列出全域程式集緩存 (GAC) 中的任何元件,因為 GAC 中的元件是運行時間環境的一部分。 如果您部署或複製一個包含對註冊在 GAC 中之元件的參考的應用程式,則不論 Copy Local 的設定為何,元件都不會隨應用程式一起部署或複製。 如需詳細資訊,請參閱 管理專案中的參考。
當您手動新增任何 EnvDTE 命名空間的參考時(EnvDTE、EnvDTE80、EnvDTE90、EnvDTE90a或 EnvDTE100),請將參考的 Embed Interop Types 屬性設定為 Properties 視窗中 False。 將此屬性設定為 True 可能會導致建置問題,因為某些無法內嵌的 EnvDTE 屬性。
所有桌面專案都包含一個對 mscorlib 的隱式參考 。 Visual Basic 專案隱含地包含對 Microsoft.VisualBasic的參考。 所有專案都包含 System.Core的隱含參考,即使它已從參考清單中移除也一樣。
組件 索引標籤包含兩個子索引標籤:
Framework 列出構成目標架構的所有元件。
對於未以 .NET Core 或通用 Windows 平台為目標的專案,Framework 索引卷標會列舉目標 Framework 中的元件。 用戶必須新增應用程式所需的任何參考。
通用 Windows 專案預設包含目標架構中所有元件的參考。 在 Managed 專案中,方案總管中 參考 資料夾下的唯讀節點 表示整個架構的參考。 因此,架構 標籤不會列舉架構中的任何元件,而是顯示以下訊息:「所有架構元件都已經被參考。」 請使用物件瀏覽器來探索 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]
舊版本的 [目標框架識別碼]
例如,如果專案以32位電腦上的 .NET Framework 4 為目標, Extensions 列舉在 \\Microsoft.NETFramework\v4.0\AssemblyFoldersEx下註冊的元件,\Microsoft.NETFramework\v3.5\AssemblyFoldersEx、\Microsoft.NETFramework\v3.0\AssemblyFoldersEx和 \Microsoft.NETFramework\v2.0\AssemblyFoldersEx。
清單中的某些元件可能不會顯示,視專案的架構版本而定。 這種情況可能發生在下列情況下:
使用最新架構版本的元件與以舊版為目標的專案不相容。
如需如何變更項目目標 Framework 版本的詳細資訊,請參閱 Framework 目標概觀。
使用舊版 .NET Framework 的元件與以較新 .NET Framework 為目標的專案不相容。
如需 .NET Framework 版本之間的版本相容性詳細資訊,請參閱 版本相容性。
您應該避免將檔案參考新增至相同方案中另一個專案的輸出,因為這樣做可能會導致編譯錯誤。 請改用 [新增參考 ] 對話框 的 [專案] 索引標籤來建立專案對項目參考。 這種做法可讓您更輕鬆地進行小組開發,方法是更妥善地管理您在專案中建立的類別庫。 如需詳細資訊,請參閱 針對中斷的參考進行疑難解答。
注意
如果某個項目的目標 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> 是適用的最低架構版本。 如果 <VersionMinimum> 為 v3.0,則 AssemblyFoldersEx 中指定的資料夾會套用至以 .NET Framework 3.0 和更新版本為目標的專案。
<AssemblyLocation> 是您想要出現在 [新增參考] 對話框中的元件目錄,例如,C:\MyAssemblies。
在 [
HKEY_LOCAL_MACHINE
] 節點下建立登錄機碼,可讓所有使用者在 [新增參考] 對話框中看到指定位置的元件。 在HKEY_CURRENT_USER
節點下建立登錄機碼只會影響目前用戶的設定。再次開啟 新增參考 對話框。 元件應該會出現在 [.NET] 索引標籤上。如果沒有,請確定元件位於指定的 AssemblyLocation 目錄中,重新啟動 Visual Studio,然後再試一次。
專案標籤
[專案] 標籤會列出目前方案中所有相容的專案,於 [方案] 子標籤中。
項目可以參考以不同架構版本為目標的另一個專案。 例如,您可以建立以 .NET 8.0 為目標的專案,但參考為 .NET 6.0 建置的元件。 不過,.NET 6.0 項目無法參考 .NET Framework 8.0 專案。 如需詳細資訊,請參閱 Framework 目標概觀。
共享專案標籤
在 [參考管理員] 對話框的 [共用專案] 索引標籤上,新增共用項目的參考。 共用專案可讓您撰寫許多不同的應用程式專案所參考的一般程式代碼。
通用 Windows 索引標籤
[通用 Windows] 索引標籤列出所有專用於 Windows 作業系統執行平台的 SDK。 此索引標籤有兩個子群組:Core 和 Extensions。
核心子群組
通用 Windows 應用程式專案預設會參考通用 Windows SDK。 因此,參考管理員 中的 Core 子群組不會列舉通用 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,索引標籤就不會出現在 [參考管理員] 對話框中。
流覽
您可以使用 [瀏覽] 按鈕來在檔案系統中瀏覽元件或組件。
項目可以參考以不同架構版本為目標的元件。 例如,您可以建立以 .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 樣式專案的未使用參考。
如需詳細資訊,請參閱 移除未使用的參考。