无法解析此引用。 无法找到程序集

每次我构建我的解决方案时都会收到此错误消息;

警告3无法解析此引用。 无法找到程序集“StandardClassLibrary,Version = 1.0.0.0,Culture = neutral,processorArchitecture = MSIL”。 检查以确保磁盘上存在程序集。 如果您的代码需要此引用,则可能会出现编译错误。 StandardClassLibrary

所以我的应用程序有许多项目,其中StandardClassLibrary就是其中之一。 以上消息是一个警告,据我所知,它对我的​​解决方案没有影响。

但我宁愿它不在那里,以防万一……

当项目指向不再存在的程序集的旧位置时,您很可能会收到此消息。 由于您可以构建一次,因此程序集已经复制到bin\Debug / bin\Release文件夹中,因此您的项目仍然可以找到副本。

如果在解决方案资源管理器中打开项目的引用节点,则引用旁边应该有一个黄色图标。 删除引用并从正确的位置再次添加它。

如果您想知道它所引用的位置,您必须在文本编辑器中打开.csproj文件并查找该程序集的HintPath – 由于某种原因,IDE不显示此信息。

如果有人使用某些nuget软件包遇到此问题,您可以使用软件包管理器控制台重新安装软件包来解决此问题:

 Update-Package -reinstall 

检查项目文件是否为只读。 通过右键单击项目文件夹并选择属性来删除只读属性。 在属性屏幕中,删除只读复选框。 我遇到了同样的问题,这解决了我。

如果项目通过具有相同库文件的不同位置的团队基础服务器检出到不同的PC,则参考中将没有黄色图标标记,但是当更改为发布构建并构建项目时,将给出错误。 就像@C.Evenhuis所说的那样,它将在之前的构建中使用旧的(例如:Debug build),所以我没有注意到错误。

现在我知道将库文件放在不同PC上的不同位置是一个坏习惯。

只需要删除引用并从正确的位置重新添加相同的引用。

这让我困惑了一段时间,直到我发现解决方案中各种项目的依赖性已经搞砸了。 直接然后你的assembly就会出现在正确的地方。

我在VS 2017中也有同样的警告。事实certificate,在我的情况下,我添加了一个unit testing项目,需要为它正在测试的DLL上的unit testing设置依赖项。

也许它会对某人有所帮助,但有时可能会缺少Name标签作为参考,并且导致在使用MSBuild构建时无法找到该程序集。 确保Name标签可用于特定参考csproj文件,例如,

   {9A2D95B3-63B0-4D53-91F1-5EFB99B22FE8} MyDependency1