Hinzufügen und Entfernen von Verweisen mit dem Verweis-Manager

Sie können das Dialogfeld „Verweis-Manager“ verwenden, um Verweise auf Komponenten hinzuzufügen und zu verwalten, die von Ihnen, Microsoft oder einem anderen Unternehmen entwickelt wurden. Wenn Sie eine universelle Windows-App entwickeln, verweist das Projekt automatisch auf alle richtigen Windows SDK-DLLs. Wenn Sie ein .NET-Projekt erstellen, verweist Ihr Projekt automatisch auf die benötigten Komponenten, z. B. das .NET SDK. Sie müssen jedoch weitere Verweise hinzufügen, wenn Sie Funktionen hinzufügen. Einige .NET-APIs werden in Komponenten verfügbar gemacht, die Sie manuell hinzufügen müssen. Verweise auf COM-Komponenten oder benutzerdefinierte Komponenten müssen manuell hinzugefügt werden.

Dialogfeld "Verweis-Manager"

Das Dialogfeld „Verweis-Manager“ zeigt die verschiedenen Kategorien je nach Projekttyp auf der linken Seite an:

  • Assemblys mit den Untergruppen Framework und Erweiterungen (nur.NET Framework)

  • COM listet alle COM-Komponenten auf, die für Verweise verfügbar sind.

  • Projekte

  • Freigegebene Projekte

  • Windows mit den Untergruppen Core und Erweiterungen. Sie können die Verweise im Windows SDK oder im Erweiterungs-SDK mit dem Objektkatalog untersuchen.

  • Durchsuchen mit der Untergruppe Aktuell

    Hinweis

    Beim Entwickeln von C++-Projekten wird die Option Durchsuchen im Dialogfeld „Verweis-Manager“ möglicherweise nicht angezeigt.

Hinzufügen eines Verweises

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Verweise oder Abhängigkeiten, und wählen Sie dann im Kontextmenü Projektverweis hinzufügen, Verweis auf freigegebenes Projekt hinzufügen oder COM-Verweis hinzufügen aus. (Sie können mit der rechten Maustaste auf den Projektknoten klicken und im Flyoutmenü Hinzufügen auswählen, um auch aus diesen Optionen auszuwählen.)

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

    Der Verweis-Manager wird mit den verfügbaren Verweisen nach Gruppe geöffnet.

    Screenshot of the Reference Manager dialog box in Visual Studio.

  2. Wählen Sie einen Verweis aus, der hinzugefügt werden soll, und klicken Sie dann auf OK.

    Hinweis

    Wenn der gesuchte Verweis nicht angezeigt wird, klicken Sie auf Durchsuchen, um den Verweis zu suchen. (Wenn Sie C++-Projekte entwickeln, wird möglicherweise keine Suchoption angezeigt.)

Registerkarte „Assemblys“ (nur .NET Framework)

Hinweis

Die Registerkarte Assemblys steht für Projekte, die auf .NET Core oder .NET 5 und höher abzielen, nicht zur Verfügung, da Assemblys für diese Projekte entweder als NuGet-Pakete hinzugefügt oder durch Abzielen auf eine bestimmte Version von .NET eingeschlossen werden. Um die referenzierten Assemblys in einem Projekt anzuzeigen, erweitern Sie den Knoten Abhängigkeiten im Projekt, und suchen Sie unter Frameworks. Im Knoten Abhängigkeiten können Sie mit der rechten Maustaste klicken, um Projektverweise hinzuzufügen oder zu entfernen, oder den NuGet-Paketbrowser öffnen, um NuGet-Pakete zu verwalten. Siehe Installieren und Verwalten von Paketen in Visual Studio mit dem NuGet-Paket-Manager in der NuGet-Dokumentation.

