2010-03-29 80 views
3

我正在開發一個項目,似乎每次有人從源代碼管理項目簽出項目以在其本地框中構建項目時,他們都會遇到問題,因爲參考不再解決。您是否遇到Visual Studio 2008和C#的參考問題?

我無法弄清楚它是一個配置問題還是Visual Studio 2008問題。有其他人有這個問題嗎?如果是這樣,有什麼可以解決這個問題嗎?

注意:它可能與正在引用的DLL的顯式路徑有關,或者它們如何被引用......我不太確定。

+1

這些是什麼樣的引用(GAC,Project,文件系統,COM)? – 2010-03-29 17:09:30

+0

不知道爲什麼這是一個社區維基準確... – 2010-03-29 17:13:38

+0

當我寫這個問題時,SO聲稱它是主觀的,它很可能被關閉,所以我把它變成了一個社區維基。此外,我不一定只是尋找我的問題的答案...我試圖衡量其他人是否有這些問題,或者有我們正在做的事情,其他人不是。 – 2010-03-29 17:15:26

回答

2

通常我看到這對機器A三種情況之一

  1. 軟件包計算機A上,而不是機器B
  2. 事在GAC(全局程序集緩存),而不是在計算機B
  3. 包不簽入源代碼控制

Visual Studio的通常處理的關係尋路很好,我已經沒有它只是是一個路徑ISS UE。

另外請確保您沒有簽入.SUO文件和.csproj.user。這些都會有時候會引用參考文獻。

+1

+1。確保它不在GAC或原始開發人員PC上的註冊表(添加引用對話框中的.NET選項卡)中。檢查開發人員是否未引用bin路徑或其他文件不再存在或未檢入。 – TrueWill 2010-03-29 17:11:59

+0

沒有將.SUO文件或.csproj.user文件簽入源代碼管理,這很好。我不確定它是否位於原始開發人員PC上的GAC或註冊表中?有沒有辦法讓我根據我檢查的源代碼控制來檢查? – 2010-03-29 18:03:35

+0

@Brian - 如果您選擇一個引用並檢查屬性,它應該會顯示它從哪裏加載。至於它是否是標準.NET安裝的一部分......這有點難以確定。但是,在加載其他機器時,您應該會收到有關缺少的內容的警告。檢查這些引用的屬性。如果從項目樹外部加載它們,則需要解決。 – 2010-03-30 13:32:27

1

開始尋找你的.csproj文件。幾年前我們遇到過這個問題,但很快就知道這是比其他任何操作更容易出錯的地方。要查找的具體項目有:<HintPath><ProjectReference>

1

是的,你的問題肯定是由你引用的DLL的路徑引起的。查看項目的References文件夾中DLL的屬性(右鍵單擊Visual Studio解決方案中的參考項並選擇Propertiers),查看用於該DLL的路徑。爲了解決這個問題,一個選擇是確保每個人在其本地驅動器上具有相同的路徑到所引用的DLL。您還可以使用項目屬性上的「參考路徑」頁面向項目添加其他參考路徑。

0

請檢查是否有人不小心犯下/任何csproj.user文件檢查他們的本地路徑內<ReferencePath> under <propertygroup>

0

這聽起來像被引用的DLL沒有簽入源代碼控制 - 我把所有外部DLL中的一個lib項目根目錄下的文件夾並引用它們。我從來沒有用Visual Studio正確解析相對路徑的問題。

0
  1. 在同一解決方案中對自己的代碼的引用應該是「項目引用」。千萬不要直接將這些作爲引用添加到DLL中。對於您自己的/內部的代碼,請儘可能多地添加解決方案。否則採取策略2C。
  2. 應該討論對其他代碼的引用,併爲每種引用類型選擇一種策略。你有幾種選擇:

a。直接添加DLL作爲解決方案的一部分,可能在LIB目錄中。檢查它到源代碼管理。每個團隊成員都會有一致的體驗。

b。對於第三方組件,每個人都應該使用一致的安裝路徑等來運行供應商安裝包(許多第三方安裝到GAC,因此它成爲參考的一部分,否則它將是c:\ Program files \ etc等)

c。將DLL發佈到共享目錄,即網絡共享。僅來自此路徑的參考DLL。確保Copy-Local是真實的。

通過檢查CSPROJ文件XML中的標籤(如ProjectReference和HintPath)驗證策略是否已遵循。

最後,每個團隊成員應該知道這一點。如果有人做了一些不同的事情,那麼每次新的「獲得最新」時都會一次又一次地感受到痛苦。