MSDeploy überspringt Regeln bei der Verwendung von MSBuild PublishProfile mit Visual Studio 2012
Ich versuche, WebDeploy zum veröffentlichen einer website mithilfe von benutzerdefinierten MSDeploy überspringen Regeln und ein Veröffentlichungsprofil gespeichert in Visual Studio 2012.
Habe ich die publish-Profil arbeiten mit der Befehlszeile, aber die skip-Regel zu überspringen, löschen eines Ordners nicht funktioniert.
Ich habe eine ErrorLog
Unterordner meiner web-app mit einem web.config
Datei in die richtige Ordner-Berechtigungen. Ohne skip-Regeln, die ErrorLog
Ordner und web.config
Datei veröffentlicht werden, normalerweise werden aber alle vorhandenen Fehler-log-Dateien in den Ordner auf dem server gelöscht werden, auf "veröffentlichen".
Fehler mit <SkipAction>Delete</SkipAction>
Wenn ich einen custom skip-Regel zu meiner wpp.targets
- Datei, die skip-Regel wird nicht mehr akzeptieren, dass ein Wert für die <SkipAction>
element. Wenn ich <SkipAction>Delete</SkipAction>
bekomme ich die folgende Fehlermeldung:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4377,5): error : Web deployment task failed. (Unrecognized skip directive 'skipaction'. Must be one of the following: "objectName," "keyAttribute," "absolutePath," "xPath," "attributes.<name>.") [C:\inetpub\wwwroot\My.Website\My.Website\My.Website.csproj]
Wenn ich einfach weglassen, das <SkipAction>
element, das ErrorLog
Ordner wird gelöscht, wenn Sie sonst veröffentlicht werden.
Wenn ich <SkipAction></SkipAction>
wieder, die ErrorLog
Ordner gelöscht veröffentlichen.
Wenn ich <KeyAttribute>Delete</KeyAttribute>
dann ErrorLog
und die web.config
- Datei veröffentlicht, in der Regel.
Mein Verständnis ist, dass, um benutzerdefinierte Regeln überspringen, müssen Sie rufen Sie MSBuild von der Befehlszeile aus, statt Sie zu veröffentlichen innerhalb von VS 2012. Ich würde immer noch gerne meine gespeicherten publishing-Profilen, aber, und ich verstehe, dass ist jetzt möglich, bei VS 2012.
Meine MSBuild-Befehlszeile:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.Website.sln /p:Configuration=Release;DeployOnBuild=true;PublishProfile="Test Server - Web Deploy"
Meine.Website.wpp.Ziele:
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="AddCustomSkipRules">
<Message Text="Adding Custom Skip Rules" />
<ItemGroup>
<MsDeploySkipRules Include="SkipErrorLogFolder1">
<SkipAction></SkipAction>
<KeyAttribute>Delete</KeyAttribute>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_Escaped_WPPAllFilesInSingleFolder)\\ErrorLog$</AbsolutePath>
<XPath></XPath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
</Project>
Meine MSBuild-Ausgabe zeigt die benutzerdefinierte Regel überspringen, aber immer noch das löschen der Dateien:
GenerateMsdeployManifestFiles:
Generate source manifest file for Web Deploy package/publish ...
AddCustomSkipRules:
Adding Custom Skip Rules
MSDeployPublish:
Start Web Deploy Publish the Application/package to http://testserver.domain.com/MSDEPLOYAGENTSERVICE ...
Starting Web deployment task from source: manifest(C:\inetpub\wwwroot\My.Website\My.Website\obj\Release\Package\My.Website.SourceManifest.xml) to Destination: auto().
Deleting filePath (MyWeb/ErrorLog\test.txt).
Updating setAcl (MyWeb/).
Updating setAcl (MyWeb/).
Updating filePath (MyWeb/ErrorLog\Web.config).
Updating filePath (MyWeb/Web.config).
Updating setAcl (MyWeb/).
Updating setAcl (MyWeb/).
Successfully executed Web deployment task.
Publish is successfully deployed.
InformationsquelleAutor der Frage nekno | 2012-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit: Es stellt sich heraus, Sie haben Recht: die skip-Richtlinie wird ignoriert, wenn die Ausführung von Visual Studio.
Glücklicherweise gibt es einen workaround.
Was Sie wollen, ist dies:
Darüber hinaus müssen Sie verhindern, dass VS von der Nutzung der UI-Aufgabe (die angezeigt wird, enthält einen Fehler in Bezug auf die skip-Regeln). Sie können dies tun, indem er die folgenden in Ihrem wpp.Ziele oder pubxml:
Ich habe getestet dieses lokal und ich kann bestätigen, dass es funktioniert wie gewünscht: die zusätzliche Datei ist aktualisiert, aber keine Dateien in dem Verzeichnis werden gelöscht.
InformationsquelleAutor der Antwort Richard Szalay
Referenz, hier ist meine komplette
.wpp.targets
Datei mit dem Sie arbeiten skip-Regel zu überspringen, löschen derErrorLog
Ordner und benutzerdefinierte ACLs, um dieErrorLog
Ordner beschreibbar auf dem server.Als von VS 2012 Update 3 funktioniert dies nur, wenn die Veröffentlichung mit MSBuild von der Befehlszeile aus mit der
DeployOnBuild=true;PublishProfile="Test Server - Web Deploy"
- Optionen übergeben, um MSBuild. Diese nicht arbeiten, wenn die Veröffentlichung innerhalb von VS.InformationsquelleAutor der Antwort nekno
Ein weiterer Ansatz ist zu vermeiden, die
SkipAction
tag, ich habe erfolgreich verwendet dieses setup direkt von VS 2013:Einzige Einschränkung soweit ich sagen kann, ist, dass, ignoriert die beiden update -, delete-und add-Operationen.
InformationsquelleAutor der Antwort Hauge
Nach vielen Stunden der Suche durch das Netz. ich habe diese Datei als {myprojectname}.wpp.Ziele im Rahmen des Stammordners der site. es funktioniert, wenn die Veröffentlichung mit visual studio. der media-Ordner wird ignoriert. ich benutze VS 2010.
InformationsquelleAutor der Antwort Sanjay
Ich denke, das problem ist in falscher absoluter Pfad. Sollte es einen regulären Ausdruck, Datei oder Ordner. so sollte es maskiert werden. Unten ist die Probe, die für mich gearbeitet (ich wollte das überspringen Entfernung app_offline.htm die Anlieferung Teil der größeren Bereitstellung)
InformationsquelleAutor der Antwort Koman
Funktioniert für mich: Meine Volle prepprod.pubxml Datei in meinem App_Data/PublishProfiles-Ordner in meinem web-Lösung. Web Deploy nicht mehr löscht Dateien aus den cachefiles Ordner auf webdeploy von VS 2015. Die ersten PropertyGroup automatisch generiert wurde, mithilfe der web publishing gui in Visual Studio. Ich fügte hinzu, die zweite PropertyGroup, und der Ziel-Abschnitt vom vorherigen Kommentare.
InformationsquelleAutor der Antwort Avi G
Dieser arbeitete für mich in vs 2015, website-Projekt Typ:
InformationsquelleAutor der Antwort Sgedda