![](/img/trans.png)
[英]How to create MSdeploy Package using MSBuild for all files in this project folder
[英]How do I preserve existing files when installing an MSDeploy package?
我需要保留一些由我的網站生成的文件。
是否可以讓 MSDeploy 不刪除任何文件,並且僅當包包含較新版本的文件時才覆蓋現有文件?
-enableRule:SkipNewerFilesRule將跳過對具有較近寫入時間的文件的更新。 -enableRule:DoNotDeleteRule將阻止刪除目標計算機上的文件,但此規則僅適用於contentPath 、 dirPath和filePath提供程序。 我使用了 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.