2016-11-11 30 views
0

我想要完成的是在編譯期間檢測對項目的更改,以便我可以設置一個標誌,指示項目已更改。我已經想通過利用增量構建和CoreCompileDependsOn來探測C#組件何時發生變化。但是,當項目的內容文件發生變化時,這似乎不會觸發。根據我的理解,根據項目內的內容文件的設置,複製到輸出目錄(不要複製,總是複製,複製如果是新的),將會有一個指定SkipUnchangedFiles =「true」的複製任務。我不完全確定這個過程在哪裏發生,可能是Microsoft.CSharp.targets文件?有人可能會建議我如何添加一個依賴任務,只有當更新文件被複制到bin輸出時才執行該任務。一個非常簡單的例子就足夠了。MSBuild目標 - 如何檢測對.csproj內容文件的更改

+0

這可能不是你想要的,但是你能不能讓它成爲一個git repo,並用git命令運行一個腳本來查看是否有任何upstaged更改? –

+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)')"/>