Dodawanie lub usuwanie odwołań za pomocą Menedżera odwołań

Za pomocą okna dialogowego Menedżer odwołań można dodawać odwołania do składników firmy Microsoft lub innej firmy i zarządzać nimi. Jeśli tworzysz aplikację uniwersalną systemu Windows, projekt automatycznie odwołuje się do wszystkich poprawnych bibliotek DLL zestawu Windows SDK. Podczas tworzenia projektu platformy .NET projekt automatycznie odwołuje się do potrzebnych składników, takich jak zestaw .NET SDK, ale należy dodać odwołania podczas dodawania funkcji. Niektóre interfejsy API platformy .NET są widoczne w składnikach, które należy dodać ręcznie. Odwołania do składników MODELU COM lub składników niestandardowych należy dodać ręcznie.

Okno dialogowe Menedżer odwołań

Okno dialogowe Menedżer odwołań zawiera różne kategorie po lewej stronie, w zależności od typu projektu:

  • Zestawy z podgrupami framework i extensions (tylko.NET Framework)

  • Com wyświetla listę wszystkich składników COM, które są dostępne do odwoływania się

  • Projekty

  • Projekty udostępnione

  • Windows z podgrupami Core i Extensions . Odwołania można eksplorować w zestawach SDK systemu Windows lub rozszerzeniach przy użyciu przeglądarki obiektów.

  • Przeglądaj z ostatnią podgrupą

    Uwaga

    Jeśli tworzysz projekty języka C++, w oknie dialogowym Przeglądaj w Menedżerze odwołań może nie być widoczna.

Dodawanie odwołania

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł Odwołania lub Zależności, a następnie wybierz polecenie Dodaj odwołanie do projektu, Dodaj odwołanie do projektu udostępnionego lub Dodaj odwołanie COM z menu kontekstowego. (Możesz kliknąć prawym przyciskiem myszy węzeł projektu i wybrać polecenie Dodaj też z menu wysuwanego, aby wybrać jedną z tych opcji).

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

    Zostanie otwarty Menedżer odwołań i wyświetli listę dostępnych odwołań według grupy.

    Screenshot of the Reference Manager dialog box in Visual Studio.

  2. Wybierz odwołanie do dodania, a następnie wybierz przycisk OK.

    Uwaga

    Jeśli nie widzisz szukanych odwołań, wybierz pozycję Przeglądaj , aby zlokalizować odwołanie. (Jeśli tworzysz projekty języka C++, może nie być widoczna opcja przeglądania).

Karta Zestawy (tylko program .NET Framework)

Uwaga

Karta Zestawy nie jest dostępna dla projektów przeznaczonych dla platformy .NET Core lub .NET 5 lub nowszej, ponieważ zestawy dla tych projektów są dodawane jako pakiety NuGet lub są uwzględniane przez określenie określonej wersji platformy .NET. Aby wyświetlić przywołyne zestawy w projekcie, rozwiń węzeł Zależności w projekcie i spójrz w obszarze Struktury. W węźle Zależności możesz kliknąć prawym przyciskiem myszy, aby dodać lub usunąć odwołania do projektu lub otworzyć przeglądarkę pakietów NuGet, aby zarządzać pakietami NuGet. Zobacz Instalowanie pakietów i zarządzanie nimi w programie Visual Studio przy użyciu Menedżer pakietów NuGet w dokumentacji narzędzia NuGet.

W przypadku projektów programu .NET Framework karta Zestawy zawiera listę wszystkich zestawów platformy .NET, które są dostępne do odwoływania się. Karta Zestawy nie wyświetla żadnych zestawów z globalnej pamięci podręcznej zestawów (GAC), ponieważ zestawy w GAC są częścią środowiska uruchomieniowego. Jeśli wdrażasz lub kopiujesz aplikację zawierającą odwołanie do zestawu zarejestrowanego w funkcji GAC, zestaw nie zostanie wdrożony ani skopiowany z aplikacją, niezależnie od ustawienia Kopiuj lokalnie . Aby uzyskać więcej informacji, zobacz Zarządzanie odwołaniami w projekcie.

Po ręcznym dodaniu odwołania do dowolnej przestrzeni nazw EnvDTE (EnvDTE, EnvDTE80, EnvDTE90, EnvDTE90alub EnvDTE100) ustaw właściwość Embed Interop Types odwołania do wartości False w oknie Właściwości . Ustawienie tej właściwości na true może powodować problemy z kompilacją z powodu niektórych właściwości envDTE, których nie można osadzać.

