我需要保留一些由我的网站生成的文件。
是否可以使MSDeploy不删除任何文件,并仅在包中包含较新版本的文件时覆盖现有文件?
答案 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>