Referenzieren von DLL aus GAC in Visual Studio

8

Also habe ich mich umgesehen und versucht, ein paar Beiträge dazu zu finden, und es gibt viele, aber keine, die meine spezifische Frage (die ich finden konnte) ansprechen.

Ich versuche, einige DLLs in meinem Projekt hinzuzufügen, aber nur wenige kommen von:

%Vor%

und was ich erwarte das sollte von GAC kommen.

Bitte schlagen Sie mir die beste Vorgehensweise vor, um die DLLs in Visual Studio zu referenzieren.

    
Haseeb Akhtar 15.02.2013, 09:18
quelle

2 Antworten

23

So funktioniert das nicht. Wenn Sie Projekt + Referenz hinzufügen verwenden, fügen Sie immer eine Referenzbaugruppe hinzu. Dies ist nie eine Assembly aus dem GAC. Der GAC ist ein Laufzeitimplementierungsdetail, es wird nur verwendet, um Assemblys bereitzustellen, wenn Ihr Programm ausgeführt wird, niemals, wenn es erstellt wird.

Es ist sehr wichtig, dass es so funktioniert, dass der Inhalt des GAC auf Ihrem Computer nicht mit dem Inhalt des GAC auf dem Computer Ihres Benutzers übereinstimmt. Viele DLL Hell-Gegenmaßnahmen sind vorhanden, um sicherzustellen, dass die Zuordnung Ihrer Referenzbaugruppe zum GAC-Inhalt des Benutzers mit einer guten Diagnose durchgeführt wird, wenn der Computer des Benutzers nicht ordnungsgemäß für die Ausführung Ihres Programms konfiguriert ist.

Dies ist auch der Grund, warum Sie die GAC-Ordner nicht direkt betrachten können, wenn Sie mit Explorer zu c: \ windows \ assembly navigieren. Ein Shell-Extension-Handler blendet die Details aus, um zu verhindern, dass Sie einen Fehler machen, wie das Hinzufügen einer GAC-ed-Assembly als Referenzassembly. Derselbe Erweiterungshandler wird nicht für die .NET 4-Assemblys installiert. Sie können c: \ windows \ microsoft.net \ assembly anzeigen und die Struktur des GAC anzeigen. Gehen Sie nicht davon aus, dass es jetzt in Ordnung ist, Referenzen von dort hinzuzufügen, Referenz-Assemblies sind in .NET 4 noch wichtiger, sie unterscheiden sich vollständig von den Laufzeit-Assemblys.

Die Referenz-Assembly, die in C: \ Windows \ Microsoft.NET \ Framework \ v3.5 gespeichert ist, ist völlig normal. Dies ist das Ausgangsverzeichnis für .NET 3.5-spezifische Referenz-Assemblys wie System.Core.dll. Für .NET 4-Projekte werden die Referenz-Assemblies in c: \ program files \ reference assemblies gespeichert. Sie sollten nicht auf C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 verweisen. Überprüfen Sie diese Antwort Sehen Sie, welche Art von nicht diagnostizierbarem Elend verursacht werden kann, wenn Sie nicht die richtigen Referenzbaugruppen verwenden.

    
Hans Passant 15.02.2013, 12:28
quelle
1

Diese Assemblies sind Assemblys von .NET Framework 3.5. Der Assemblycache befindet sich unter

%Vor%

Sie können das .NET Framework 3.5 verteilen (scrollen Sie am Ende der Seite nach oben) der Seite) zusammen mit Ihrem Projekt. Auch wenn Sie VS-Setup-Projekte verwenden, können Sie einfach die Eigenschaftenseite verwenden, um darauf Bezug zu nehmen.

Um diese Baugruppen zu referenzieren, klicken Sie einfach mit der rechten Maustaste auf "Referenzen" & gt; "Add Reference" und wählen Sie die Assembly auf der Registerkarte .NET. Informationen zum Verweisen auf GAC-Baugruppen finden Sie unter diese Frage .

    
Carsten 15.02.2013 10:33
quelle

Tags und Links