2011-07-20 28 views
0

我有2個獨立的解決方案,2個項目如何防止從的MSBuild如果依賴已經改變

一個由DLL參考其它參考資料建設項目。

例:由DLL

在項目B MyprojectB MyProjectA參考,我的代碼無關的行添加到類文件(即,字符串ABC =「ABC」) 我重建項目B,所述ProjectB.dll被放到ProjectA所引用的某個目錄

我對ProjectA做了任何更改並嘗試「構建」projectA,它會構建並更新DLL。我不希望這種情況發生。 如果我再次在projectA上運行構建,構建會被跳過,因爲沒有進行任何更改。

對不直接影響來自項目A的調用的依賴項的更改不應影響msbuild實際上構建ProjectA的事實。這對我們的版本/簽名造成了問題,我們不得不再次向客戶端提供所有文件。

換句話說,如果我對基礎項目進行小改動,我應該只需要構建該基礎項目,並將DLL重新部署到客戶端,但所有項目都會因爲更改而重新生成依賴。這讓人感到非常沮喪,對於慢速連接的人來說,如果我們必須對基礎項目進行小改動,則必須再次下載所有內容。

+0

您能詳細解釋版本/簽名問題嗎?重建不應該影響簽名。我的直覺告訴我,msbuild表現正確。我擔心的是,如果您確實禁用了這種行爲,那麼當您更改項目B中的某些內容時,您會遇到問題,這對項目A –

+0

james有影響,因爲它會影響簽名的原因是因爲模糊處理正在進行。並且它在每個版本上都會發生變化 – moca

+0

看起來像是發生了什麼是msbuild將.cs文件和依賴項DLL(輸入)與輸出(dll)進行比較,如果任何輸入文件比輸出新,它會自動生成。對微軟來說這是一個可怕的假設。 – moca

回答

1

您應該將項目B重構爲2個類庫(DLL)。一個包含項目A的東西的DLL(proj-B-core.dll)實際上取決於...和包含項目A不關心的東西的第二個DLL(prod-B-misc.dll)。將項目A更改爲引用proj-B-core.dll,您將獲得所需的行爲。

最佳, /JHD

0

我不相信這是一個的MSBuild問題。我建議調查你的版本控制方法,但是沒有更多的信息我不能真正評論。有一件事可以幫助在這個特定的情況下將使用policy redirect。當只有1個程序集引用發生變化時,這應該會阻止您必須重新分發整個應用程序。您可以重新分配新程序集和策略文件。

相關問題