Excluindo uma pasta da implantação e interrompendo a remoção adicional de arquivos

5

Usando o Web Deploy em um servidor Windows 2012, se uma implantação tiver uma pasta cheia de conteúdo gerado pelo usuário, excluo-a da publicação no arquivo .pubxml com:

<ExcludeFoldersFromDeployment>somefoldername</ExcludeFoldersFromDeployment>

Se você usar a opção Remover arquivos adicionais no destino para implantar, os arquivos nessa pasta ainda serão removidos do servidor ativo.

<SkipExtraFilesOnServer>False</SkipExtraFilesOnServer>

Existe alguma maneira de tornar o processo de implantação, incluindo a limpeza do servidor ativo, ignorar uma pasta especificada? Eu gosto de saber que o processo de publicação também remove arquivos apagados ou modificados do servidor, mas eliminar pastas inteiras de dados gerados pelo usuário é obviamente um problema!

    
por Polynomial 14.11.2013 / 22:53

2 respostas

1

O seguinte é o meu arquivo CustomProfile.pubxml que eu uso para deixar minha pasta conhecida pelo LetsEncrypt, assim como outras pastas sozinhas. Adicione os itens abaixo em negrito para excluir arquivos de processamento no servidor, como conteúdo gerado pelo usuário. Isso só foi testado no Visual Studio 2017, com o Server 2016.

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. 
You can customize the behavior of this process by editing this MSBuild file.
In order to learn more about this please visit 
https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developermsbuild/2003">

<PropertyGroup>
  <WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>

<PropertyGroup>
  <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
  <LastUsedPlatform>Any CPU</LastUsedPlatform>
  <SiteUrlToLaunchAfterPublish>https://www.vinceworks.com</SiteUrlToLaunchAfterPublish>
  <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
  <ExcludeApp_Data>True</ExcludeApp_Data>
  <MSDeployServiceURL>https://www.vinceworks.com</MSDeployServiceURL>
  <DeployIisAppPath>VinceWorks</DeployIisAppPath>
  <RemoteSitePhysicalPath />
  <SkipExtraFilesOnServer>False</SkipExtraFilesOnServer>
  <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
  <EnableMSDeployBackup>True</EnableMSDeployBackup>
  <UserName>Vince</UserName>
  <_SavePWD>True</_SavePWD>
  <PrecompileBeforePublish>True</PrecompileBeforePublish>
  <EnableUpdateable>True</EnableUpdateable>
  <DebugSymbols>False</DebugSymbols>
  <WDPMergeOption>DonotMerge</WDPMergeOption>
</PropertyGroup>

<ItemGroup>
  <MsDeploySkipRules Include="CustomSkipFolder">
    <ObjectName>dirPath</ObjectName>
    <AbsolutePath>VinceWorks\\.well-known</AbsolutePath><!--Regular Expression here-->
  </MsDeploySkipRules>
</ItemGroup>

<ItemGroup>
  <MsDeploySkipRules Include="CustomSkipFolder">
    <ObjectName>dirPath</ObjectName>
    <AbsolutePath>VinceWorks\Media</AbsolutePath>
  </MsDeploySkipRules>
</ItemGroup>

<ItemGroup>
  <MsDeploySkipRules Include="CustomSkipFolder">
    <ObjectName>dirPath</ObjectName>
    <AbsolutePath>\Views</AbsolutePath>
  </MsDeploySkipRules>
</ItemGroup>

</Project>
    
por 14.08.2017 / 01:01
0

Algo parecido com isso fará isso:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <LastUsedBuildConfiguration>Local</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <MSDeployServiceURL>localhost</MSDeployServiceURL>
    <DeployIisAppPath>AppPath</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>False</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>InProc</MSDeployPublishMethod>
    <EnableMSDeployBackup>False</EnableMSDeployBackup>
    <UserName />
    <_SavePWD>False</_SavePWD>
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
  </PropertyGroup>

  <PropertyGroup>
    <UseMsDeployExe>true</UseMsDeployExe>
  </PropertyGroup>

  <Target Name="AddCustomSkipRules">
    <Message Text="Adding Custom Skip Rules" />
    <ItemGroup>
      <MsDeploySkipRules Include="SkipFilesFolder">
        <SkipAction>Delete</SkipAction>
        <ObjectName>filePath</ObjectName>
        <AbsolutePath>YourFolderNameHere</AbsolutePath>
      </MsDeploySkipRules>
    </ItemGroup>
  </Target>

</Project>

Eu tenho um post detalhado aqui:

Usando o MsDeploy, publique o perfil .pubxml para criar uma estrutura de pastas vazia no IIS e pule a exclusão dele com MsDeploySkipRules

    
por 22.05.2014 / 18:38