我公司目前正在構建非常大的解決方案,我們將其用作主解決方案。開發人員可以將他們的項目添加到主解決方案中,讓他們進入夜間構建。但是,有時項目會引用不在解決方案中的項目,這會導致一些奇怪的問題。失敗MSBuild解決方案構建如果解決方案缺失參考項目
如果檢測到任何外部項目,我想解決方案構建失敗。是否有可以設置爲執行此操作的MSBuild屬性?
我公司目前正在構建非常大的解決方案,我們將其用作主解決方案。開發人員可以將他們的項目添加到主解決方案中,讓他們進入夜間構建。但是,有時項目會引用不在解決方案中的項目,這會導致一些奇怪的問題。失敗MSBuild解決方案構建如果解決方案缺失參考項目
如果檢測到任何外部項目,我想解決方案構建失敗。是否有可以設置爲執行此操作的MSBuild屬性?
請參閱this answer獲取.sln中每個項目的項目引用列表。
使用該代碼,您可以根據引用以及.sln中的內容找出是否存在任何「外部」項目。
該代碼本身可以在custom MSBuild task中執行,這將在檢測到任何外部項目時失敗。
要使用此任務,您需要以某種方式從.csproj/.proj中運行它。一種簡單的方法是先構建一個新項目,並覆蓋構建目標以運行新任務。
另一種方法是創建一個包裝.proj首先在.sln上執行MSBuild(用一個虛擬目標)來生成.metaproj,然後執行自定義任務,然後運行實際任務來構建。 SLN。由奇怪的問題,
我已經創建了該任務。我找不到任何其他方式。我把這個標記爲答案,因爲我找不到自動的方式來做到這一點。 –
;你的意思是構建失敗?如果不包含被引用的項目,我很難看到構建如何成功 –
引用的項目仍在構建,但使用通常爲Debug/AnyCPU的默認配置/平臺。我們在Release中構建,這意味着這個項目是在Debug中構建的,它可能沒有正確的設置。這是沒有失敗的奇怪。 –