2016-11-11 10 views
0

私が達成しようとしているのは、プロジェクトの変更がビルド中に検出されているため、プロジェクトが変更されたことを示すフラグを設定できます。私はすでにインクリメンタルビルドとCoreCompileDependsOnを利用してC#コンポーネントがいつ変更されたかを検出する方法を考え出しました。しかし、これは、プロジェクトのコンテンツファイルが変更されたときには起動しないようです。私が理解しているところでは、プロジェクト内のコンテンツファイルの設定に応じて、SkipUnchangedFiles = "true"を指定するコピータスクがあります。出力ディレクトリにコピーします(コピーしない、常にコピーする、新しい場合コピーする)。私は、このプロセスがどこに起こるのかは完全にはわかりません。おそらくMicrosoft.CSharp.targetsファイルですか?誰かが、更新されたファイルがbin出力にコピーされた場合にのみ実行する依存タスクをどのように追加するかについてアドバイスしてもらえますか?非常に単純な例で十分です。MSBuildターゲット - .csprojコンテンツファイルの変更を検出する方法

+0

これはあなたが望むものではないかもしれません、これはセット「新しい場合はコピー」を持っているすべてのコンテンツファイルは、ビルド時に変更された場合のみ、プロジェクトの名前でテキストファイルを作成しますgit repoを作ってgitコマンドでスクリプトを実行して、荒れ狂った変更があるかどうかを調べることはできませんか? –

+0

残念ながら、これはTFSのみを使用する会社にあります。また、TFSでも同じことをすることができますが、VCSを使用して変更を識別したくない場合は、変更をプロジェクトにマップして製品名を識別できるようにする必要があります。 MSBuildターゲットを使用すると、プロジェクト内の何かが変更された場合、私はすでにプロジェクトに関する詳細を持っています。 –

+0

私はMSのビルドについての知識はあまり良くありませんが、私の他の邪魔な気持ちはハリやガルプを見ているように感じます。 –

答えて

2

私はそれを理解しました。

 <Target Name="ContentFilesUpdated" AfterTargets="_CopyOutOfDateSourceItemsToOutputDirectory" Condition="'$(IsDesktopBuild)' == 'False'"> 
    <WriteLinesToFile 
     File="@(ProductChangeFile)" 
     Lines="$(ProjectName)" 
     Overwrite="false" 
     Encoding="Unicode" Condition="!Exists('@(ProductChangeFile)')"/>   

関連する問題