VS 2017元数据文件“xxx.dll”无法找到。

120

我知道有另一个与此问题完全相同的问题,但我看了所有这些答案,没有一个对我有帮助。 :( (问题在这里。)

我刚创建了一个新的ASP.NET MVC项目,并在解决方案中加入了一些".dll"。现在,当我尝试构建项目时,在其中的5个库中的3个上显示下面的错误消息。

Error   CS0006  Metadata file 'C:\Users\...\source\Database\bin\Debug\DataAccessLayer.dll' could not be found   Logic   C:\Users\...\source\Logic\CSC   1   Active

Error   CS0006  Metadata file 'C:\Users\...\source\Logic\bin\Debug\Logic.dll' could not be found    PTS2-MVC    C:\Users\...\source\PTS2-MVC\CSC    1   Active

Error   CS0006  Metadata file 'C:\Users\...\source\PTS2-MVC\bin\PTS2-MVC.dll' could not be found    PTS2-MVC.Tests  C:\Users\...\source\PTS2-MVC.Tests\CSC  1   Active

当我进入那个 .dll 的 bin\debug 文件夹时,我发现它是空的,而另一个没有出错信息的 .dll 则不是空的。但我不知道该如何修复此问题或我做了什么导致出现这种情况。

最常见的解决方法是转到 solutionproperties,然后转到 configuration取消选中 -> 应用 -> 选中 和再次 应用,但这并没有起作用。


只是猜测,但似乎VS已经清理掉了它们。我不确定那些dll是什么或者它们来自哪里,但如果你是制作它们的人,我会确保它们所在的解决方案已经构建完成。如果这些文件夹是从你当前的解决方案中构建出来的,那么一旦你再次清理解决方案,它们就找不到了。 - TheNoob
清理^重建||重新启动您的Visual,再次检查 - Asif Raza
@AsifRaza 我已经这样做了很多次,但是我再想一下 :) - Svenmarim
1
@TheNoob,你的意思是我需要尝试清理我的解决方案,然后再构建它吗?因为我已经尝试过了。 - Svenmarim
1
这个问题的问答主题帮助我解决了我的元数据文件问题。不幸的是,我将不得不在上面提到的旧替代方案中发布我的修复细节。 - camelCase
显示剩余4条评论
29个回答

159

问题在于我在项目中有其他常规错误信息,显然在我解决这些错误并清理和重新构建我的项目后,所有的.dll文件都成功了。

确保您的项目中没有任何其他错误消息,如果有,请先修复它们!


7
我之前也遇到同样的问题,但没有其他错误提示,只有1个关于缺失.dll文件的错误。但是在某一时刻(我没有改变任何代码),突然出现了一个之前没有出现过的语法错误。一旦我修复了该错误,就像你说的那样,我清理、重新构建,一切都正常了。 - jbyrd
29
我也遇到了同样的问题。在错误列表窗口中,有时候错误不会显示出来(而且有时即使进行了清理/重建操作,已经修复的错误仍然继续显示)。输出窗口更加可靠,所以当你遇到这个问题时要检查那里。 - Santosh
2
我发现我需要在Visual Studio的“错误列表”选项卡中启用警告。在警告中,我看到一个引用的.dll文件无法解析。我必须删除现有的引用并在正确的目录中添加一个新的引用。现在一切都好了。 - user1431072
我正在使用aspboilerplate架构进行工作,突然出现了意外错误,然后开始出现.dll未找到的问题,但这是其他错误的问题,正如@Svenmarim在他的答案中提到的那样。谢谢。 - Ishwor Khanal
2
这是唯一真正帮助了我的答案。太棒了!谢谢! - ɐsɹǝʌ ǝɔıʌ
显示剩余9条评论

55

解决错误的步骤:MetaData文件.dll无法找到。

  1. 清理所有项目。

  2. 卸载所有项目。

  3. 重新加载所有项目。

  4. 重新生成解决方案。

然后问题就解决了。


