2011-12-28 31 views
3

私のサイトで生成されたファイルを保存する必要があります。MSDeployパッケージのインストール時に既存のファイルを保存するにはどうすればよいですか?

MSDeployでファイルを削除しないで、パッケージに新しいバージョンのファイルが含まれている場合にのみ既存のファイルを上書きすることはできますか?

+1

パッケージ内のファイルが「より新しい」ときをどのように知ることになっていますか?ファイルが異なる場合、ファイルは更新されます。単に既知のフォルダやファイルをスキップしますか? –

+0

@Sayed Ibrahim Hashimi、ファイル日付を比較することになっています。しかし、以前に存在しなかったファイルだけを書くこともOKです。 – user626528

答えて

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"、 "attributes。"のいずれかである必要があります。 これを修正する方法はありますか? – Chris

+0

@Chris、完全なエラーメッセージを投稿できますか? – user626528

1

-enableRule:SkipNewerFilesRuleは、より多くを持っているファイルへの更新をスキップします最近の書き込み時間。 -enableRule:DoNotDeleteRule先のコンピュータ上のファイルの削除をブロックしますが、このルールは唯一てcontentPathdirPathの、およびfilePathにプロバイダで動作します。私はをスキップしました:skip:skipAction =削除、objectName = dirPath、絶対パス=。*DoNotDeleteRuleをシミュレートしました。これまで私にとってはうまくいっています。

関連する問題