MSDeploy ignorar regras ao usar o MSBuild PublishProfile com o Visual Studio 2012
Eu estou tentando usar o WebDeploy para publicar um site usando regras de ignorar MSDeploy personalizadas e um perfil de publicação salvo no Visual Studio 2012.
Eu tenho o perfil de publicação trabalhando a partir da linha de comando, mas a regra de pular para pular a exclusão de uma pasta não está funcionando.
eu tenho umErrorLog
subpasta no meu aplicativo da web com umweb.config
arquivo dentro dele para definir as permissões de pasta adequadas. Sem quaisquer regras de salto, oErrorLog
pasta eweb.config
Os arquivos são publicados normalmente, mas todos os arquivos de log de erros existentes na pasta no servidor são excluídos na publicação.
Erro com<SkipAction>Delete</SkipAction>
Quando adiciono uma regra de salto personalizado ao meuwpp.targets
arquivo, a regra de salto não está mais aceitando um valor para o<SkipAction>
elemento. Se eu definir<SkipAction>Delete</SkipAction>
, Estou tendo o erro a seguir:
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]
Se eu simplesmente omitir o<SkipAction>
elemento, oErrorLog
a pasta é excluída quando normalmente seria publicada.
Se eu definir<SkipAction></SkipAction>
mais uma vezErrorLog
pasta é excluída na publicação.
Se eu definir<KeyAttribute>Delete</KeyAttribute>
, entãoErrorLog
e aweb.config
arquivo são publicados normalmente.
Meu entendimento é que, para usar regras de salto personalizadas, você precisa chamar o MSBuild da linha de comando em vez de publicar no VS 2012. Eu ainda gostaria de usar meus perfis de publicação salvos, e entendo que agora é possível de VS 2012.
Minha linha de comando do MSBuild:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.Website.sln /p:Configuration=Release;DeployOnBuild=true;PublishProfile="Test Server - Web Deploy"
My.Website.wpp.targets:
<?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>
Minha saída do MSBuild mostrando a regra de ignorar personalizada, mas ainda excluindo os arquivos:
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.