如何在发布期间跳过文件夹上的删除?

时间:2016-02-24 06:42:47

标签: asp.net-mvc visual-studio msdeploy

我无法实现,因此Visual Studio中的Publish不会删除服务器网站上的App_Data文件夹。但我还希望它能继续删除所有文件(除了那个文件夹)以保持目录"清洁"。

我在csproj,.pubxml中试过这个。和它的改动(一个不是OnBeforePackageUsingManifest,但是我的东西)

<PropertyGroup>
  <OnBeforePackageUsingManifest>AddCustomSkipRules</OnBeforePackageUsingManifest>
</PropertyGroup>
<Target Name="AddCustomSkipRules">
  <ItemGroup>
    <MsDeploySkipRules Include="SkipDeleteAppData">
      <SkipAction>Delete</SkipAction>
      <ObjectName>filePath</ObjectName>
      <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath>
      <XPath>
      </XPath>
    </MsDeploySkipRules>
    <MsDeploySkipRules Include="SkipDeleteAppData">
      <SkipAction>Delete</SkipAction>
      <ObjectName>dirPath</ObjectName>
      <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath>
      <XPath>
      </XPath>
    </MsDeploySkipRules>
  </ItemGroup>
</Target>

我甚至可以使用&#34; SkipAction =删除&#34;多数民众赞成无法这样做,因为无法识别删除。

有没有办法做到这一点?最好是从.pubxml,但csproj也会这样做。不必处理msdeploy命令行。

使用visual studio 2015。

2 个答案:

答案 0 :(得分:1)

请在此处寻找在Visual Studio 2019发布期间保持“认证网络” .wellknown \ acme-challenge文件夹web.config的方法。以为我会分享。

在pubxml文件中添加以下内容将导致部署过程在发布过程中不会删除web.config。

<ItemGroup>
  <MsDeploySkipRules Include="CustomSkipFile">
    <ObjectName>filePath</ObjectName>
    <AbsolutePath>.well-known\\acme-challenge\\web.config</AbsolutePath>
  </MsDeploySkipRules>
</ItemGroup>

希望这对某人有帮助!

答案 1 :(得分:0)

这(最近)SO answer提到MsDeploySkipRules设置仅在通过命令行发布时才有效。

从VS IDE进行Web部署时,建议检查以下选项:

  • 删除目的地的其他文件
  • 从App_Data文件夹中排除文件

Web Publishing Profile