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

Schreibe einen Kommentar