Bei -NET Framework-Projekten führt die Registerkarte Assemblys alle .NET Framework-Assemblys auf, die für Verweise verfügbar sind. Die Registerkarte Assemblys führt keine Assemblys aus dem globalen Assemblycache (GAC) auf, da Assemblys im GAC Teil der Laufzeitumgebung sind. Wenn Sie eine Anwendung bereitstellen oder kopieren, die einen Verweis auf eine im globalen Assemblycache registrierte Assembly enthält, wird die Komponente unabhängig von der Einstellung Lokal kopieren nicht mit der Anwendung bereitgestellt oder kopiert. Weitere Informationen finden Sie unter Verwalten von Verweisen in einem Projekt.

Wenn Sie einem der EnvDTE-Namespaces (EnvDTE, EnvDTE80, EnvDTE90, EnvDTE90a oder EnvDTE100) manuell einen Verweis hinzufügen, legen Sie im Fenster Eigenschaften die Eigenschaft Interoptypen einbetten des Verweises auf FALSE fest. Wird diese Eigenschaft auf TRUE festgelegt wird, können aufgrund bestimmter EnvDTE-Eigenschaften, die nicht eingebettet werden können, Buildprobleme auftreten.

Alle Desktopprojekte enthalten einen impliziten Verweis auf mscorlib. Visual Basic-Projekte enthalten einen impliziten Verweis auf Microsoft.VisualBasic. Alle Projekte enthalten einen impliziten Verweis auf System.Core. Dies gilt auch, wenn der Eintrag aus der Liste der Verweise entfernt wird.