Wszystkie projekty klasyczne zawierają niejawne odwołanie do biblioteki mscorlib. Projekty języka Visual Basic zawierają niejawne odwołanie do Microsoft.VisualBasicelementu . Wszystkie projekty zawierają niejawne odwołanie do elementu System.Core, nawet jeśli zostanie usunięte z listy odwołań.

Karta Zestawy składa się z dwóch podtab:

  1. Struktura zawiera listę wszystkich zestawów, które stanowią platformę docelową.

    W przypadku projektów, które nie są przeznaczone dla platformy .NET Core lub platforma uniwersalna systemu Windows, karta Framework wylicza zestawy z platformy docelowej. Użytkownik musi dodać wszelkie odwołania wymagane przez aplikację.

    Projekty uniwersalne systemu Windows zawierają odwołania do wszystkich zestawów w docelowej strukturze domyślnie. W projektach zarządzanych węzeł tylko do odczytu w folderze Odwołania w Eksplorator rozwiązań wskazuje odwołanie do całej platformy. W związku z tym karta Struktura nie wylicza żadnego z zestawów z platformy, a zamiast tego wyświetla następujący komunikat: "Wszystkie zestawy struktury są już przywołyne. Użyj przeglądarki obiektów, aby zapoznać się z odwołaniami w strukturze.

  2. Rozszerzenia zawierają listę wszystkich zestawów opracowanych przez zewnętrznych dostawców składników i kontrolek w celu rozszerzenia docelowej platformy. W zależności od celu aplikacji użytkownika, może być konieczne użycie tych zestawów.

    Rozszerzenia są wypełniane przez wyliczanie zestawów zarejestrowanych w następujących lokalizacjach:

    Maszyna 32-bitowa:

    • 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]

    Maszyna 64-bitowa:

    • 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]

    I starsze wersje [Identyfikator platformy docelowej]

    Jeśli na przykład projekt jest przeznaczony dla programu .NET Framework 4 na maszynie 32-bitowej, rozszerzenia wylicza zestawy zarejestrowane w folderze \Microsoft.NETFramework\v4.0\AssemblyFoldersEx, \Microsoft.NETFramework\v3.5\AssemblyFoldersEx, \Microsoft.NETFramework\v3.0\AssemblyFoldersEx i \Microsoft.NETFramework\v2.0\AssemblyFoldersEx.

Niektóre składniki na liście mogą nie być wyświetlane w zależności od wersji struktury projektu. Taka sytuacja może wystąpić w następujących warunkach:

  • Składnik korzystający z najnowszej wersji platformy jest niezgodny z projektem przeznaczonym dla starszej wersji.

    Aby uzyskać informacje o sposobie zmiany wersji platformy docelowej dla projektu, zobacz Omówienie kierowania platformy.

  • Składnik korzystający ze starszej wersji programu .NET Framework jest niezgodny z projektem przeznaczonym dla nowszego programu .NET Framework.

Aby uzyskać więcej informacji na temat zgodności wersji między wersjami programu .NET Framework, zobacz Zgodność wersji.

Należy unikać dodawania odwołań do plików do danych wyjściowych innego projektu w tym samym rozwiązaniu, ponieważ może to spowodować błędy kompilacji. Zamiast tego użyj karty Projekty okna dialogowego Dodawanie odwołania , aby utworzyć odwołania do projektu do projektu. Dzięki temu programowanie zespołowe jest łatwiejsze, umożliwiając lepsze zarządzanie bibliotekami klas tworzonymi w projektach. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z uszkodzonymi odwołaniami.

Uwaga

Odwołanie do pliku zamiast odwołania do projektu jest tworzone, jeśli docelowa wersja platformy jednego projektu to .NET Framework 4.5 lub nowsza, a docelowa wersja drugiego projektu to .NET Framework 2, 3, 3.5 lub 4.0. Aby uzyskać więcej informacji na temat platform .NET, .NET Framework i .NET Core, zobacz Co to jest .NET (i .NET Core).

