我一直在摔跤這幾天,經過大量搜索後,我找不到應該在的路徑。如何在MSBUILD中重寫.NET中引用的CopyLocal(Private)設置
我想要做的是建立一個MSBUILD項目,它將構建我們的整個.NET應用程序(8個解決方案的常量,也許有250個項目在它們之間分離),並且從各個項目文件覆蓋到許多設置爲我自己製作一個調試版本。
具體而言,我想要構建我們的發佈配置,優化關閉並生成完整的調試信息/ pdbs。另外,爲了減少我們目前超長的構建時間,我想爲每個項目的每個參考「複製本地」(或者在實際的proj文件xml中爲private)。我可以很容易地覆蓋項目級別的屬性(甚至可以使用/ p從MSBuild命令行執行此操作),但我無法弄清楚的是如何覆蓋屬性上參考。我嘗試了幾個在StackOverflow和Web上看到的東西,但沒有任何解決方案。
我可以通過更改Microsoft.Common.targets來完成我想要的操作,註釋掉_CopyFilesMarkedCopyLocal目標中的代碼會完全跳過這些文件的複製。但我不想改變我的全局配置,並在所有情況下都這樣做。我創建了我自己的替代目標文件 - 如果我改變單個項目文件指向它的話,這個文件就可以工作 - 但我無法弄清楚如何指定這個文件在頂層使用(我的.proj文件只是構建全部8種解決方案)。如果我能以某種方式覆蓋頂層的_CopyFilesMarkedCopyLocal目標,這樣就好了,這樣如果MS更改了默認目標文件,我的版本就不會搞砸了,但我無法弄清楚如何使它成爲可能。
最好的可能是如果有一種方法可以重寫參考級別屬性,比如可以投影級別屬性,而不必重寫/覆蓋構建目標的東西 - 但我沒有找到任何信息表明這是可能的。
在此先感謝您的幫助。
P.S.實際上我不可能只瀏覽所有的項目文件並改變它們;我需要一個解決方案,使現有代碼保持原樣。
設置CopyLocal =假可以在部署時出現不同的問題。看到我的博客文章「不要改變」複製本地「項目引用爲false,除非明白子序列。」(http://geekswithblogs.net/mnf/archive/2012/12/09/do-not-change-copy-local -project-references-to-false-unless.aspx) – 2012-12-09 04:23:26
不回答你的問題,但希望MS可以解決這個本地:https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/ 13280400-improve-visual-studio-build-performance-for-large – Mark 2016-04-12 18:21:08