MSDeploy sauter des règles lors de l'utilisation de MSBuild PublishProfile avec Visual Studio 2012

Je suis en train d'utiliser WebDeploy de publier un site web à l'aide personnalisée MSDeploy sauter des règles et un profil de publication enregistrées dans Visual Studio 2012.

J'ai le profil de publication de travailler à partir de la ligne de commande, mais le saut de la règle de sauter la suppression d'un dossier n'est pas de travail.

J'ai un ErrorLog sous-dossier dans mon application web avec un web.config fichier à l'intérieur pour régler correctement les autorisations de dossier. Sans ignorer les règles, les ErrorLog dossier et web.config fichier sont publiés normalement, mais tous les fichiers journaux des erreurs dans le dossier sur le serveur sont supprimés sur publier.


Erreur avec <SkipAction>Delete</SkipAction>

Quand j'ai ajouter un saut de règle à mon wpp.targets fichier, le saut de la règle est de ne plus accepter une valeur pour le <SkipAction> élément. Si j'ai mis <SkipAction>Delete</SkipAction>, j'obtiens l'erreur suivante:

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]

Si j'ai tout simplement omettre le <SkipAction> élément, le ErrorLog dossier est supprimé quand il devrait normalement être publié.

Si j'ai mis <SkipAction></SkipAction>, encore une fois, la ErrorLog dossier est supprimé sur publier.

Si j'ai mis <KeyAttribute>Delete</KeyAttribute>, puis ErrorLog et la web.config fichier sont publiés normalement.

Ma compréhension est que pour une utilisation personnalisée sauter des règles, vous devez appeler MSBuild à partir de la ligne de commande au lieu de la publication de l'intérieur VS 2012. Je voudrais encore utiliser ma sauvé la publication de profils, cependant, et je comprends que c'est maintenant possible de VS 2012.


Mon MSBuild ligne de commande:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.Website.sln /p:Configuration=Release;DeployOnBuild=true;PublishProfile="Test Server - Web Deploy"

Mon.Site web.wpp.objectifs:

<?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>

Ma sortie MSBuild montrant la coutume ignorer la règle, mais encore de supprimer les fichiers:

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 nekno | 2012-09-25