我想要完成的是在构建期间检测项目的更改,以便我可以设置一个标志,指示项目已更改。我已经弄清楚如何利用增量构建和CoreCompileDependsOn检测C#组件何时发生了变化。但是,当项目的内容文件发生更改时,这似乎不会触发。根据我的理解,会有一个复制任务在某处指定SkipUnchangedFiles =“true”,具体取决于项目中内容文件的设置,复制到输出目录(不复制,始终复制,复制如果更新)。我不完全确定这个过程发生在哪里,可能是Microsoft.CSharp.targets文件?有人可以建议我如何添加一个仅在更新的文件被复制到bin输出时执行的依赖任务?一个非常简单的例子就足够了。
答案 0 :(得分:2)
我明白了。只有在构建期间更改了“Copy If Newer”设置的任何内容文件时,这将写入一个带有项目名称的文本文件:
<Target Name="ContentFilesUpdated" AfterTargets="_CopyOutOfDateSourceItemsToOutputDirectory" Condition="'$(IsDesktopBuild)' == 'False'">
<WriteLinesToFile
File="@(ProductChangeFile)"
Lines="$(ProjectName)"
Overwrite="false"
Encoding="Unicode" Condition="!Exists('@(ProductChangeFile)')"/>