In unserem ASP.Net-Webprojekt scheinen einige Aktualisierungsdateien mit einigen der von uns verwendeten DLLs von Drittanbietern verknüpft zu sein. Irgendeine Idee, was sie sind und wie / wann sie erstellt werden?
83
Diese Dateien geben den Pfad zu der betreffenden DLL an, um Visual Studio mitzuteilen, wo sie zu finden sind (Sie können dies überprüfen, wenn Sie sie in einem Texteditor öffnen). Sie werden jedes Mal erstellt, wenn Sie dem Projekt einen neuen Verweis hinzufügen.
Sie werden normalerweise angezeigt, wenn Sie einen Projekttyp verwenden, der keine Standard-Visual Studio-Projektdatei erstellt, da dort normalerweise Pfade zu referenzierten DLLs angezeigt werden.
Von hier aus :
quelle
Einige Informationen zu den Aktualisierungsdateien nach Versuch und Irrtum. Diese Experimente wurden mit Visual Studio 2012 durchgeführt. Die Referenzen wurden einem C # asp.net-Webprojekt hinzugefügt.
Wie bereits erwähnt, wird durch Hinzufügen eines Verweises auf eine Assembly über das Durchsuchen eine Aktualisierungsdatei hinzugefügt. Wenn jedoch zusätzliche abhängige DLLs für die explizit hinzugefügte DLL in dem Verzeichnis vorhanden sind, aus dem Sie hinzufügen, werden die abhängigen DLLs ebenfalls implizit hinzugefügt, jedoch ohne .refresh-Dateien! So füge ich beispielsweise einen Verweis auf "MyAssembly.dll" hinzu. Ich erhalte auch "MyAssembly.dll.refresh". Wenn es jedoch eine Assembly "MyDependentAssembly.dll" gibt, von der "MyAssembly.dll" abhängt, erhalte ich keine "MyDependentAssembly.dll.refresh". Was also passiert, ist, dass die eine Assembly aktualisiert wird, aber nicht ihre Abhängigen! Sie müssen die DLLs einzeln in umgekehrter Reihenfolge der Abhängigkeit hinzufügen, damit die Dinge besser funktionieren.
Einige andere Dinge, auf die Sie achten sollten. Durch Hinzufügen von "MyAssembly.dll" wird auch "MyAssembly.pdb" hinzugefügt, falls vorhanden. Auch "MyAssembly.xml" wird zu den Referenzen hinzugefügt, falls vorhanden. Diese beiden Dateien werden auch aktualisiert, wenn "MyAssembly.dll.refresh" vorhanden ist.
Aber wann entscheidet sich Visual Studio, nach Aktualisierungsdateien zu suchen? Denken Sie jetzt daran, dass in einem Webprojekt in der Projektdatei nicht speziell auf DLLs verwiesen wird, auf die verwiesen wird. Sie finden die in der Projektdatei aufgeführten DLLs nicht nur als Projektabhängigkeiten. Wann erfolgt die Aktualisierung?
Die Antwort auf die Aktualisierung erfolgt während eines Builds, wenn die Assembly, auf die verwiesen wird, geladen werden muss. Dies bedeutet, dass beim Erstellen einer vorgefertigten aktualisierbaren Website möglicherweise nicht alle DLLs abgerufen werden. Ich hatte immer eine DLL, die nicht aktualisiert werden konnte, und dann wurde mir klar, dass sie nur in einer .ascx-Datei verwendet wurde. Durch Deaktivieren des Kontrollkästchens "Aktualisieren vorkompilierter Site zulassen" auf der Projektseite von MSBuild Options wurde dieses Problem für mich behoben.
Wenn Sie jedoch referenzierte DLLs hinzufügen, die durch Reflektion in Ihren Code geladen werden, werden diese nicht durch eine Referenz aktualisiert. Sie müssen Build-Ereignisse verwenden, um sie in das bin-Verzeichnis zu kopieren.
quelle