0

我正在尝试为我的 Web 应用程序项目创建一个自动构建。我们使用标准的 CMS 项目并调整了其中的一些部分。只有经过调整的文件是我们项目的一部分,但我想在部署包中包含完整的 CMS。

所以我创建了一个自定义.targets文件来定义一个任务以在构建过程中包含 CMS 文件:

<Target Name="GetCMSFiles">
  <ItemGroup>
    <!-- Include the CMS files into the package -->
    <_CMSFiles Include="..\packages\CMSFiles\**\*" />

    <FilesForPackagingFromProject  Include="%(_CMSFiles.Identity)">
      <DestinationRelativePath>
        %(RecursiveDir)%(Filename)%(Extension)
      </DestinationRelativePath>
    </FilesForPackagingFromProject>
  </ItemGroup>
</Target>

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
  <!-- VS2010 -->
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    GetCMSFiles;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForPackageDependsOn>
  <!-- VS2012 -->
  <CopyAllFilesToSingleFolderForMsdeployDependsOn>
    GetCMSFiles;
    $(CopyAllFilesToSingleFolderForMsdeployDependsOn);
  </CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup> 

这工作正常,但问题是我们项目中的文件没有被复制到部署文件夹。所以换句话说,它不会覆盖在我用GetCMSFiles任务复制它们之后已经存在的文件。

我看到它的方式有两种选择:

  1. 强制CopyAllFilesToSingleFolder覆盖部署文件夹中的任何现有文件。

  2. 在任务中有一个条件,即GetCMSFiles仅包含项目中尚不存在的文件。

但我不确定这是否可行以及如何实现。有任何想法吗?

4

0 回答 0