Aby wyświetlić zestaw w oknie dialogowym Dodawanie odwołania

  • Przenieś lub skopiuj zestaw do jednej z następujących lokalizacji:

    • Bieżący katalog projektu. (Te zestawy można znaleźć przy użyciu elementu Karta Przeglądania .

    • Inne katalogi projektów w tym samym rozwiązaniu. (Te zestawy można znaleźć przy użyciu elementu Karta Projekty ).

    - lub -

  • Ustaw klucz rejestru określający lokalizację zestawów do wyświetlenia:

    W przypadku 32-bitowego systemu operacyjnego dodaj jeden z następujących kluczy rejestru.

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

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

    W przypadku 64-bitowego systemu operacyjnego dodaj jeden z następujących kluczy rejestru w 32-bitowej gałęzi rejestru.

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

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

    <VersionMinimum> to najniższa wersja platformy, która ma zastosowanie. Jeśli <wersja VersionMinimum> jest w wersji 3.0, foldery określone w pliku AssemblyFoldersEx mają zastosowanie do projektów przeznaczonych dla programu .NET Framework 3.0 lub nowszego.

    <AssemblyLocation> to katalog zestawów, które mają być wyświetlane w oknie dialogowym Dodawanie odwołania , na przykład C:\MyAssemblies.

    Utworzenie klucza rejestru w HKEY_LOCAL_MACHINE węźle umożliwia wszystkim użytkownikom wyświetlanie zestawów w określonej lokalizacji w oknie dialogowym Dodawanie odwołania . Utworzenie klucza rejestru w węźle HKEY_CURRENT_USER ma wpływ tylko na ustawienie bieżącego użytkownika.

    Otwórz ponownie okno dialogowe Dodawanie odwołania. Zestawy powinny być wyświetlane na karcie .NET . Jeśli tak nie jest, upewnij się, że zestawy znajdują się w określonym katalogu AssemblyLocation , uruchom ponownie program Visual Studio i spróbuj ponownie.

Karta Projekty

Karta Projekty zawiera listę wszystkich zgodnych projektów w bieżącym rozwiązaniu w podtabcie Rozwiązanie .

Projekt może odwoływać się do innego projektu, który jest przeznaczony dla innej wersji platformy. Można na przykład utworzyć projekt przeznaczony dla platformy .NET 8.0, ale odwołuje się do zestawu utworzonego dla platformy .NET 6.0. Jednak projekt .NET 6.0 nie może odwoływać się do projektu .NET Framework 8.0. Aby uzyskać więcej informacji, zobacz Omówienie określania elementów docelowych platformy.

Karta Udostępnione projekty

Dodaj odwołanie do udostępnionego projektu na karcie Udostępnione projekty okna dialogowego Menedżer odwołań. Udostępnione projekty umożliwiają pisanie wspólnego kodu, do którego odwołuje się wiele różnych projektów aplikacji.

Karta uniwersalnego systemu Windows

Karta Uniwersalny system Windows zawiera listę wszystkich zestawów SDK specyficznych dla platform, na których działają systemy operacyjne Windows. Ta karta ma dwie podgrupy: Core i Extensions.

Podgrupa podstawowa

Projekty aplikacji uniwersalnych systemu Windows domyślnie odwołują się do zestawu Universal Windows SDK. W związku z tym podgrupa Podstawowa w Menedżerze odwołań nie wylicza żadnych zestawów z zestawu Universal Windows SDK.

Podgrupa rozszerzeń

Rozszerzenia wyświetla listę zestawów SDK użytkowników, które rozszerzają docelową platformę systemu Windows.

Zestaw SDK jest zbiorem plików, który program Visual Studio traktuje jako samodzielny składnik. Na karcie Rozszerzenia zestawy SDK, które mają zastosowanie do projektu, z którego wywoływano okno dialogowe Menedżer odwołań, są wyświetlane jako pojedyncze wpisy. Po dodaniu do projektu cała zawartość zestawu SDK jest zużywana przez program Visual Studio, tak aby użytkownik nie musiał podejmować żadnych dalszych akcji, aby korzystać z zawartości zestawu SDK w funkcji IntelliSense, przybornika, projektantów, przeglądarki obiektów, kompilacji, wdrażania, debugowania i pakowania.

Aby uzyskać informacje na temat sposobu wyświetlania zestawu SDK na karcie Rozszerzenia, zobacz Tworzenie zestawu Software Development Kit.

Uwaga

Jeśli projekt odwołuje się do zestawu SDK, który zależy od innego zestawu SDK, program Visual Studio nie używa drugiego zestawu SDK, chyba że ręcznie dodasz odwołanie do drugiego zestawu SDK. Po wybraniu zestawu SDK na karcie Rozszerzenia okno dialogowe Menedżer odwołań ułatwia identyfikowanie zależności zestawu SDK, wyświetlając listę zależności w okienku szczegółów.

Jeśli typ projektu nie obsługuje rozszerzeń, ta karta nie jest wyświetlana w oknie dialogowym Menedżer odwołań.

Karta COM

Karta COM zawiera listę wszystkich składników COM, które są dostępne do odwoływania się. Jeśli chcesz dodać odwołanie do zarejestrowanej DLL modelu COM, zawierającej manifest wewnętrzny, najpierw wyrejestruj bibliotekę DLL. W przeciwnym razie program Visual Studio dodaje odwołanie do zestawu jako kontrolkę ActiveX zamiast jako natywną bibliotekę DLL.

Jeśli typ projektu nie obsługuje modelu COM, karta nie jest wyświetlana w oknie dialogowym Menedżer odwołań.

Przeglądanie

Możesz użyć przycisku Przeglądaj , aby wyszukać składnik w systemie plików.

Projekt może odwoływać się do składnika, który jest przeznaczony dla innej wersji platformy. Można na przykład utworzyć aplikację przeznaczoną dla programu .NET Framework 4.7.2, ale odwołuje się do składnika przeznaczonego dla platformy .NET Framework 4. Aby uzyskać więcej informacji, zobacz Omówienie określania elementów docelowych platformy.

Unikaj dodawania odwołań do plików do danych wyjściowych innego projektu w tym samym rozwiązaniu, ponieważ ta taktyka może powodować błędy kompilacji. Zamiast tego użyj karty Rozwiązanie okna dialogowego Menedżer odwołań, aby utworzyć odwołania do projektu do projektu. Ułatwia to programowanie zespołowe, umożliwiając lepsze zarządzanie bibliotekami klas tworzonymi w projektach. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z uszkodzonymi odwołaniami.

Nie można przejść do zestawu SDK i dodać go do projektu. Możesz przejść tylko do pliku (na przykład zestawu lub pliku winmd) i dodać go do projektu.

Podczas odwołwania się do pliku WinMD oczekiwany układ polega na tym, że <pliki FileName.winmd, <FileName.dll>> i< FileName.pri> są umieszczane obok siebie. Jeśli odwołujesz się do usługi WinMD w następujących scenariuszach, niekompletny zestaw plików zostanie skopiowany do katalogu wyjściowego projektu i w związku z tym wystąpią błędy kompilacji i środowiska uruchomieniowego.

  • Składnik macierzysty: projekt natywny tworzy jeden winMD dla każdego rozłącznego zestawu przestrzeni nazw i jednej biblioteki DLL składającej się z implementacji. Dyski WinMD mają różne nazwy. W przypadku odwoływania się do tego natywnego pliku składnika program MSBuild nie rozpoznaje, że różne nazwy winMD tworzą jeden składnik. Dlatego kopiowane są tylko identyczne nazwy <FileName.dll> i <FileName.winmd>, a występują błędy środowiska uruchomieniowego. Aby obejść ten problem, utwórz zestaw SDK rozszerzenia. Aby uzyskać więcej informacji, zobacz Tworzenie zestawu Software Development Kit.

  • Używanie kontrolek: co najmniej kontrolka XAML składa się z <fileName.winmd, FileName.dll>, <<FileName.pri>>,< XamlName.xaml> i< ImageName.jpg.> Po skompilowanym projekcie pliki zasobów skojarzone z odwołaniem do pliku nie są kopiowane do katalogu wyjściowego projektu, a kopiowane są tylko pliki FileName.winmd>,< FileName.dll> i< FileName.pri>.< Zarejestrowano błąd kompilacji wskazujący, że brakuje zasobów XamlName.xaml i< ImageName.jpg>>.< Aby zakończyć się pomyślnie, ręcznie skopiuj te pliki zasobów do katalogu wyjściowego projektu na potrzeby kompilacji i debugowania/środowiska uruchomieniowego. Aby obejść ten problem, utwórz zestaw SDK rozszerzenia, wykonując kroki opisane w temacie Tworzenie zestawu Software Development Kit lub edytowanie pliku projektu w celu dodania następującej właściwości:

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

    Uwaga

    Jeśli dodasz właściwość, kompilacja może być wolniejsza.

Ostatnie

Zestawy, COM, Windows i Przeglądaj obsługują kartę Ostatnie , która wylicza listę składników, które zostały ostatnio dodane do projektów.

Pasek wyszukiwania w oknie dialogowym Menedżer odwołań działa na karcie fokusu. Jeśli na przykład wpiszesz ciąg "System" na pasku wyszukiwania, gdy na karcie Rozwiązanie znajduje się fokus, wyszukiwanie nie zwraca żadnych wyników, chyba że rozwiązanie zawiera nazwę projektu zawierającą wartość "System".

Usuwanie odwołania

Nieużywane odwołania dla projektów stylu zestawu SDK w programie Visual Studio można usunąć przy użyciu elementu menu Usuń nieużywane odwołania .

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

Aby uzyskać więcej informacji, zobacz Usuwanie nieużywanych odwołań.