我正在使用許多控制臺應用程序,并且它們都使用一個共享項目。TFS中的分支如下所示:-branchname --scripts --sharedlib --applications --application1 --application2 etc.有數百個應用程序都在sharedlib中引用該項目。而且我們沒有從中引用.dll,因為某些應用程序團隊希望自定義共享項目。因此,要使所有應用程序正常工作,我已將TFS分支映射到本地,并打開了解決方案,添加了一個現有項目,并添加了共享項目.csproj作為參考(在Visual Studio 2015中)。我可以在應用程序的.sln和.csproj文件中看到對共享項目的引用,如下所示:..\..\sharedlib\commonproject\commonproject.csproj這意味著它從應用程序解決方案文件夾上升了兩個級別,找到了sharedlib文件夾,然后找到了.csproj文件。它在本地工作正常。但是,當我在TFS 2015中為應用程序創建構建定義時,這一切都破滅了。因為TFS構建“獲取源”步驟將共享庫文件夾帶到.sln文件夾級別,因為TFS中的存儲庫映射是針對應用程序文件夾和共享庫文件夾進行的,因此分別映射到$(build.sourcesDirectory)和$(build.sorcesDirectory) \ sharedlib路徑。因此,當它查看.sln文件并嘗試向上兩級查找共享的項目.csproj文件時,它根本無法做到這一點,因為在構建服務器中,通用的.csproj文件從.sln文件復制到的位置向下一級: (sharedlib\commonproject\commonproject.csproj)因此,如果我編輯.sln和.csproj文件以刪除路徑上的兩個級別并將其簡單地放置為(sharedlib\commonproject\commonproject.csproj),則它將建立在服務器上,但是甚至不會在本地加載,因為路徑在本地不正確。因此,我似乎無法使其同時在本地服務器和TFS服務器上運行。有什么辦法可以解決這個問題?我想到的一種可能的解決方案是,在開始構建之前,將共享項目復制到構建服務器中的兩個級別上,并保持.sln和.csproj中的路徑不變。但是,如何在TFS中設計該步驟呢?任何解決方案將不勝感激。
2 回答

RISEBY
TA貢獻1856條經驗 獲得超5個贊
“一些應用程序團隊希望自定義共享項目?!?nbsp;他們還可以基于共享項目生成dll的多個版本,并使用Nuget來管理/導入所需的版本。
如果您的團隊堅持使用項目引用而不是dll引用。建議您使用相對路徑參考而不是絕對路徑。
由于它是應用程序解決方案文件夾中的兩個級別,因此您可以嘗試使用
$(SolutionDir)\sharedlib\commonproject\commonproject.csproj

有只小跳蛙
TA貢獻1824條經驗 獲得超8個贊
您可以在構建定義中的“構建代理文件夾”上配置項目的本地路徑。我更喜歡的簡單方法是在構建定義中將應用程序項目的路徑下調兩個級別,如下所示,然后在VS Build步驟中相應地更新路徑:
Application: $(build.sourcesDirectory)\app\app Sharedlib: $(build.sorcesDirectory)\sharedlib
- 2 回答
- 0 關注
- 179 瀏覽
添加回答
舉報
0/150
提交
取消