我正在尝试为我的 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
仅包含项目中尚不存在的文件。
但我不确定这是否可行以及如何实现。有任何想法吗?