2010-09-08 441 views
23

我一直在開發一個類庫,相當長一段時間,突然間,上週某個時候,我打開了我的項目,並且我所有的引用上都有黃色驚歎號(System.dll,System.Drawing.dll,等等..)。我嘗試刪除引用並重新添加它們以修復任何損壞的引用路徑,但它們繼續在它們上顯示黃色感嘆號。爲什麼我所有的引用在我的.NET類庫中都有黃色感嘆號?

自從上次打開該項目以來沒有任何變化。唯一不同於我上次打開項目的是,這次我從另一個項目的.NET內部直接打開它。例如,我正在研究.NET 3.5 Web項目,然後單擊文件 - >打開最近的文件 - >我的其他解決方案。這封閉了我當前的3.5 Web解決方案,並打開了2.0類庫解決方案,並且問題首次出現。我不知道如何(或爲什麼)這會導致一個問題,但我傾向於Visual Studio感到困惑或者什麼,現在我的程序集在這個2.0類庫項目上都是無效的。 (?)

什麼會導致這種情況發生,我該如何解決?我瀏覽過網頁,但我只看到人們建議刪除引用並重新添加引用;我已經做了,沒有用。

我正在考慮啓動一個新項目並逐個複製所有源文件,但如果可能的話,真的想避免所有這些。

在此先感謝!

+4

是一個使用.Net 2.0的項目,而同一解決方案中的另一個項目使用.Net 3.5?一個項目引用另一個? – Amy 2010-09-08 16:26:18

+0

重建它,記下你得到的錯誤信息。 – 2010-09-08 16:57:57

+0

謝謝艾米,我正在添加不同版本的項目。 – 2013-05-09 10:09:38

回答

18

使用Solution Explorer中,單擊鼠標右鍵,選擇卸載項目,然後選擇編輯(您的csproj文件的名稱),以能夠直接在VS編輯的.csproj文件

在其中一個<ItemGroup>節點中,您會找到標記爲Reference的子節點。確保HintPath節點值指向有效的路徑。再次檢查節點SpecificVersionPrivate以獲取有效值。

希望評估這些值將幫助您解決您的問題。

+1

感謝您的提示。我做了你所說的,並且在中看起來正確。我只是將所有相對引用(即'.. \ .. \ .. \')改爲絕對引用(即'c:\'),感嘆號奇蹟般地消失了。 :) 再次感謝! – Luc 2010-09-08 23:30:21

43

只是爲了補充一點。我最近遇到了一個問題,那就是我將TargetFramework設置爲.NET 4.0的引用添加到Visual Studio 2008項目中。你得到的只是一個黃色的感嘆號和解釋。

一旦我意識到我選擇了錯誤的釋放二進制文件,它似乎很明顯!

+0

謝謝,真的有用。 – testCoder 2013-05-13 06:42:45

+0

哈,那正是我遇到的問題 - 謝謝。 – pfeds 2014-05-12 02:20:53

+0

同上這裏......謝謝。 – 2014-11-24 21:29:56

0

如果您的.dll文件存在於源代碼控制,那麼所有你需要做的是正確的點擊從溶液的依賴和包文件夾(這是在源控制資源管理器),並獲得最新版本的它。

您會在系統上找到.dll文件。

1

我在TFS簽入/維護的解決方案的源代碼文件的多個文件夾中出現黃色感嘆號時出現同樣的問題。關於哪些文件實際上有一個黃色的感嘆號,哪些沒有。通過研究這個問題的原因,我可以看到那些帶有黃色驚歎號的文件實際上甚至沒有從TFS檢索到我的硬盤上。 我檢查了.csproj文件中的HintPath等,一切看起來都很好,也沒有其他來自此線程的提示可以幫助我解決問題。

什麼最終幫助我做了以下事情: 在解決方案資源管理器中右鍵單擊項目 - >獲取特定版本 - >('版本類型:最新版本已被選中') - > +啓用複選框'覆蓋所有的文件,即使本地版本匹配指定的版本' - >點擊'獲取'按鈕

我做了所有的源代碼文件可以成功地從TFS檢索和黃色驚歎號消失!我希望這能幫助有同樣問題的人!

0

我也有這些錯誤。我在我的項目中使用Nuget庫。在更新Microsoft.Bcl包後,所有參考錯誤都得到解決。

0

就我而言,上述解決方案不起作用。我不確定,我的平臺如何更改爲AnyCPU。我在項目上使用sqlite。然後,我只是將平臺更改爲模擬器/設備的x86/arm。它再次像魅力一樣工作。希望它有助於某人。

5

我的問題是在項目上設置的目標.NET框架版本的差異。第一個被設置爲.NET 4.0,第二個.NET 4.5 更改它解決了我的問題

2

將目標DotNet框架更改爲兩個項目之間相同,並且都可以正常工作。 (特別是如果你「升級」)

+0

作爲@reza_baiat說(我錯過了那一個) – pashute 2015-08-14 15:54:57

4

我最近在Visual Studio 2015中打開的項目遇到同樣的問題。

錯誤出來的時候我已經搬遷了幾次方案默認包庫的物理位置,並在NuGet.Config

刻意改變了repositoryPath的價值就我而言,我需要刪除元素的條件屬性所指向的路徑無效,位於csproj文件的「目標」部分內。

<Error Condition="!Exists('..\..\..\..\..\Packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" 
     Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\Packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" /> 

此外,當通常的Package文件夾被移除或重新定位到其他位置時,會再現此錯誤。然後應該與ItemGroups一起更新這個值。

+0

它爲我工作 – rorfun 2015-11-05 04:56:19

11

檢查天氣項目NET框架比基準Net框架

+1

在這裏有同樣的問題;引用.NET 4.5.1項目的.NET 4.5項目在我這樣做之前不會編譯。謝謝! – rdev5 2015-10-30 20:50:23

+0

對此的一個症狀是類型被IntelliSence識別,您可以使用引用庫中的類型在Visual Studio中編寫代碼,但是代碼不會編譯,並且您會看到該引用程序集的黃色感嘆號。不幸的是,沒有工具提示告訴我們什麼是錯的。 – 2015-12-30 14:53:25

0

問題等於或大於: 這與我發生了什麼事,我在我的映射TFS存儲庫在C文件夾:\用戶\ myUserNameFolder \ 「myUserNameFolder」對於其System文件夾具有特殊權限,因此解決方案中引用的dll獲取了黃色三角形,並且每當我嘗試重新引用所有dll時,它們仍然獲得同樣的黃色三角形標誌 解決方案: 我將我的TFS存儲庫重新映射到C:\上的普通文件夾,並且做到了這一點。 希望這有助於某人..

P.S.這發生在VS 2015.

1

從另一個項目複製項目文件夾作爲新解決方案的起點後,我遇到了同樣的問題。

所有項目都引用了這個黃色的感嘆號,甚至引用了框架程序集。

什麼終於幫是確保,該文件夾 「.nuget」(包括Nuget.Config,NuGet.exe,NuGet.targets)是我的解決方案文件夾中。然後我在解決方案的上下文菜單中執行了「Restore Nuget Packages」。現在所有的感嘆號都消失了!

+0

謝謝,這也是我的問題。 – TheNoob 2016-08-24 21:12:52

0

就我而言,事實證明dll的版本與nuget軟件包不同。即使1.1.14被下載,並且該文件夾被稱爲1.1.14,在檢查dll屬性(在詳細信息選項卡下)後,我注意到它是1.1.13版。因此,我的csproj不得不引用1.1.14文件夾,而是1.1.13 dll。我改變了csproj文件來表明這一點。

相關問題