回答
沒有指定,但我猜你指到Visual Studio?
項目引用和文件引用之間的主要區別是實時更新是否可用。在項目參考中,您將能夠通過Intellisense等項目立即在其他項目中看到一個項目中的編輯效果。因此,如果您例如添加名爲Foo的類,則此類型將立即顯示在任何具有該項目上的項目引用的項目中的intellisense中。
另一方面,文件引用只能看到磁盤上存在的更改。必須執行編譯並將位寫入磁盤以查看更改。
通常,最好使用項目參考。
需要考慮的另一個角度是項目的相關語言。如果兩個項目中的語言都相同,則Project to Project引用最有用。如果語言不同,他們往往被視爲比文件引用更像項目引用。
最後,所有引用都是文件引用,Project Reference只是一個Visual Studio功能,它正在引用正在使用您的解決方案構建的文件,因此無論何時您構建新構建,引用是自動更新而不去你的副本&粘貼文件
我去文件參考(即使當我有源代碼或自己創建程序集)的原因是當特定程序集沒有改變很多(說每半年一次)。只是爲了削減一些建設時間。另外,有些項目會自動增加版本號(例如,嘗試在解決方案中包含AjaxControlToolkit項目)。
我認爲這是可怕的,因爲它使它很容易意外地使用陳舊的相關庫代碼。 – 2009-06-10 05:56:13
我只是通過這個去...
我們收到來自供應商,約53個不同VS2005 C#解決方案文件創建63名不同項目的.dll,所有這一切都是由一個獨立的,商業應用調用。
所有項目都包含對其他項目的dll的文件引用。
這種方法的問題很好:解決方案間的依賴關係幾乎不可能解決,涉及到「findstr」命令的lot; VS的「查找定義」功能找不到文件引用dll的源代碼,它只會顯示dll中函數的定義;因爲更改而重新構建時容易出錯,麻煩並涉及開放許多不同的解決方案來重新構建整個dll集。
我花了數週將53個不同的解決方案文件合併爲一個,然後花費更多時間將所有文件依賴項更改爲項目依賴項。現在,當你「找到定義」時,你將被帶到一個源文件。現在,當您更改低級別項目時,所有相關項目都將在構建(一個)解決方案時生成。
我做了一些額外的更改,但最方便的是將所有獨立項目的構建目錄設置爲solutiondir/bin。這樣,所有的DLL最終都集中在一個地方。
哦,是的:我還爲所有引用的項目dll設置了'copy local'爲'no'。這樣,每個DLL出現在解決方案目錄/bin中,因爲項目已建好,並且在下一個要構建的項目中找到。
我們現在唯一的問題是,如果我改變一個項目作爲另一個項目的數據源使用Windows窗體,那麼Windows窗體將不會在Designer中打開,直到我重新構建作爲數據源的項目爲表格。一個小的,小的價格來支付項目參考的所有好處。另外,我必須從svn結帳時創建解決方案,因爲dll不在svn中。在上述情況下,數據源.dll不存在供Designer查找。
也許,更好地使用csproj中的最小解決方案和postbuild事件,以便在SharedLibs文件夾中複製dll和pdb。該文件夾位於TFS(svn,源代碼管理)中。 – Kiquenet 2010-09-19 21:31:34
重建項目時,項目引用它的所有項目也會自動重建。
這不適用於文件引用。
實際上這兩種方法都使用文件引用。該項目的參考是有用的VS知道什麼時候被引用VS項目應建立
小號
我我們專門設置了我們的開發團隊使用File引用而非Th一個項目在大多數情況下是可以參考的: 我們在一個高度完整的領域運營。因此,每個不是的組件直接這部分工作(即在其他項目中共享的內容)不應該被改變。 因此,我們的想法是(在理想的非綠地工作中),我們從網絡上的發佈區域獲取經過測試,授權的已知版本的子組件,並將它們包含在解決方案的組件區域中。
這是爲了簡化維護和測試,因爲它應該避免許多類似的版本激增,所有版本都有不同的版本或SVN編號。
第二個原因(可能是我的C/C++背景)是我想知道我使用的是全部Debug或所有發行版本。在.NET項目中你不能輕鬆做到這一點。我們構建出一個components \ $ configuration $目錄,然後進行構建後步驟,從components \ $ configuration $複製到上面的目錄中。 所有文件引用都是在組件目錄中的文件,意思是(我相信)我們確實在整個鏈中都有調試和發佈版本。
如果您發貨到外部,我認爲您需要考慮外出的DLL需要與所有用戶相同,否則您有可能無法在以後輕鬆調試問題(配置從源代碼跟蹤到提供的可執行文件)
我遇到了多個項目的問題,其中文件引用只是不切它。陳舊的參考文獻會導致buku問題。微軟建議,我們只使用必要的文件引用:
RE:「實際上這兩種方法都使用了文件引用,項目引用對於VS知道什麼時候應該構建引用VS項目很有用......」問題是,沒有項目引用,外部引用不會重建,除版本衝突之外,簽名將是相同的,並且只有通過反覆試驗才能檢測到深度較深的兩個庫。 – CZahrobsky 2011-12-05 23:35:33
一個錯誤(C1083)切換到引用時(&去除相對包括)是我有「頭沒有找到。」我:
-
偏好
- 包括目錄:
../../src/module
- 源代碼:
#include "file.h"
修復的相對路徑,它的工作:
#include "module/file.h"
- 1. TFSBuild /的MSBuild和項目參考VS文件參考
- 2. C++參考shared_ptr vs參考
- 3. MSBuild:有條件的構造(項目參考|文件參考)
- 4. 參考庫項目
- 5. VS2010 - 項目參考
- 6. VB6項目參考
- 7. 項目引用VS二進制參考
- 8. 參考VS依賴
- 9. 指針VS參考
- 10. JQuery值vs參考
- 11. VSCode多個項目參考
- 12. '僞造'項目參考?
- 13. Eclipse項目參考C
- 14. 項目之間的參考
- 15. 項目參考問題
- 16. Visual Studio 2008項目參考
- 17. ILMerge和項目參考
- 18. 如何確定VSLangProj.Reference是否是項目參考或文件參考?
- 19. EJS參考文件
- 20. VS 2010多項目模板:項目間參考
- 21. 項目參考與DLL參考 - 哪個更好?
- 22. WCF服務參考和參考同一個項目
- 23. CFURL參考文檔目錄
- 24. IS參考參考在C++?
- 25. 乳膠參考書目參考文獻去頁面
- 26. Pandoc引用沒有追加參考文獻參考書目
- 27. VS 2003參考問題
- 28. 類VS參考結構
- 29. mongo schema(嵌入vs參考)
- 30. 事件參考
還「去定義」(F12)在2之間有所不同 - 你可能無法做到到F12並去定義所有的文件引用 - 或者至少多數民衆贊成在我所經歷的 – 2016-05-16 11:34:40