2
这真的解决了我的问题。 - Vu Nguyen
1
卸载和重新加载对我来说是关键。在这个问题上我花了很长时间,直到做到这一点! - ikariw
这对我有用 - 没有其他东西有效。 - CipherShark

24

在我的情况下,发生了一个错误,但是它没有被VS正确解析并显示在“错误列表”窗口中。要查找它,您必须查看构建窗口中的“输出”,并分析从上到下开始的消息,并解决实际错误。微软,请修复!这浪费了全球开发人员大量的时间。


3
这解决了我的问题。尝试了所有其他解决方案,但输出窗口指出我的项目是构建在netframework 4.7.2上的,这比目标框架netframework 4.6高。只需要编辑.csjproj指向4.6即可。 - Calum Mullen

17

请仔细检查您的项目文件夹名称。在我的情况下,我的项目文件夹名字中有空格。当我使用Git Bash从Team Foundation Server克隆项目时,文件夹名称中的空格被转换为:%20。将这些转换回空格可以解决我的问题。


2
由于愚蠢的VSTS,同样的问题。 - Arsen Khachaturyan
2
这就是上述错误的确切原因。感谢提示,它起作用了。 - user3785553
这对我来说也是一样的,但我的项目在Azure DevOps上。 - questions

12

我在一个包含多个项目的解决方案中遇到了这个问题。

问题出现是由于复制了一个 .csproj 文件并将其添加到解决方案中。一个 .csproj 文件包含一个 <ProjectGuid> 元素,我将复制的项目的 GUID 设置为一个新值。

更新: 不管使用哪个GUID,只要与其他项目的GUID不同即可。你可以在Visual Studio中创建一个新的GUID:选择 工具 -> 创建 GUID ,复制花括号之间的部分,即 {...} ,将其用作<ProjectGuid>元素的新值。

我还执行了以下步骤(不一定必要,但不会有害):

  1. 关闭解决方案
  2. 删除 bin 文件夹
  3. 删除所有 obj 文件夹
  4. 打开解决方案并进行构建

8
我按照以下步骤解决了这个问题:
  1. 清理解决方案
  2. 关闭 Visual Studio
  3. 从项目目录中删除 /bin 文件夹
  4. 重新启动 Visual Studio
  5. 重新构建解决方案

1
谢谢,经过5个小时的搜索和尝试,你的解决方案救了我:) - Masoud

5

另外一件需要检查的事情是任何被引用项目的目标框架,以确保调用项目使用相同或更高版本的框架。

我曾经遇到过这个问题,尝试了之前提出的所有答案,然后凭直觉检查了框架。其中一个被引用的项目针对的是4.6.1,而调用项目仅为4.5.2。


同样的事情在这里。 - Anthony Queen

4
对我来说,清理和构建没有用。卸载项目也没用。重启Visual Studio甚至电脑也没有用。以下方法有效:
进入每个出错的项目,在"引用"中删除指向有问题项目的引用,然后再添加一遍即可解决此问题。
这个问题似乎与移动项目的位置有关(例如将其移动到文件夹中),然后引用它的另一个项目路径错误,找不到它。

我更改了我的项目目录,导致使用“重新构建全部”无法构建dll的问题,而这个答案解决了我的问题。 - Alain Elemia

4
我曾经也遇到过这个问题,哪怕在“重新生成解决方案”后,“错误列表”视图上没有显示任何其他错误。然而,在“输出”视图上,我看到了导致问题的错误:
主引用“C:...\myproj.dll”无法解析,因为它是根据“.NETFramework,Version=v4.6.1”框架构建的,而这是一个比当前目标框架“.NETFramework,Version=v4.5”更高版本的框架。
一旦我纠正了这个问题,问题就得到了解决。

3
我有同样的问题,问题是解决方案路径中包含空格,因此由于某种原因,vs无法解决该软件包...重新下载我的存储库,只需将解决方案命名为名称中没有空格即可。
例如:
/Repo/Project Name/src

应该是

/Repo/ProjectName/src

我也有同样的问题,但是我的文件夹名称中包含了“%20”。 - Wojtek Turowicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接