为什么我的所有引用都会在我的.NET类库中有黄色感叹号?

时间:2010-09-08 16:14:34

标签: .net visual-studio-2008 reference

我已经开发了一个类库了很长一段时间,突然间,上周的某个时候,我打开了我的项目,我的所有引用现在都有黄色惊叹号(System.dll,System.Drawing.dll)等等。)。我已经尝试删除引用并重新添加它们以修复任何损坏的引用路径,但它们继续在它们上显示黄色感叹号。

自从我上次打开项目以来,没有任何变化。与我上次打开项目时唯一不同的是,这次我直接从另一个项目的.NET内部打开它。例如,我正在研究.NET 3.5 Web项目,然后单击File - >打开最近的文件 - >我的其他解决方案这关闭了我目前当前的3.5网络解决方案并打开了2.0类库解决方案,问题首次出现。我不确定这会导致问题的原因(或原因),但是我倾向于Visual Studio弄糊涂或其他东西,现在我的程序集在这个2.0类库项目中都是无效的。 (?)

会导致这种情况发生的原因以及如何解决?我环顾网络,但我只看到有人建议删除引用并重新添加它们;我做过的,无济于事。

我正在考虑开始一个新项目并逐个复制我的所有源文件,但如果可能的话,我们真的想避免这一切。

提前致谢!

12 个答案:

答案 0 :(得分:43)

只是添加到此。我最近遇到了一个问题,即我将TargetFramework设置为.NET 4.0的引用添加到Visual Studio 2008项目中。你得到的只是一个黄色感叹号和解释。

一旦我意识到我选择了错误的发布二进制文件,它就显而易见了!

答案 1 :(得分:18)

使用Solution Explorer,右键单击并选择Unload Project,然后选择Edit(csproj文件的名称),以便能够直接在VS中编辑.csproj文件。

在其中一个<ItemGroup>个节点下,您会找到标记为Reference的子节点。确保HintPath节点值指向有效路径。同时仔细检查节点SpecificVersionPrivate是否有效值。

希望评估这些值可以帮助您解决问题。

答案 2 :(得分:11)

检查天气项目.NET框架是否等于或大于参考.Net框架

答案 3 :(得分:5)

我的问题是在项目上设置的目标.NET框架版本的差异。第一个设置为.NET 4.0,第二个设置为.NET 4.5 改变它解决了我的问题

答案 4 :(得分:4)

我最近在Visual Studio 2015中打开了一个项目。

当我重新定位解决方案默认软件包存储库的物理位置几次并故意更改NuGet.Config中repositoryPath的值时出现错误

就我而言,我需要删除一个元素,该元素的条件属性所指向的路径无效,这个元素位于csproj文件的Target部分内。

<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一起更新。

答案 5 :(得分:1)

在TFS签入/维护的解决方案的源代码文件的bounch上,我遇到了同样的问题。没有规律性的文件实际上有一个黄色感叹号,哪些没有。通过研究这个问题的原因,我可以看到那些带有黄色感叹号的文件实际上甚至没有从TFS检索到我的硬盘上。 我检查了.csproj文件中的HintPath等,一切看起来很好,而且这个帖子中没有其他提示可以帮我解决问题。

最后帮助我的是做以下事情: 在解决方案资源管理器中右键单击Project - &gt;获取特定版本... - &gt; ('版本类型:已选择最新版本') - &gt; +启用复选框'覆盖所有文件,即使本地版本与指定版本匹配' - &gt;点击“获取”按钮

在我这样做之后,可以从TFS成功检索到所有源代码文件,并且黄色感叹号消失了!我希望这可以帮助那些遇到同样问题的人!

答案 6 :(得分:1)

从另一个项目复制项目文件夹作为新解决方案的起点后,我遇到了同样的问题。

所有项目都引用了这个黄色感叹号,甚至引用了框架程序集。

最终帮助确保文件夹&#34; .nuget&#34; (包括Nuget.Config,NuGet.exe,NuGet.targets)在我的解决方案文件夹中。然后我在解决方案的上下文菜单中执行了&#34; Restore Nuget Packages&#34; 。现在所有惊叹号都消失了!

答案 7 :(得分:0)

如果您的.dll文件存在于源代码管理中,那么您需要做的就是右键单击解决方案中的Dependencies and packages文件夹(位于源控制资源管理器下)并获取它的最新版本。

您将在系统中找到.dll文件。

答案 8 :(得分:0)

我也遇到了这些错误。我在我的项目中使用Nuget库。在更新了Microsoft.Bcl包之后,所有引用错误都得到了解决。

答案 9 :(得分:0)

在我的情况下,上面提到的解决方案不起作用。我不确定,我的平台如何更改为AnyCPU。我在项目中使用sqlite。然后我只是将平台更改为x86 / arm用于模拟器/设备。它再次像魅力一样工作。希望,它有助于某人。

答案 10 :(得分:0)

<强>问题: 这就是我发生的事情,我将我的TFS存储库映射到C:\ Users \ myUserNameFolder \下的文件夹 “myUserNameFolder”具有特殊权限,因为它是一个System文件夹,因为解决方案中引用的dll得到了黄色三角形,每当我尝试重新引用所有dll时,它们仍然得到相同的黄色三角形标记。 的解决方案: 我将我的TFS存储库重新映射到C:\上的普通文件夹,这就完成了。 希望这对某人有帮助..

P.S。这发生在VS 2015中。

答案 11 :(得分:0)

在我看来,dll的版本与nuget包的版本不同。即使下载了1.1.14并且文件夹被称为1.1.14,在检查dll属性时(在详细信息选项卡下),我注意到它是版本1.1.13。

因此,我的csproj必须引用1.1.14文件夹,而不是1.1.13 dll。我更改了csproj文件以指明这一点。