3 回答

TA貢獻(xiàn)1811條經(jīng)驗 獲得超6個贊
重建=清理+構(gòu)建(通常)
值得注意的細(xì)節(jié):
對于多項目解決方案,“重建解決方案”對每個項目執(zhí)行“清理”,然后執(zhí)行“構(gòu)建”(可能并行執(zhí)行)。而“干凈解決方案”之后是“構(gòu)建解決方案”,則首先清理所有項目(可能并行),然后清理所有項目(可能并行)。當(dāng)項目間的依賴關(guān)系發(fā)揮作用時,事件排序的這種差異會變得很明顯。
這三個動作均對應(yīng)于MSBuild目標(biāo)。因此,項目可以覆蓋“重建”操作以執(zhí)行完全不同的操作。

TA貢獻(xiàn)1835條經(jīng)驗 獲得超7個贊
即99%的時間重建=清理+重建。
但是不能保證它們是相同的。這3個操作(重建,構(gòu)建,清除)代表不同的MSBuild目標(biāo)。每個項目文件都可以覆蓋其中的每個文件以執(zhí)行自定義操作。因此,在啟動clean + build(或完全刪除它們)之前,某人完全有可能重寫rebuild來執(zhí)行多個操作。
非常極端的情況,但由于評論討論而指出。

TA貢獻(xiàn)1906條經(jīng)驗 獲得超10個贊
1每個項目,重建項目=(清理項目+生成項目)。
2個解決方案,重建Sln = foreach項目(Clean項目+ Build項目)!= Clean Sln + Build Sln
假設(shè)您有一個Sln,包含proj1,proj2和proj3。
重建Sln =(清潔proj1->構(gòu)建Proj1)+(清潔proj2->構(gòu)建Proj2)+(清潔proj3->構(gòu)建Proj3)
清潔Sln +構(gòu)建Sln =(清潔proj1 +清潔proj2 +清潔proj3)->(構(gòu)建proj1 +構(gòu)建proj2 +構(gòu)建proj3)
->表示串行,+表示并發(fā)
因此,如果您未正確配置項目依賴項而提交了許多代碼更改,就有可能會導(dǎo)致Rebuild Sln導(dǎo)致某些項目鏈接到一個過時的lib,因為不能保證所有構(gòu)建都經(jīng)過全部清理。(在這種情況下,Clean Sln + Build Sln將給出鏈接錯誤,并立即通知您,而不是為您提供行為異常的應(yīng)用程序)
添加回答
舉報