2010-08-02 54 views
1

有沒有什麼辦法,使用MSBuild或其他,檢測哪些項目在當前版本中有變化,並更新AssemblyInfo.cs中的FileAssemblyVersion屬性只爲這些項目?MSBuild任務獲取只更新項目的更新FileAssemblyVersion

+0

你的問題很有用對於MSBuild而言,你真正要問的是「我如何以編程方式識別一段時間內的一系列變化」,這完全取決於你的源代碼管理服務器,所以如果不知道你想要的源代碼控制系統是什麼,那麼沒有人能夠回答這個問題。從中查詢此信息。 – 2010-08-02 19:13:48

+0

我正在使用TFS 2008.我的天空餡餅以爲會沿着這些線條: 在我調用完成sln編譯的目標之前,我調用了一個MSBuild自定義任務,該任務爲任何具有文件的項目更新FileAssemblyVersion其中發生了變化,這反過來引發了當前的構建。很明顯,我們在這裏討論的是持續集成設置。 – 2010-08-02 22:09:40

回答

0

假設您已經設置了增量[get和]編譯,下一步就是掛入MSBuild序列。看看FrameworkDir\Microsoft.Common.Targets。問題是,事情不會被設置爲以這種方式工作 - 事實上有_TimestampBeforeCompile_TimeStampAfterCompile步驟,這只是表明如果某件事將要編譯,您不能確定先驗。雖然你理論上可以在CoreCompile之前[例如在Microsoft.CSharp.targets]中掛鉤,但問題是你需要有和它一樣的Inputs以確定它是否會發生,將意味着大量的剪切和粘貼,並與系統文件保持同步。在_ComputeNonExistentFileProperty目標頂部的評論中提到了另一件需要警惕的事情。

因此,除了對序列進行一些非常深入的修改外(例如,如果您的自定義_TimeStampAfterCompile檢測到編譯發生,則強制進行第二次編譯的'post build'位,我會說有。不容易,推薦或支持的方式

說了這麼多,該AssemblyFileVersion(你指的FileAssemblyVersion,這犯規有:P)是很容易編譯作爲它只是一個資源後,修改 - 你會發現該工具但我假設你真的在談論這件事情和AssemblyVersion,不能在事後以相同的方式調整。