簡體   English   中英

TFS/msbuild,構建項目引用

[英]TFS / msbuild, building project references

我正在努力讓 Azure Devops Server 2019(本地)來構建我的復雜項目設置。

我有多種解決方案可以構建各種 BizTalk 應用程序。 其中一些解決方案引用了其他解決方案/存儲庫中的一些項目。 這在 Visual Studio 中工作正常(假設每個人都將他們的存儲庫命名為默認值,他們這樣做)。

為了自動化這個構建,我創建了一個按順序構建每個解決方案的多階段構建管道。

雖然解決方案 1 將成功構建,但對於解決方案 2,msbuild 任務將不會引用已作為解決方案中的項目引用包含在內的項目的輸出。

這似乎是因為這些引用的項目沒有標記為構建 - 因為如果沒有它們反過來在主要解決方案中引用其他項目等,它們將無法構建自己。

所有內容捆綁到一個大的超級解決方案文件中是不可行的。

我想讓 msbuild /reference 已經在上一步中構建的項目,因為它們被包含為項目引用。 但是 msbuild 是一個復雜的野獸,我無法找到實現這一目標的方法。

我想要實現的目標甚至可能實現嗎? 有人能指出我正確的方向嗎?

TFS/msbuild,構建項目引用

這是一個關於不同 Repos 中項目引用的已知問題,但不幸的是它沒有最佳答案。 因為最好的解決方案始終是擁有一個存儲庫。

Git 將文件視為整個存儲庫的內容,而不是文件的集合。 因此,這很難做到。 作為解決方法,您可以考慮使用Git SubmodulesGit Subtree

從這里檢查詳細信息:

Git 和 Visual Studio 項目參考

另外,我們現在使用的解決方案是將共享代碼放在NuGet包中。 然后,您可以使用來自任何存儲庫的包,並且您不必執行任何不穩定的 git 設置並保持訪問控制。

希望這可以幫助。

我終於重新審視了這個並做了一些更多的實驗。

我可以看到,讓 TFS/msbuild 引用其他項目輸出的唯一方法是在要構建的解決方案構建配置中標記它們。

現在,如果您在 Visual Studio 中執行此操作並嘗試構建包含來自另一個解決方案的項目的解決方案,那么如果尚未完全構建先前的解決方案(因為尚未構建其他鏈式依賴項),則構建將失敗。 這是有道理的。

但是使用 TFS/msbuild,構建將成功。 據我所知,有一些魔法正在發生,以確保以某種方式解決所有解決方案之間的依賴關系。 這可能是運氣,也可能是特定行為(到目前為止它對我有用)。

問題當然是它與 Visual Studio 不兼容。 所以我在每個解決方案文件中都有一個額外的“構建”定義設置,所有項目都設置為構建。

這似乎是管理許多相互關聯的解決方案而沒有一個大的解決方案的最簡單方法。

似乎 msbuild 已更改為僅引用項目引用,並且您可以通過在運行 msbuild 時將屬性OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration設置為 true 來將其還原為引用所有引用。

來源: https : //stackoverflow.com/a/25144169

已經確認這有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM