簡體   English   中英

安裝 MSDeploy 包時如何保留現有文件?

[英]How do I preserve existing files when installing an MSDeploy package?

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

是否可以讓 MSDeploy 不刪除任何文件,並且僅當包包含較新版本的文件時才覆蓋現有文件?

-enableRule:SkipNewerFilesRule將跳過對具有較近寫入時間的文件的更新。 -enableRule:DoNotDeleteRule將阻止刪除目標計算機上的文件,但此規則僅適用於contentPathdirPathfilePath提供程序。 我使用了 skipRule -skip:skipAction=Delete,objectName=dirPath,absolutePath=.*來模擬DoNotDeleteRule 到目前為止,它對我來說效果很好。

解決方案是將此代碼添加到我的 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM