2011-12-28 55 views
3

我需要保留一些文件,由我的網站生成。如何在安裝MSDeploy軟件包時保留現有文件?

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

+1

它應該如何知道包中的文件何時「更新」?如果文件不同,它們將被更新。你想簡單地跳過一個已知的文件夾或文件嗎? – 2011-12-28 19:28:05

+0

@Sayed Ibrahim Hashimi,它應該比較文件日期。但只寫出以前不存在的文件也可以。 – user626528 2011-12-29 06:42:51

回答

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> 
+0

我收到一個錯誤消息,我看到其他人沒有得到解決方案。 無法識別的跳過指令'skipaction'。必須是以下其中一項:「objectName」,「keyAttribute」,「absolutePath」,「xPath」,「屬性。」。 任何想法如何解決這個問題? – Chris 2012-06-21 21:35:20

+0

@Chris,你能發佈完整的錯誤信息嗎? – user626528 2012-08-08 03:40:40

1

-enableRule:SkipNewerFilesRule將跳過更新到有更多的文件最近的寫入時間。 -enableRule:DoNotDeleteRule將阻止在目標計算機上的文件的刪除,但這個規則只與的contentPathdirPath文件路徑供應商工作。我已經使用skip規則-skip:skipAction = Delete,objectName = dirPath,absolutePath =。*來模擬DoNotDeleteRule。到目前爲止,它對我來說效果很好。

相關問題