簡體   English   中英

TFS項目可以互相參考嗎?

[英]Can TFS Projects Reference Each Other?

我最近開始在一個企業軟件環境中工作,其中有數百種不同的應用程序都局限於他們自己的“孤島”。 我的任務之一是嘗試對事物進行標准化,第一次嘗試將是標准事件記錄。 目前,該公司的“標准”是“每個人都應該使用企業庫進行日志記錄”。 實際上,這轉化為不同的開發人員在不同的項目中以不同的方式實現不同的日志記錄,並且大部分時間都使用該庫。

為此,我正在尋找抽象出“公司標准”內部開發的界面背后的實際日志工具。 我們的想法是將“標准”的重點從實施工具轉移到如何使用它。 然后,應用程序將使用內部庫而不關心幕后工具(除了app.config部分,盡管我已經知道如何使用log4net進行抽象)。

但是,我現在面臨的一個問題是所有這些應用程序都在單獨的TFS項目中。 如果我創建一個包含用於日志記錄的公共庫的項目,那么其他項目是否有任何方法可以引用它? 我不想在每個項目中分發庫,因為它們會很快失去同步。

如果TFS不能這樣做,有沒有人有任何其他建議?

傑夫的建議與我們推薦的最接近。 將內部API視為一個單獨的團隊項目,它將其他項目作為客戶端提供服務。 這些項目提供了積壓和發布周期。 您可以根據需要擁有CI,Beta和Release版本。 消費/消費者項目然后使用他們選擇的構建,因為他們可以適當地適應他們自己的發布周期。 因為您的TFS構建將推送到可用的放置位置,所以人們會拉動而不是推送新版本。 Pull正在選擇, 這些組件應該在消耗項目中簽入並進行版本控制 這與你真正的第三方組裝沒有什么不同,事實上你應該以同樣的方式考慮這些。

當消費應用程序需要或帶寬升級到較新版本的內部組件時,它們會拉動。

TFS沒有“共享”文件夾的概念(例如我們使用Visual SourceSafe)。 工作區為您提供了一些靈活性,但只要您嘗試將同一個“共享”文件夾映射到多個項目時就會出現故障。 我們只想到幾個可以解決您具體情況的選項:

  1. 將Logging項目分支到需要它的每個團隊項目中。 當您對Logging項目進行更改時,您需要A)將Logging項目更改合並到已分支到的每個項目(“push”)或B)請求每個項目團隊使用Logging更改執行合並以獲取最新更改(“拉”)。

  2. 作為Logging項目的自動構建過程的一部分,將二進制文件發布到一個眾所周知的位置。 讓每個需要Logging二進制文件的項目都設置一個預構建事件,將最新版本的Logging二進制文件復制到他們的解決方案中- 或 -而不是預構建事件,您也可以讓自動構建過程獲取當前的Logging二進制文件並將其添加到解決方案中(根據需要執行檢查/輸入)。

可能還有其他解決方案(通常有),但這就是我們想到的所有問題。

希望這可以幫助。

我們所取得的成功是創建一個單獨的TFS項目,其中包含一個包含日志記錄等庫的項目的解決方案。 構建此解決方案時,我們將程序集部署到服務器上的共享驅動器上。 當我們需要使用其中一個庫時,我們只需通過瀏覽到服務器上的位置來添加對程序集的引用。 如果您需要對其中一個庫進行更改,您可以隨時進行更改。 下一次使用該程序集的項目之一構建時,將使用新版本進行更新。

在TFS 2018年

如果您的解決方案包含位於另一個TFS 2018項目存儲庫下的項目(.csproj),您仍然可以通過以下兩個步驟引用這些DLL:

  1. 引用包括必須相對於同一個根。 工作區源映射必須模仿源代碼管理中的相同結構。 即。 (在使用項目引用的.csproj文件中)
    <ProjectReference Include="..\..\..\OtherTFSProject\src\ProjectDLL\ProjectDLL.csproj">
      <Project>{e8ed9a74-a9e9-47de-ab08-0b554a950606}</Project>
      <Name>ProjectDLL</Name>
    </ProjectReference>
  1. 在TFS2018中,創建構建時 ,必須在構建的“ 獲取源 ”階段將工作區映射添加到其他TFS項目存儲庫。 我建議您在最低的文件夾中添加映射,因為構建將編譯您選擇的目錄下的所有項目。 在上面的例子中,你會選擇
$\OtherTFSProject\src\ProjectDLL

我沒有找到此問題的在線文檔。 我希望這有幫助!

只需將所有核心庫部署到GAC,即可在應用程序更新時從GAC獲取最新信息。 您可以使用命令輕松將GAC推送到所有“服務器/工作站”。 只記得保持DLL中所有Public方法的簽名不變,否則開發人員在更改庫時會出錯(如果他們引用該方法)

暫無
暫無

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

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