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
タスクでコピーした後に既に存在するファイルを上書きしません。
私の見方では、2つのオプションがあります。
CopyAllFilesToSingleFolder
配置フォルダ内の既存のファイルを強制的に上書きします。GetCMSFiles
プロジェクトにまだ存在しないファイルのみを含めるようにタスクに条件を設定します。
しかし、これが可能かどうか、またこれを達成する方法はわかりません。何か案は?