安装MSDeploy软件包时如何保留现有文件?

时间:2011-12-28 12:26:57

标签: iis msdeploy

我需要保留一些由我的网站生成的文件。

是否可以使MSDeploy不删除任何文件,并仅在包中包含较新版本的文件时覆盖现有文件?

2 个答案:

答案 0 :(得分:2)

-enableRule:SkipNewerFilesRule 将跳过对具有更近写入时间的文件的更新。 -enableRule:DoNotDeleteRule 将阻止删除目标计算机上的文件,但此规则仅适用于 contentPath dirPath filePath 提供程序。我使用skipRule -skip:skipAction = Delete,objectName = dirPath,absolutePath =。* 来模拟 DoNotDeleteRule 。到目前为止,它对我来说效果很好。

答案 1 :(得分:1)

解决方案是将此代码添加到我的csproj文件中,它可以防止部署时App_Data文件夹中的任何删除和更新:

  <PropertyGroup>
    <OnBeforePackageUsingManifest>AddSkipRules</OnBeforePackageUsingManifest>
  </PropertyGroup>
  <Target Name="AddSkipRules">
    <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>
      <MsDeploySkipRules Include="SkipUpdateAppData">
        <SkipAction>Update</SkipAction>
        <ObjectName>filePath</ObjectName>
        <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath>
        <XPath>
        </XPath>
      </MsDeploySkipRules>
      <MsDeploySkipRules Include="SkipUpdateAppData">
        <SkipAction>Update</SkipAction>
        <ObjectName>dirPath</ObjectName>
        <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath>
        <XPath>
        </XPath>
      </MsDeploySkipRules>
    </ItemGroup>
  </Target>