Dot-Net

Visual Studio 中的 HintPath 與 ReferencePath

  • December 10, 2009

HintPath.csproj 文件中的ReferencePathin和文件中的 in 到底有什麼區別.csproj.user?我們正在嘗試遵守一個約定,其中依賴 DLL 位於“發布”svn repo 中,並且所有項目都指向特定版本。由於不同的開發者有不同的文件夾結構,相對引用不起作用,所以我們想出了一個方案,使用一個指向特定開發者的發布文件夾的環境變數來創建一個絕對引用。所以添加引用後,我們手動編輯項目文件,使用環境變數將引用更改為絕對路徑。

我注意到這可以同時使用HintPath和來完成ReferencePath,但我能發現它們之間的唯一區別HintPath是在建構時和ReferencePath項目載入到 IDE 時解決。我不太確定這樣做的後果是什麼。我注意到 VS 有時會重寫.csproj.user並且我必須重寫ReferencePath,但我不確定是什麼觸發了它。

我聽說最好不要簽入.csproj.user文件,因為它是特定於使用者的,所以我想以此為目標,但我也聽說如果HintPath-specified DLL 不是“保證”載入相同的 DLL 例如位於項目的輸出目錄中。對此有什麼想法嗎?

根據這個 MSDN 部落格:https ://blogs.msdn.microsoft.com/manishagarwal/2005/09/28/resolving-file-references-in-team-build-part-2/

建構時有組件的搜尋順序。搜尋順序如下:

  • 目前項目中的文件 - 由 ${CandidateAssemblyFiles} 指示。
  • 來自 .user/targets 文件的 $(ReferencePath) 屬性。
  • %(HintPath) 元數據由參考項指示。
  • 目標框架目錄。
  • 在使用 AssemblyFoldersEx 註冊的系統資料庫中找到的目錄。
  • 已註冊的程序集文件夾,由 ${AssemblyFolders} 指示。
  • $(OutputPath) 或 $(OutDir)
  • 廣汽

因此,如果HintPath找到了所需的程序集,但可以使用ReferencePath找到備用程序集,它將更喜歡使用ReferencePath的程序集而不是HintPath的程序集。

引用自:https://stackoverflow.com/questions/1882038