Stellen Sie sicher, dass MSDeploy (Visual Studio) den App_Data-Ordner nicht löscht, sondern alles andere löscht
Ich bin mit Visual Studio Publish
Taste zum bereitstellen von meine website, und möchten eine andere App_Data-Ordner auf dem server. Es gibt ein Kontrollkästchen für Leave extra files on destination (do not delete)
die verhindert, dass meine App_Data-Ordner aus, immer gelöscht, aber dann wird es schließlich sammeln eine Menge von verkümmerten Dateien, wie die website ändert.
Gibt es eine Möglichkeit, um es auszuschließen, nur App_Data, wenn er alles löscht?
InformationsquelleAutor der Frage Rei Miyasaka | 2010-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es kann getan werden, beim aufrufen von msdeploy manuell - nur fügen Sie die folgenden parameter:
Sehen Web Deploy-Vorgang Einstellungen. Der Pfad ist ein regulärer Ausdruck, so ist es Recht flexibel.
Wenn Sie eine Bereitstellung mit der VS-generiert ProjectName.bereitstellen.cmd-Skript, können Sie auch diesen parameter übergeben, in der _MsDeployAdditionalFlags environment-variable (bei ausführen dieses Skripts).
Dies ist die beste, die ich mir ausgedacht habe für unsere Bedürfnisse (wir haben eine ähnliche situation wie du). Ich habe nicht versucht, Sie mit der Integration in VS die Schaltfläche "Veröffentlichen", da wir den Einsatz von der Kommandozeile aus.
EDIT:
Habe ich gelernt, ein paar Dinge über MSDeploy, da ich diese Antwort gepostet, so dass ich dachte, ich würde diese jetzt aktualisieren.
Erste von allen, der obigen Regel überspringen überspringt alle Operationen auf den passenden Pfad (App_Data). Wenn Sie mehr granulare Kontrolle erforderlich ist, eine ausführlichere syntax verfügbar ist. Zum Beispiel, zu überspringen, nur löscht (um alle zusätzlichen Dateien auf den Ziel-server, sondern fügen Sie keine neuen und update bestehender):
Diese überspringt löscht alle Dateien und alle Unterordner (mit allen Inhalten) in App_Data, aber nicht verhindern, ergänzt und aktualisiert.
Andere nützliche Sache ist, überspringen Sie können Regeln definiert werden, in der Projekt-Datei (
.csproj
), so dass diese automatisch in den.deploy.cmd
Skript erzeugt zusammen mit dem Paket. Dies macht es unnötig, Sie zu übergeben, um das Skript durch _MsDeployAdditionalFlags.Den oben überspringen, wird die Regel Hinzugefügt werden, wenn die folgenden enthalten ist, in
csproj
Datei:(die Namen
AddCustomSkipRules
undSkipDeleteAppData
sind völlig willkürlich;$(_Escaped_PackageTempDir)
soll möglicherweise benötigt, aber in der Praxis habe ich immer gesehen, wie er sich die Evaluierung auf eine leere Zeichenkette),Sehen Web Deploy: Anpassen von deployment-Paket und Wie Sie festlegen, MSDeploy-Einstellungen .csproj-Datei für mehr info.
Einer Einschränkung: dies fügt nur diejenigen Regeln, die
.deploy.cmd
Skript, so ist es nutzlos, wenn Sie wollen, verwenden Sie die grafische IIS Manager für die paketbereitstellung, da es nicht dieses script (das gleiche geht wohl für die Bereitstellung von VS, aber ich habe es nicht überprüft).InformationsquelleAutor der Antwort Jakub Januszkiewicz
Haben Sie angeschaut-Paket/Web Veröffentlichen in den Projekt-Einstellungen, da kann man sagen, es ausschließlich Dateien in das App_Data-Ordner.
InformationsquelleAutor der Antwort Bob Vale
Aus meiner Erfahrung
MsDeploySkipRules
werden nur ausgeführt, wenn die Bereitstellung von der Befehlszeile aus.Bei der Veröffentlichung von Visual Studio auf Azure (oder mit einem anderen Web Deploy-Methode), können Sie folgende Einstellungen beim Veröffentlichen.
Wenn "Entfernen zusätzliche Dateien am Ziel" aktiviert ist, wird es einen Vergleich zwischen den Dateien und Ordner, die Sie bereitstellen, und diejenigen, die auf dem server.
Gewarnt werden, können Sie Fragen, wenn Sie User Generated content, z.B. für den Upload. Dies könnte aber umgangen werden, indem das speichern diesen Ordner in einen anderen Speicherort, z.B. S3 /Azure Storage.
InformationsquelleAutor der Antwort uniquelau