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

时间:2017-05-29 22:37:35

标签: c# asp.net-mvc metadata visual-studio-2017

我知道还有另一个问题确实存在同样的问题,但是我通过了所有这些答案,没有人帮助过我。 :((This was the question.

我刚创建了一个新的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 - > 检查再次申请,但这不起作用

29 个答案:

答案 0 :(得分:48)

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

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

答案 1 :(得分:15)

修复此错误的步骤:无法找到MetaData文件.dll。

  1. 清理所有项目。

  2. 卸载所有项目。

  3. 重新加载所有项目。

  4. ReBuild Solution。

  5. 然后问题解决了。

答案 2 :(得分:6)

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

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

我还执行了以下步骤:

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

答案 3 :(得分:6)

在我的情况下,有一个错误,但它没有被VS正确解析并显示在&#34;错误列表&#34;窗口。为了找到它,你可以看到ol&#34;输出&#34;从构建窗口并解析从上到下的消息并解决实际错误。 M $,请修理!这对世界集体开发者来说是一个巨大的浪费时间。

答案 4 :(得分:2)

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

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

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

答案 5 :(得分: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>

答案 6 :(得分:2)

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

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

答案 7 :(得分:2)

仔细检查项目文件夹的名称。在我的情况下,我的项目文件夹以空格命名。当我使用git bash从Team Foundation Server克隆项目时,文件夹名称中的空格被转换为:&#34;%20&#34;。把它们改回空间可以解决我的问题。

答案 8 :(得分:1)

在bash中运行此命令以删除所有为我工作的垃圾箱

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

不能保证它对任何人都有效,但

还要注意它会删除所有bin文件 - 所以你必须重建所有项目。显然最好在使用之前进入相关目录。

答案 9 :(得分:1)

在我的情况下,我遇到了同样的错误。我的一个项目解决方案是引用来自不同NuGet位置的程序集。我只是将其更改为正确位置以解决此错误并重建。并且哇,项目成功构建,所有其他错误都消失了。

答案 10 :(得分:1)

在解决方案的25个项目中,我已经根据依赖关系逐个构建了10个项目。然后构建解决方案。它为我固定了

答案 11 :(得分:1)

对我有用的东西

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

Install-Package NuGet.CommandLine
nuget locals all -clear

重建解决方案。

答案 12 :(得分:1)

我遇到了同样的问题,问题是解决方案路径在名称中有空格而且由于某种原因没有解析包...再次下载我的存储库只需重命名解决方案,但名称中没有空格。

例如:

/Repo/Project Name/src

/Repo/ProjectName/src

答案 13 :(得分:1)

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

我有这个问题,我尝试了所有之前建议的答案,然后在预感检查了框架。当调用项目仅为4.5.2时,被引用的项目之一是目标4.6.1。

答案 14 :(得分:1)

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

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

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

答案 15 :(得分:1)

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

答案 16 :(得分:0)

在相关项目中解决了几个问题后,如已接受的答案所说,我仍然收到此错误。我可以看到该文件确实存在于它正在查找的位置,但由于某种原因 Visual Studio 无法识别它。重建解决方案将清除所有依赖项目,然后不会重建它们,但单独构建会生成 .dll。我在 Visual Studio 的开发人员 PowerShell 终端中使用了 msbuild <project-name>.csproj,意思是获取一些更详细的调试信息——但它是为我构建的!尝试使用 msbuild 来解决持久性构建错误;您可以使用 --verbosity: 选项获得更多输出,如 docs 中所述。

答案 17 :(得分:0)

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

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

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

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

答案 18 :(得分:0)

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

答案 19 :(得分:0)

我遇到了同样的问题,并且尝试了以下解决方案 Metadata file '.dll' could not be found

但是这些都不起作用。

因此,在反复试验后,我通过卸载并重新加载项目来修复它,方法是重置配置文件并解决了问题。

答案 20 :(得分:0)

对我来说有效的是:

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

答案 21 :(得分:0)

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

答案 22 :(得分:0)

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

答案 23 :(得分:0)

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

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

那对我有用!希望这可以帮助。

答案 24 :(得分:0)

遇到许多麻烦之后,这是我找到的解决方案。

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

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

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

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

答案 25 :(得分:0)

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

答案 26 :(得分:0)

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

答案 27 :(得分:0)

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

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

通常受影响的文件是AssemblyInfo.cs,.sln和Properties&gt; Application&gt;程序集名称和默认名称空间。确保使用新名称更新它们。

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

我希望这会有所帮助。

答案 28 :(得分:0)

清理我的解决方案导致Visual Studio 2017出现此问题。卸载/重新加载项目或更多清理没有任何区别。唯一有用的是关闭并重新启动Visual Studio。