17

Beim Hinzufügen einer DLL als Referenz zu einem ASP.Net-Projekt fügt VS2008 mehrere Dateien zum Verzeichnis bin hinzu. Wenn die DLL foo.dll heißt, fügt VS2008 foo.dll.refresh, foo.pdb und foo.xml hinzu. Ich weiß, was foo.dll ist :-), warum fügt VS2008 die anderen drei Dateien hinzu? Was machen diese drei Dateien? Kann ich sie löschen? Müssen sie in der Quellcodeverwaltung hinzugefügt werden?Visual Studio 2008 - Hinzufügen der Referenz

Antwort

20

Source Control:

Ben Straub sagte in einem Kommentar zu diesem Post: Die .dll.refresh Dateien sollten die Quellcodeverwaltung hinzugefügt werden, wenn erforderlich, während die .xml, .pdb und natürlich die .dll Dateien sollten nicht hinzugefügt.

John Rudy erklärt, wenn die .refresh Datei hinzufügen:

Warum ist das eine gute Sache (manchmal)? Nehmen wir an, Sie sind in einem Team Umgebung. Jemand überprüft Code für foo.dll, und Ihr Build-System erstellt eine neue DLL, die es in einer Dateifreigabe auf einem Server ausgibt. Ihre Aktualisierung Datei verweist auf die Server-Kopie der DLL. Das nächste Mal, wenn Sie bauen, VS wird automatisch magisch die neueste und größte Kopie dieser DLL greifen.

.xml wie David Mohundro sagte:

Die XML-Datei für XML-Kommentare und Intellisense ist.Visual Studio wird das analysieren und die XML-Kommentare anzeigen, die hinzugefügt wurden, wenn Sie Methoden in diesen DLLs aufrufen.

PDB wie David Mohundro sagte:

der PDB es für die Fehlersuche und Symbole ist. Wenn Sie eine Ausnahme davon geworfen bekommen, werden Sie in der Lage sein, Stacktraces usw. zu bekommen. Sie haben die Kontrolle über Wahl ob die PDB gebaut ist oder nicht.

.REFRESHfrom a blog post about .refresh files:

Es erzählt VS, wo aktualisieren Versionen der DLL suchen mit den gleichen Basis Namen. Sie sind Textdateien, Sie können sie öffnen und sehen den Pfad, den es verwendet.

Ihr Zweck ist es zu verhindern, dass Sie von neue Versionen selbst kopieren müssen. In VS2003 enthält die Projektdatei würde den Quellort der Referenz, aber da VS2005 nicht Verwendung Projektdateien für ASP.NET Projekte, dies ist der Ersatz für , die bestimmte Funktionalität.

+1

Die einzige Sache, die ich hinzufügen würde, ist, dass die * .dll.refresh-Dateien * in der Quellcodeverwaltung gehen sollten, anders als alles andere im bin-Verzeichnis. –

+0

Hinzugefügt zum Beitrag. – xsl

+0

In Bezug auf putting.dll.refresh in die Quellcodeverwaltung - was passiert, wenn die DLL nicht auf einem Dateiserver ist, aber lokal gespeichert wird, wobei jeder Entwickler seine eigene Kopie hat? Ich denke, das ist der Grund, warum John Rudy "manchmal" sagt :) – OregonGhost

3

foo.pdb ist die Debugger-Symboldatei für foo.dll, Sie wollen es oder Sie können keinen Haltepunkt in diesem Code setzen.

11

Die pdb ist für Debugging und Symbole da. Wenn eine Ausnahme ausgelöst wird, können Sie Stacktraces usw. abrufen. Sie können bestimmen, ob die PDB erstellt wird oder nicht. Die XML-Datei ist für XML-Kommentare und Intellisense vorhanden. Visual Studio analysiert das und zeigt die XML-Kommentare an, die beim Aufruf von Methoden in diesen DLLs hinzugefügt wurden.

Ich weiß nicht über die Aktualisierungsdatei.

2

VS2008 fügt dem bin-Verzeichnis mehrere Dateien hinzu [...] Müssen sie in der Quellcodeverwaltung hinzugefügt werden?

Nichts im bin-Verzeichnis muss der Quellcodeverwaltung hinzugefügt werden. Wenn Sie ein Projekt zum ersten Mal einchecken, ignorieren Sie zunächst die Verzeichnisse bin und obj. Ja, Sie können diese Dateien löschen, aber Visual Studio erstellt sie neu.

13

Die Aktualisierungsdatei (da noch niemand darauf trifft!) Beschreibt, woher die DLL kam. Dies ist für automatische Refresh-Referenzen; Wenn Sie einen vollständigen Build erstellen, sucht VS in diesem Pfad und kopiert diese Version der DLL.

Warum ist das (manchmal) eine gute Sache? Angenommen, Sie befinden sich in einer Teamumgebung. Jemand checkt Code für foo.dll ein, und Ihr Build-System erstellt eine neue DLL und gibt sie in einer Dateifreigabe auf einem Server aus. Ihre Aktualisierungsdatei verweist auf diese Serverkopie der DLL. Wenn Sie das nächste Mal erstellen, greift VS automatisch die neueste und beste Kopie dieser DLL.

+0

Sehr cool, wusste nicht darüber. Vielen Dank! –