2009-05-15 13 views
5

Ich habe eine ASP.NET-Anwendung, die auf einer externen Assembly beruht, die nicht im GAC enthalten ist. Die App verfügt über eine .refresh-Datei, die die Assembly beim Kompilieren der App in das bin-Verzeichnis kopiert.Wie aktualisieren Sie Referenzen in ASP.NET-Anwendungen ohne Visual Studio?

Wenn ich die App auf einem Produktionsserver installiere (indem ich die App-Dateien in ein virtuelles Verzeichnis kopiere), wird das bin-Verzeichnis nicht automatisch durch das Vorhandensein der .refresh-Datei aktualisiert, wie ich dachte. Ich habe versucht, das aspnet_compiler-Tool zu verwenden, aber das funktioniert nicht, da es erwartet, dass die Assemblys bereits im bin-Verzeichnis sind.

Wie bekomme ich .NET, um das Bin-Verzeichnis der App ohne Visual Studio zu aktualisieren?

Antwort

1

Die .refresh Dateien gibt es einfach so, dass VS weiß, dass es den Überblick über die Originale behalten sollte, und wenn sie sich geändert haben, kopieren Sie ein neue Version in den Ordner/bin. Sie sind nur Textdateien mit einem Pfad zum Original - das modifizierte Datum wird für den Vergleich verwendet.

Wenn Sie sagen:

Wenn ich die App auf einem Produktionsserver installieren (indem Sie die App-Dateien in ein virtuelles Verzeichnis kopiert) wird das Verzeichnis ist nicht automatisch aktualisiert.

Was genau meinst du? Kopieren Sie nicht auch den Inhalt des bin-Verzeichnisses auf den Produktionsserver? Sie müssen alle abhängigen Assemblys mit der Anwendung bereitstellen.

+0

Nein, ich kopiere nicht den Inhalt des Verzeichnisses bin. Ich hatte angenommen, dass, da die referenzierte Assembly separat installiert wird, diese auch auf dem Produktionsrechner installiert werden müsste und diese Installation automatisch in das Verzeichnis bin kopiert würde. Also, ich denke, das bedeutet, dass, wenn ich die Baugruppe auch kopiere, ich mich nicht darum kümmern muss, sie überhaupt auf der Produktionsmaschine zu installieren. Es wird nur ein Teil der App-Installation sein. – Ferruccio

+0

Nun, um ehrlich zu sein, das hängt davon ab, was der Installer macht - wenn er nur einige Dateien entpackt (Beispiele, Hilfe und DLLs), dann nein, du müsstest den Produktionsrechner nicht installieren, sondern einfach die referenzierten DLLs kopieren . Wenn es andere Konfigurationstools ausführt, müssen Sie sicherstellen, dass diese Schritte auf dem Produktionscomputer abgeschlossen sind.Aber im Allgemeinen, wenn Sie es lokal mit der DLL im Ordner bin ausführen können, sollten Sie in der Lage sein, sie einfach in die Produktion zu kopieren. –

0

Löschen des Cache-Verzeichnis von asp.net helfen könnten:

C:\WINDOWS\Microsoft.NET\Framework\ 
FRAMEWORK_VERSION\Temporary ASP.NET Files\YOUR_APP_NAME 
+0

Nö bauen. hilft nicht. – Ferruccio

0

Löschen Sie diese .refresh-Dateien.

Machen Sie ein einfaches Build-Skript (mit was auch immer Sie cmd ein, NAnt, Rechen, psake wollen ...), dass:

  • kopiert die Dateien auf Ihre asp.net app Ordner
  • bauen Sie asp. Netz App.

Oder Sie können Ihre CSPROJ Datei bearbeiten und fügen Sie so etwas wie:

<ProjectExtensions> 
    <PropertyGroup> 
    <PreBuildEvent>copy c:\path\to\dll\files $(ProjectDir)$(OutDir)</PreBuildEvent> 
    </PropertyGroup> 
</ProjectExtensions> 

Dies wird eine Pre Build Aktion hinzufügen, die Ihre DLL-Dateien mit dem Ausgang dir Ihrer asp kopiert. Netz App. Sie müssen es mit MsBuild

Verwandte Themen