找不到VS 2017元数据文件'.dll


86

我知道还有另一个问题完全相同,但是我从所有这些答案中脱颖而出,没有一个帮助我。:((这是问题。

我刚刚创建了一个新的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也为空。但是我不知道如何解决这个问题或为实现这一目标而做了什么。

最常见的答案是转到解决方案属性,转到配置,然后取消选中-> Apply- >再检查并再次应用,但这没有用


只是一个猜测,但似乎VS清除了这些内容。我不确定这些dll是什么或它们来自何处,但是如果您是生成这些dll的人,那么我将确保它们内置的解决方案都是内置的。如果这些文件夹是从您当前的解决方案所构建的文件夹开始的,则在您再次清洁解决方案后将找不到这些文件夹。
TheNoob's

清洁^重建|| 重新开始视觉效果,再次检查
Asif Raza

@AsifRaza我已经做了很多次了,但我一直在想:)
Svenmarim

1
@TheNoob所以你说我需要尝试清理我的解决方案,然后构建它?因为我已经尝试过
Svenmarim

从bin文件夹中删除所有文件夹,然后重新构建^ check
Asif Raza

Answers:


121

问题是我的项目中还有其他一些正常的错误消息,很明显,在我修复了这些错误消息之后,当我再次清理并构建了项目时,所有.dll文件都成功了。

确保您的项目中没有任何其他错误消息,如果有,请首先解决这些错误消息!


6
我实际上遇到了同样的问题,但没有其他错误出现,只有关于.dll丢失的1个错误。但是随后在某个时刻(无需更改任何代码),突然出现了以前没有出现过的语法错误。一旦修复了该错误,便按照您的说明进行了清理,重建并一切正常。
jbyrd

23
同样的问题在这里。在“错误列表”窗口中似乎存在一个错误,该错误有时不显示(有时,尽管进行了清除/重建,但固定的错误仍继续显示)。“输出”窗口更可靠,因此在遇到此问题时,请在此处检查。
桑托什

1
我发现必须在Visual Studio的“错误列表”选项卡中启用警告。正是在警告中,我看到引用的.dll无法解析。我必须删除现有引用,并在正确的目录中添加一个新引用。现在一切都很好。
user1431072 '18

参见上面的评论,但是除了VS中的一些错误外,基本上所有相同的事情是停止显示错误,直到取消选中/选中“解决方案”属性页中的“生成”选项为止。
抢劫

1
这是真正帮助我的唯一答案。高超!谢谢!
ɐsɹǝʌǝɔıʌ

34

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

  1. 清理所有项目。

  2. 卸载所有项目。

  3. 重新加载所有项目。

  4. 重建解决方案。

然后问题解决了。


这确实解决了我的问题。
Vu Nguyen,

卸载和重新装载对我来说很关键。我花了很长时间在这个问题上,直到这样做!
ikariw

15

在我的情况下,有一个错误,但是VS无法正确解析该错误,并显示在“错误列表”窗口中。要找到它,您可以从构建窗口中查看ol“输出”,并从上至下解析消息,并解决实际错误。M $,请修复!这是世界集体开发者的巨大时间浪费。


1
这为我解决了这个问题。尝试了所有其他解决方案,但输出窗口使我注意到我的项目是针对netframework 4.7.2构建的,该项目高于目标框架netframework 4.6。只需编辑.csjproj以指向4.6。
Calum Mullen

11

仔细检查项目文件夹的名称。在我的情况下,我的项目文件夹的名称带有空格。当我使用git bash从Team Foundation Server克隆项目时,文件夹名称中的空格被转换为:“%20”。将这些更改回空格为我解决了问题。


2
同样的问题,因为STUPID VSTS。
Arsen Khachaturyan

2
这是上述错误的确切原因。谢谢你的提示。它起作用了
user3785553

10

对于包含多个项目的解决方案,我遇到了这个问题。

它来自复制.csproj并将副本添加到解决方案中。一个.csproj的文件包含一个<ProjectGuid>元素。我将复制项目的GUID设置为新项目。

更新:您使用哪个GUID无关紧要,只需要与另一个项目的GUID不同即可。您可以在Visual Studio中创建一个新的GUID:Tools -> Create GUID并复制大括号之间的部分,即{...}。使用它作为<ProjectGuid>元素的新值。

我还执行了以下步骤(不是必需的,但不会造成伤害):

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

6

我可以按照以下步骤解决此问题:

  1. 清洁溶液
  2. 关闭Visual Studio
  3. 从项目目录中删除/ bin
  4. 重新启动Visual Studio
  5. 重建解决方案

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

3

我有同样的问题,问题是解决方案路径的名称中有空格,并且由于某种原因vs不能解决该软件包...再次下载我的存储库,只是重命名解决方案而名称中没有空格。

例如:

/Repo/Project Name/src

应该

/Repo/ProjectName/src

同样在这里,但我%20在文件夹名称中。
Wojtek Turowicz

3

对我来说,打扫和建筑行不通。卸载项目无效。重新启动Visual Studio甚至PC都无法正常工作。这是起作用的:

转到引发错误的每个项目,然后在“引用”中删除对有问题的项目的引用,然后再次添加。这样就解决了问题。

问题似乎与到处移动项目有关(例如,将其移动到文件夹中),然后是引用该项目的其他项目,其路径错误并且找不到它。


我更改了项目目录,从而导致dll无法使用rebuild all进行构建,并且此问题解决了我的问题。
阿兰·埃尔米亚

3

我遇到了同样的问题,即使在“重建解决方案”之后的“错误列表”视图上没有显示其他错误。但是,在“输出”视图上,我看到了问题背后的错误:

无法解析主要参考“ C:... \ myproj.dll”,因为它是针对“ .NETFramework,Version = v4.6.1”框架构建的。这是当前目标框架“ .NETFramework,Version = v4.5”的更高版本。

一旦我纠正了这个问题,问题就解决了。


2

您应该检查的另一件事是任何引用项目的目标框架,以确保调用项目使用的是相同或更高版本的框架。

我遇到了这个问题,我尝试了所有先前建议的答案,然后直觉检查了框架。被引用的项目之一的目标是4.6.1,而调用项目仅为4.5.2。


这里也是一样。
Anthony Queen

2

在bash中运行此命令以删除对我有用的所有垃圾箱

$ find . -iname "bin" -o -iname "obj" | xargs rm -rf

虽然不能保证它会为其他任何人工作

另请注意,它将删除所有bin文件-因此您将必须重建所有项目。显然,最好在使用前先进入相关目录。


2

清理我的解决方案导致Visual Studio 2017出现此问题。卸载/重新加载项目或进行更多清理没有影响。唯一有效的方法是关闭并重新启动Visual Studio。


VS 2019中的情况相同:只需关闭VS并重新打开解决方案即可。
Heri,

2

检查所有项目是否已加载。就我而言,其中一个项目已卸载,重新加载该项目可清除错误。


2

就我而言,我必须打开.csproj文件并手动添加引用,如下所示(缺少Microsoft.Extensions.Identity.Stores.dll):

<Reference Include="Microsoft.Extensions.Identity.Stores">
  <HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.identity.stores\2.0.1\lib\netstandard2.0\Microsoft.Extensions.Identity.Stores.dll</HintPath>
</Reference>

2

关闭Visual Studio,找到解决方案的.suo文件,将其删除,然后重新打开Visual Studio。


2

对我有用的是:

程序包管理器控制台(Visual Studio 2019社区):

Install-Package NuGet.CommandLine
nuget locals all -clear

重建解决方案。


1

就我而言,我面临着同样的错误。我的项目解决方案之一是引用来自不同NuGet位置的装配体。我只是将其更改为正确的位置以解决此错误并重建。并哇,项目成功构建,所有其他错误都消失了。


1

我有同样的错误。就我而言,我建立了一个库(称为commsLibrary),该库通过将其他库作为项目包含在我的解决方案中来引用其他库。后来,当我构建一个项目并添加我的commsLibrary时,无论何时构建,我都找不到元数据文件错误。因此,我将comms库引用的库添加到当前项目中,然后就可以构建了。


1

面对这么多麻烦之后,这是我找到的解决方案。

  1. 打开您的项目文件夹。
  2. 查找Your_Project_Name.csproj [Visual C#项目文件(.csproj)]
  3. 在任何文本编辑器中打开该文件,然后找到丢失的文件ItemGroup。

    <ItemGroup> <None Include="..." /> </ItemGroup>

  4. 删除该ItemGroup并再次打开您的项目并进行构建

  5. 如果该参考对您很重要,请再次添加。



0

我遇到过同样的问题。我的问题是团队中的其他人移动了一个类文件夹,而该项目正在寻找它。

对我来说,有44个错误;43以.dll结尾(搜索依赖项),错误列表中的第一个以.cs结尾(搜索实际的类)。我尝试了清理构建,然后清理,卸载,重新加载,构建,但是没有任何效果。我最终在项目中找到该类,并删除了它,因为它无论如何都显示为不可用,然后进行了干净的构建。

那帮了我大忙!希望这可以帮助。


0

在同一个项目中,我有2个文件(和2个类)具有相同的名称。


0

就我而言,我直接从团队资源管理器git菜单中删除了一个文件,这就是导致此问题的原因。当我检查解决方案资源管理器时,它仍将删除的文件显示为未引用的文件。当我从解决方案资源管理器中删除该文件时,我能够成功构建项目。


0

对我来说有效的是:

卸载并重新安装引用的具有错误的Nuget程序包。


0

就我而言,我运行测试并收到错误CS0006。原来,我在发布模式下运行测试。切换到调试模式可修复此错误。


0

当您重命名解决方案并且.net框架找不到旧的解决方案时,就会发生此问题。

要解决此问题,您需要找到解决方案的旧名称并将其所有依赖项替换为新名称。如果您需要通过文件资源管理器浏览物理文件,请执行此操作。

通常受影响的文件是AssemblyInfo.cs.sln一个Properties > Application > Assembly名称和默认命名空间。确保使用新名称更新它们。

打开文件浏览器,如果旧名称的文件夹仍然存在,则需要将其删除。然后清理并构建解决方案,直到错误消失。(如果需要,请一一清理并建设项目,尤其是受影响的项目。)


0

就我而言,问题是我引用了一个项目,其中我注释了所有.cs文件。

例如,ProjectApp引用了ProjectUtility。在ProjectUtility中,我只有1个.cs文件。我不再使用它,所以我注释掉了整个文件。在ProjectApp中,我没有从ProjectUtility调用任何代码,但是using ProjectUtility;在其中一个ProjectApp.cs文件中。我从编译器得到的唯一错误是CS0006错误。

.cs在ProjectUtility中取消注释该文件,该错误消失了。因此,我不确定项目中没有代码会导致编译器创建无效的程序集还是根本不会生成DLL。对我来说,解决方法是只删除对ProjectUtility的引用,而不是注释所有代码。

如果您想知道为什么我注释了所引用项目中的所有代码而不是删除引用,那么我之所以这样做是因为我正在测试某些东西并且不想修改该ProjectApp.csproj文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.