Как сохранить существующие файлы при установке пакета MSDeploy? - PullRequest
3 голосов
/ 28 декабря 2011

Мне нужно сохранить некоторые файлы, сгенерированные моим сайтом.

Можно ли заставить MSDeploy не удалять какие-либо файлы и перезаписывать существующие файлы только в том случае, если пакет содержит более новую версию файла?

Ответы [ 2 ]

2 голосов
/ 11 октября 2012

-enableRule: SkipNewerFilesRule будет пропускать обновления для файлов с более поздним временем записи. -enableRule: DoNotDeleteRule заблокирует удаление файлов на конечном компьютере, но это правило работает только с contentPath , dirPath и filePath провайдеры.Я использовал skipRule -skip: skipAction = Delete, objectName = dirPath, absolutePath =. * для имитации DoNotDeleteRule .До сих пор это работало хорошо для меня.

1 голос
/ 03 января 2012

Решением было добавить этот код в мой файл 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>
...