我正在尝试为我的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
任务复制它们之后,它不会覆盖已经存在的文件。
我看到的方式有两种选择:
强制CopyAllFilesToSingleFolder
覆盖部署文件夹中的所有现有文件。
GetCMSFiles
任务中的条件只包含项目中尚不存在的文件。
但我不确定这是否可行以及如何实现这一目标。有什么想法吗?