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タスクでコピーした後に既に存在するファイルを上書きしません。

私の見方では、2つのオプションがあります。

  1. CopyAllFilesToSingleFolder配置フォルダ内の既存のファイルを強制的に上書きします。

  2. GetCMSFilesプロジェクトにまだ存在しないファイルのみを含めるようにタスクに条件を設定します。

しかし、これが可能かどうか、またこれを達成する方法はわかりません。何か案は?

4

0 に答える 0