Die Registerkarte Assemblys besteht aus zwei untergeordneten Registerkarten:

  1. In Framework werden alle Assemblys aufgelistet, die das Zielframework darstellen.

    Für Projekte, die nicht auf .NET Core oder die universelle Windows-Plattform abzielen, listet die Registerkarte Framework Assemblys aus dem Zielframework auf. Der Benutzer muss alle Verweise hinzufügen, die für die Anwendung erforderlich sind.

    Universelle Windows-Projekte enthalten standardmäßig Verweise auf alle Assemblys im Zielframework. In verwalteten Projekten gibt ein schreibgeschützter Knoten unter dem Ordner Verweise im Projektmappen-Explorer den Verweis auf das gesamte Framework an. Entsprechend listet die Registerkarte Framework keine der Assemblys aus dem Framework auf und zeigt stattdessen die folgende Meldung an: „All of the Framework assemblies are already referenced. Please use the Object Browser to explore the references in the Framework. (Es wird bereits auf alle Frameworkassemblys verwiesen. Verwenden Sie den Objektkatalog, um Verweise im Framework zu durchsuchen“.

  2. Unter Erweiterungen werden alle Assemblys aufgelistet, die externe Anbieter von Komponenten und Steuerelementen selbst entwickelt haben, um das Zielframework zu erweitern. Abhängig vom Zweck der Benutzeranwendung sind diese Assemblys gegebenenfalls erforderlich.

    Erweiterungen werden ausgefüllt, indem die Assemblys aufgelistet werden, die unter den folgenden Speicherorten registriert sind:

    32-Bit-Computer:

    • 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-Bit-Computer:

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

    Und ältere Versionen des [Zielframeworkbezeichners]

    Wenn ein Projekt beispielsweise .NET Framework 4 als Ziel auf einem 32-Bit-Computer verwendet, listet Erweiterungen Assemblys auf, die unter \Microsoft.NETFramework\v4.0\AssemblyFoldersEx, \Microsoft.NETFramework\v3.5\AssemblyFoldersEx, \Microsoft.NETFramework\v3.0\AssemblyFoldersEx und \Microsoft.NETFramework\v2.0\AssemblyFoldersEx registriert sind.

Einige Komponenten in der Liste werden möglicherweise nicht angezeigt. Dies hängt von der Frameworkversion des Projekts ab. Diese Situation kann unter den folgenden Bedingungen eintreten:

  • Eine Komponente, für die eine aktuelle Frameworkversion verwendet wird, ist nicht kompatibel mit einem Projekt, für das eine frühere Version als Zielversion festgelegt wurde.

    Informationen zum Ändern der Zielversion von Framework für ein Projekt finden Sie unter Übersicht über Frameworkziele.

  • Eine Komponente, für die eine ältere Version von .NET Framework verwendet wird, ist nicht kompatibel mit einem Projekt, für das eine neuere Version von .NET Framework als Zielversion festgelegt wurde.

Weitere Informationen zur Kompatibilität zwischen .NET Framework-Versionen finden Sie unter Versionskompatibilität.

Sie sollten keine Dateiverweise auf Ausgaben eines anderen Projekts in derselben Projektmappe hinzufügen, da dies zu Kompilierungsfehlern führen kann. Erstellen Sie Verweise zwischen Projekten stattdessen im Dialogfeld Verweis hinzufügen auf der Registerkarte Projekte. Diese Vorgehensweise erleichtert die Entwicklung im Team, da die in den Projekten erstellten Klassenbibliotheken besser verwaltet werden können. Weitere Informationen finden Sie unter Problembehandlung bei fehlerhaften Verweisen.

Hinweis

Anstelle eines Projektverweises wird ein Dateiverweis erstellt, wenn die Zielversion des Frameworks eines Projekts .NET Framework 4.5 oder höher ist und die Zielversion des anderen Projekts .NET Framework 2, 3, 3.5 oder 4.0 ist. Weitere Informationen zu .NET, .NET Framework und .NET Core finden Sie unter Was ist .NET? Einführung und Übersicht.

So zeigen Sie eine Assembly im Dialogfeld "Verweis hinzufügen" an

  • Verschieben oder kopieren Sie die Assembly in einen der folgenden Speicherorte:

    • Das aktuelle Projektverzeichnis. (Sie können die Assemblys über die Registerkarte Durchsuchen suchen.)

    • Andere Projektverzeichnisse in der gleichen Projektmappe. (Sie können die Assemblys über die Registerkarte Projekte suchen.)

    - oder -

  • Legen Sie einen Registrierungsschlüssel fest, der den Speicherort der anzuzeigenden Assemblys angibt:

    Fügen Sie für ein 32-Bit-Betriebssystem einen der folgenden Registrierungsschlüssel hinzu:

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

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

    Fügen Sie für ein 64-Bit-Betriebssystem einen der folgenden Registrierungsschlüssel in einer 32-Bit-Registrierungsstruktur hinzu:

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

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

    <VersionMinimum> ist die niedrigste geltende Frameworkversion. Wenn <VersionMinimum> Version 3.0 ist, gelten in AssemblyFoldersEx angegebene Ordner für Projekte mit der Zielversion .NET Framework 3.0 und höher.

    <AssemblyLocation> ist das Verzeichnis der Assemblys, die Sie im Dialogfeld Verweis hinzufügen anzeigen möchten, z.B. C:\MyAssemblies.

    Indem der Registrierungsschlüssel unter dem HKEY_LOCAL_MACHINE-Knoten erstellt wird, können die Assemblys am angegebenen Speicherort für alle Benutzer im Dialogfeld Verweis hinzufügen angezeigt werden. Wenn der Registrierungsschlüssel unter dem HKEY_CURRENT_USER-Knoten erstellt wird, hat dies nur Einfluss auf die Einstellung für den aktuellen Benutzer.

    Öffnen Sie das Dialogfeld Verweis hinzufügen erneut. Die Assemblys sollten auf der Registerkarte .NET angezeigt werden. Stellen Sie andernfalls sicher, dass sich die Assemblys im angegebenen AssemblyLocation-Verzeichnis befinden, starten Sie Visual Studio neu, und versuchen Sie es noch einmal.

Registerkarte „Projekte“

Auf der Registerkarte Projekte sind alle kompatiblen Projekte innerhalb der aktuellen Projektmappe auf der Unterregisterkarte Projektmappe aufgeführt.

Ein Projekt kann auf ein anderes Projekt verweisen, das eine andere Frameworkversion als Ziel verwendet. Beispielsweise können Sie ein Projekt erstellen, das .NET 8.0 als Ziel verwendet, jedoch auf eine Assembly verweist, die für .NET Framework 6.0. erstellt wurde. Das .NET 6.0-Projekt kann jedoch nicht auf ein -NET Framework 8.0-Projekt verweisen. Weitere Informationen finden Sie unter Übersicht über Frameworkziele.

Registerkarte „Freigegebene Projekte“

Fügen Sie auf der Registerkarte Freigegebene Projekte im Dialogfeld „Verweis-Manager“ einen Verweis auf ein freigegebenes Projekt hinzu. Mit freigegebenen Projekten können Sie allgemeinen Code schreiben, auf den von einigen verschiedenen Anwendungsprojekten verwiesen wird.

Registerkarte „Universelles Windows“

Die Registerkarte Universelles Windows führt alle SDKs auf, die für Plattformen gelten, auf denen Windows-Betriebssysteme ausgeführt werden. Diese Registerkarte enthält zwei Untergruppen: Core und Erweiterungen.

Untergruppe „Kernspeicher“

Universelle Windows-App-Projekte verweisen standardmäßig auf das Universelles Windows SDK. Entsprechend werden in der Untergruppe Core im Verweis-Manager keine der Assemblys aus dem Universelles Windows SDK aufgelistet.

Untergruppe „Erweiterungen“

Erweiterungen listen die Benutzer-SDKs auf, die die als Ziel verwendete Windows-Plattform erweitern.

Ein SDK ist eine Auflistung von Dateien, die Visual Studio als einzelne Komponente behandelt. Auf der Registerkarte Erweiterungen werden SDKs, die sich auf das Projekt beziehen, über das das Dialogfeld „Verweis-Manager“ aufgerufen wurde, als einzelne Einträge aufgeführt. Wenn er einem Projekt hinzugefügt wird, wird der gesamte SDK-Inhalt von Visual Studio so verwendet, dass der Benutzer keine weiteren Aktionen ausführen muss, um den SDK-Inhalt in IntelliSense, in der Toolbox, in Designern, im Objektkatalog, im Build, bei der Bereitstellung, beim Debuggen und beim Packen zu nutzen.

Weitere Informationen zum Anzeigen Ihres SDK auf der Registerkarte Erweiterungen finden Sie unter Erstellen eines SDK.

Hinweis

Wenn ein Projekt auf ein SDK verweist, das von einem anderen SKD abhängt, verwendet Visual Studio das zweite SDK nur, wenn Sie manuell einen Verweis auf das zweite SDK hinzufügen. Wenn Sie ein SDK auf der Registerkarte Erweiterungen auswählen, unterstützt Sie das Dialogfeld „Verweis-Manager“ beim Erkennen von SDK-Abhängigkeiten, indem es alle Abhängigkeiten im Detailbereich auflistet.

Wenn ein Projekttyp Erweiterungen nicht unterstützt, wird diese Registerkarte nicht im Dialogfeld „Verweis-Manager“ angezeigt.

COM-Registerkarte

Die Registerkarte COM listet alle COM-Komponenten auf, die für Verweise verfügbar sind. Wenn Sie einer registrierten COM DLL mit einem internen Manifest eine Referenz hinzufügen möchten, müssen Sie die Registrierung der DLL zunächst aufheben. Andernfalls fügt Visual Studio den Assemblyverweis nicht als native DLL, sondern als ActiveX-Steuerelement hinzu.

Wenn ein Projekttyp COM nicht unterstützt, wird die Registerkarte nicht im Dialogfeld „Verweis-Manager“ angezeigt.

Durchsuchen

Mit der Schaltfläche Durchsuchen können Sie nach einer Komponente im Dateisystem suchen.

Ein Projekt kann auf eine andere Komponente verweisen, die eine andere Frameworkversion als Ziel verwendet. Sie können z. B. eine Anwendung für .NET Framework 4.7.2 erstellen, die auf eine Komponente verweist, die wiederum auf .NET Framework 4 abzielt. Weitere Informationen finden Sie unter Übersicht über Frameworkziele.

Sie sollten keine Dateiverweise auf Ausgaben eines anderen Projekts in derselben Projektmappe hinzufügen, da dies zu Kompilierungsfehlern führen könnte. Erstellen Sie Verweise zwischen Projekten stattdessen im Dialogfeld „Verweis-Manager“ auf der Registerkarte Projektmappe. Dies erleichtert die Entwicklung im Team, da die in den Projekten erstellten Klassenbibliotheken besser verwaltet werden können. Weitere Informationen finden Sie unter Problembehandlung bei fehlerhaften Verweisen.

Sie können nicht zu einem SDK navigieren und es dem Projekt hinzufügen. Sie können nur zu einer Datei navigieren (beispielsweise zu einer Assembly oder einer WINMD-Datei) und sie dem Projekt hinzufügen.

Beim Erstellen eines Dateiverweises auf ein WinMD-Element wird als Layout erwartet, dass die Dateien <Dateiname>.winmd, <Dateiname>.dll und <Dateiname>.pri alle nebeneinander platziert werden. Wenn Sie in den folgenden Szenarien auf ein WinMD verweisen, wird ein unvollständiger Satz von Dateien in das Projektausgabeverzeichnis kopiert und es treten infolgedessen Build- und Laufzeitfehler auf.

  • Native Komponente: Ein natives Projekt erstellt ein WinMD für jeden unzusammenhängenden Satz von Namespaces und eine DLL, die aus der Implementierung besteht. Die WinMDs haben ungleiche Namen. Wenn auf diese native Komponentendatei verwiesen wird, erkennt MSBuild nicht, dass die ungleich benannten WinMDs eine Komponente darstellen. Folglich werden nur die <FileName>.dll- und<FileName>.winmd-Dateien mit identischem Namen kopiert, und es treten Laufzeitfehler auf. Erstellen Sie ein Erweiterungs-SDK, um dieses Problem zu umgehen. Weitere Informationen finden Sie unter Create a Software Development Kit (Erstellen eines Software Development Kits).

  • Verarbeiten von Steuerelementen: Ein XAML-Steuerelement besteht mindestens aus einer <Dateiname>.winmd-, <Dateiname>.dll-, <Dateiname>.pri-, <XAML-Name>.xaml- und einer <Imagename>.jpg-Datei. Bei der Projekterstellung werden die Ressourcendateien, die mit dem Dateiverweis verknüpft sind, nicht in das Ausgabeverzeichnis des Projekts kopiert. Es werden nur die Dateien <FileName>.winmd, <FileName>.dll und <FileName>.pri kopiert. Ein Buildfehler wird protokolliert, der angibt, dass die Ressourcen <XamlName>.xaml und <ImageName>.jpg fehlen. Damit der Vorgang erfolgreich abgeschlossen wird, muss diese Ressourcendateien manuell in das Projektausgabeverzeichnis für Build und Debuggen/Laufzeit kopiert werden. Erstellen Sie zur Umgehung des Problems entweder ein Erweiterungs-SDK, indem Sie die Schritte unter Create a Software Development Kit (Erstellen eines Software Development Kits) ausführen, oder bearbeiten Sie die Projektdatei, und fügen Sie folgende Eigenschaft hinzu:

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

    Hinweis

    Wenn Sie die Eigenschaft hinzufügen, wird der Build ggf. langsamer ausgeführt.

Zuletzt

Assemblys, COM, Windows und Durchsuchen unterstützen jeweils eine Registerkarte Aktuell, auf der die Liste der Komponenten aufgeführt werden, die Projekten kürzlich hinzugefügt wurden.

Die Suchleiste im Dialogfeld „Verweis-Manager“ funktioniert über die Registerkarte, die sich im Fokus befindet. Wenn Sie beispielsweise „System“ in der Suchleiste eingeben, während die Registerkarte Projektmappe im Fokus ist, gibt die Suche keine Ergebnisse zurück, es sei denn, die Projektmappe umfasst einen Projektnamen, der das Wort „System“ enthält.

Entfernen eines Verweises

Sie können nicht verwendete Verweise für SDK-Formatprojekte in Visual Studio mithilfe des Menüelements Nicht verwendete Verweise entfernen entfernen.

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

Weitere Informationen finden Sie unter Entfernen nicht verwendeter Verweise.