找不到元数据文件“. dll”

我正在处理一个WPF,C#3.0项目,我得到这个错误:

Error 1 Metadata file'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug\BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools\VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem

这是我引用用户控件的方式:

xmlns:vms="clr-namespace:VersionManagementSystem"<vms:SignOffProjectListing Margin="5"/>

它发生在每次失败的构建之后。我能让解决方案编译的唯一方法是注释掉我所有的用户控件并重新构建项目,然后我取消注释用户控件,一切都很好。

我检查了构建订单和依赖项配置。

如您所见,它似乎截断了DLL文件的绝对路径……我读到长度有一个bug。这是一个可能的问题吗?

这非常烦人,不得不评论,构建和取消注释,构建变得非常令人厌倦。

1053618 次浏览

根据错误消息,我不相信文件路径被截断。它看起来只是不正确。如果我正确阅读消息,它似乎正在查找DLL文件…

WORK=-\Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug\BusinessLogicLayer.dll

这不是有效路径。是否有可能在构建过程中将宏定义设置为无效值?

我也遇到了这个问题。首先,您必须手动构建您的DLL项目,右键单击Build。然后它会工作。

我只是遇到了同样的问题。Visual Studio没有构建正在引用的项目。

书面说明:

  1. 右键单击解决方案,然后单击属性。
  2. 单击左侧的配置。
  3. 确保选中“构建”下找不到的项目的复选框。如果已经选中,取消选中,点击应用并再次选中复选框。
  4. (可选)您必须对解决方案属性的发布和调试模式执行此操作。

截屏说明:

  • 他们说一张图片胜过千言万语。点击GIF放大,希望它很容易理解:

Gif说明

对我来说,它试图在过去包含项目的路径中找到一个DLL,但我们将其移动到一个新目录。解决方案具有正确的项目路径,但Visual Studio不知何故一直在旧位置查找。

解决方案:重命名每个问题项目-只需添加一个字符或其他-然后将其重命名回其原始名称。

这必须重置Visual Studio中的某种全局缓存,因为这会清除此问题和其他类似问题,而Clean之类的东西则不会。

几年后再回到这个问题,这个问题很可能与Windows最大路径限制有关:

命名文件、路径和命名空间最大路径长度限制

在我的情况下,问题是我手动删除了一个标记为“丢失”的非编译文件。一旦我删除了对现在丢失的文件的引用并重新编译-一切都很好。

这仍然可以在较新版本的Visual Studio中发生(我刚刚在Visual Studio 2013上发生过):

另一件要尝试的事情是关闭Visual Studio并删除.sln文件旁边的.suo文件。(它将在您下次Save all(或退出Visual Studio)时重新生成)。

当我在另一台机器上向解决方案添加新项目然后拉取修订版时,我遇到了这个问题,但是.suo文件在其他情况下也会损坏,并导致非常奇怪的Visual Studio行为,所以删除它是我总是尝试的事情之一。

请注意,删除.suo文件将重置解决方案的启动项目。

关于.suo文件的更多信息是这里

好吧,我的答案不仅仅是对所有解决方案的总结,而是提供了更多。

第(1)节:

一般解决方案:

我有四个这样的错误(“找不到元数据文件”),还有一个错误说“源文件无法打开”(“未指定的错误”)。

我试图摆脱“找不到元数据文件”的错误。为此,我阅读了许多帖子、博客等,发现这些解决方案可能是有效的(在这里总结它们):

  1. 重新启动Visual Studio并再次尝试构建。

  2. 转到'解决方案资源管理器'。右键单击解决方案。转到属性。转到'配置管理器'。检查是否选中'Build'下的复选框。如果其中任何或全部未选中,请选中它们并再次尝试构建。

  3. 如果上面的解决方案不起作用,那么按照上面步骤2中提到的顺序,即使选中了所有复选框,取消选中它们,再次选中并尝试再次构建。

  4. 构建顺序和项目依赖关系:

    转到“解决方案探索者”。右键单击解决方案。转到项目依赖…。您将看到两个选项卡:“依赖”构建订单。此构建顺序是构建解决方案的顺序。检查项目依赖关系和构建顺序,以验证是否有依赖于其他项目(例如“项目1”)的项目(例如“项目2”)正在尝试在该项目(项目2)之前构建。这可能是错误的原因。

  5. 检查缺少的. dll的路径:

    检查缺少的. dll的路径。如果路径包含空格或任何其他无效路径字符,请将其删除并再次尝试构建。

    如果这是原因,则调整构建顺序。


第(2)节:

我的具体案例:

我尝试了上面的所有步骤,使用各种排列和组合重新启动Visual Studio几次。但是,它没有帮助我。

所以,我决定摆脱我遇到的其他错误(“源文件无法打开(“未指定的错误”)”)。

我看到一篇博客文章:TFS错误源文件无法打开(“未指定的错误”)

我尝试了博客文章中提到的步骤,我摆脱了错误“无法打开源文件('未指定的错误')”,令人惊讶的是,我也摆脱了其他错误('元数据文件找不到')


第(3)节:

故事的寓意:

尝试上面第(1)节中提到的所有解决方案(以及任何其他解决方案)以消除错误。如果没有任何效果,根据上面第(2)节中提到的博客,从. csproj文件中删除源代码控制和文件系统中不再存在的所有源文件的条目

我有这个问题,因为.nuget\NuGet.exe不包括在我的存储库中。虽然我在NuGet.targets启用了DownloadNuGetExe,但它在尝试下载时报告了代理错误。这导致项目构建的其余部分失败。

对我来说,以下步骤奏效了:

  • 找到未构建的项目
  • 删除/添加对解决方案中项目的引用。

我的问题实例是由一个普通项目引起的,该项目中有一个重复的类名(在不同的文件名下)。奇怪的是,Visual Studio无法检测到这一点,而是炸毁了构建过程。

问题的原因可能是您在解决方案中混合添加了对DLL文件和项目的引用。

如果您有项目A、B和C:

  • A引用B和C作为解决方案中的项目。
  • B引用C作为DLL文件(引用文件)

您可以单独构建每个项目,但无法重建以以下结尾的解决方案:找不到元数据文件C.dll。

将引用从文件更改为解决方案中的项目会有所帮助。

在我个人的情况下,我没有在解决方案中添加对其中一个项目的引用,这就是我的错误。

  1. 右键单击解决方案,然后单击清洁。
  2. 右键单击解决方案,然后单击重建。

我在Visual Studio 2012中的一个包含许多项目的解决方案中遇到了这个问题。按照与Project Build Order(在解决方案资源管理器中右键单击并重建)相同的顺序手动重建解决方案中的每个项目。

最终我得到了一个给我一个编译错误的问题。我修复了错误,之后解决方案将正确构建。

好吧,前面的答案对我没有任何作用,所以它让我思考为什么我点击并希望作为开发人员,我们应该真正尝试了解这里发生了什么。

对我来说很明显,这个不正确的元数据文件引用必须保存在某个地方。

对. csproj文件的快速搜索显示了错误的行。我有一个名为的部分似乎挂在旧的错误文件路径上。

<ItemGroup><ProjectReference Include="..\..\..\MySiteOld\MySite.Entities\MySite.Entities.csproj"><Project>{5b0a347e-cd9a-4746-a3b6-99d6d010a6c2}</Project><Name>Beeyp.Entities</Name></ProjectReference>...

所以一个简单的修复真的:

  1. 备份您的. csproj文件。
  2. 在. csproj文件中找到不正确的路径并适当地重命名。

确保在你摆弄之前备份你的旧. csproj

如果您使用假程序集,可能会显示此错误。删除假程序集会导致项目的成功构建。

我也对这个问题感到毛骨悚然,但是在尝试了之前的答案之后,唯一对我有效的是在我的解决方案中逐一打开每个项目并单独构建它们。

然后我关闭了Visual Studio 2013,重新打开了我的解决方案,它编译得很好。

这很奇怪,因为如果我单击解决方案资源管理器中的每个项目并尝试以这种方式构建它们,它们都失败了。我不得不在他们自己的解决方案中单独打开它们。

在打开引用了Entity Framework的项目后,我收到了此错误,因此我删除了此类引用,并以这种方式通过数据包管理器重新安装了Entity Framework版本6.0.0.0:

install-package entityframework -version 6.0.0.0

错误仍在显示,所以我认为这些引用存在,因为据说项目上“预装”了旧版本的Entity Framework,但它并没有真正起作用。

所以我去了文件packages.config,注意到还有另一个引用:

<packages>**<package id="EntityFramework" version="5.0.0" targetFramework="net45" />**<package id="EntityFramework" version="6.0.0" targetFramework="net45" /></packages>

然后我删除了该行,清理并重建了项目和容器解决方案,它终于工作了。

在我的情况下,我以错误的方式安装了目录。

如果您的解决方案路径类似于"My Project%2c非常流行的%2c单元测试%2c软件和Hardware.zip",它无法解析元数据文件,也许我们应该阻止一些无效的单词,如%2c。

当从某些站点克隆存储库时,目录名是URL编码的。这会将目录名中的空格字符转换为%20,正斜杠转换为%2f,下划线转换为%5f等。虽然,我不确定为什么%符号会破坏事情。

将路径重命名为普通名称解决了我的问题。

我正在运行Visual Studio 2013。

似乎构建依赖项不正确。删除*. suo文件确实解决了我遇到的问题。

我遇到了同样的问题。在我的情况下,项目仍然会在发布模式下构建,而当我试图在调试中构建时,它失败了。

我最终解决这个问题的方法是简单地将所有dll(以及我发布文件夹中的其他文件)复制到我的调试文件夹中。

关闭和重新打开Visual Studio 2013对我有用!

当我反编译一个非常旧的库时,我遇到了类似的问题,该库部署在正式生产环境中,但源代码丢失了。

我使用. dll,反编译并生成项目和解决方案。由于此类错误,我无法构建解决方案。

以前的答案中的提示没有帮助,但过了一会儿,我注意到一些项目中缺少对几个程序集的引用,如System.dll.

假设项目A依赖于项目B。项目B中没有System.dll的引用,但是构建后的错误就像“元数据文件'B.dll'找不到”。

项目B中没有遗漏System.dll的错误。

在项目B中添加对System.dll等库的引用解决了问题。(System. Data、System. DirectoryServices等)

如果您的解决方案名称中有空格,这也会导致问题。从解决方案名称中删除空格,因此路径不包含%20将解决此问题。

只是指出一个显而易见的问题:如果您没有启用“构建开始时显示输出窗口”,请确保您注意到您的构建是否失败(左下角的小“构建失败”错误)!!!!

aaaaaand六年后在升级到Visual Studio 2015期间出现了同样的问题。因为这个特定的解决方案不在这个列表中,我正在添加它。

两个引用的dll位于c:\windows\system 32…文件夹中。将它们移动到非系统文件夹并添加对新文件夹的引用最终修复了它。其余的问题确实是其他人在这里已经说过的

当我尝试发布Web应用程序时,我遇到了这个错误。原来一个类属性被包装成

#if DEBUGpublic int SomeProperty { get; set; }#endif

但属性用法不是。显然,发布是在没有DEBUG符号的发布配置中完成的。

在我的情况下,问题是由一个简单的构建错误引起的,

错误CS0067:事件'XYZ'从未使用

由于某种原因,它没有显示在错误窗口中。

正因为如此,Visual Studio构建系统似乎错过了错误,并试图构建依赖项目,这反过来又因烦人的元数据消息而失败。

这个建议是——尽管听起来很愚蠢——:

先看看你的输出窗口

我花了半个小时才想到这个主意…

我发现,如果你删除Microsoft.CS竖琴组件作为项目中的引用,你会得到这个错误。

对于我来说,我注释了特定(空)命名空间中的类:

namespace X.Y.Z.W{
// Class code
}

当我删除命名空间代码和它的导入(使用)命令时-它解决了问题。

在构建中,它还说-以及缺少的项目DLL文件:

错误CS0234:类型或命名空间名称“W”在命名空间“X. Y. Z”中不存在(是否缺少程序集引用?)

我在我的解决方案中添加了一个新项目并开始使用它。

原因是什么?我引入的项目针对的是不同的. NET框架(4.6和我的另外两个是4.5.2)。

在我的例子中,这些错误是由NuGet包管理器中的一些损坏引起的。解决方案的子项目没有被构建,但由于元数据错误,没有显示任何错误。

一旦纠正了所有NuGet包,项目就可以再次正常构建。

建议的答案对我不起作用。这个错误是另一个问题的诱饵。

我发现我的目标是一个稍微不同的版本。NET,这被编译器标记为警告,但它导致构建失败。这应该被标记为错误而不是警告。

我得到了同样的错误“元数据文件'. dll'无法找到”,我尝试了上面描述的几件事,但错误的原因是我引用了第三方DLL文件,该文件的目标是. NET版本高于我的项目目标. NET版本。所以解决方案是更改我项目的目标框架。

在我的情况下,它是由. NET Framework版本不匹配引起的。

一个项目是3.5,另一个参考项目4.6.1。

检查主项目的. csproj文件。如果您在解决方案中删除项目或更改引用,Visual Studio不会清理它。

我在. csproj文件中引用了三次旧项目,并编译将此错误显示给那些已删除的项目。

我也有同样的错误。它隐藏在下面的路径中。我为DLL文件引用的路径类似于“D:\Assembles Folder\Assembly1.dll”。

但是程序集引用的原始路径是“D:\Assembles%20Folder\Assembly1.dll”。

由于此路径名变化,无法从其原始路径检索程序集,因此引发“未找到元数据”错误。

解决方案在Stack Overflow问题如何在C#中将所有空格替换为%20?中。

哇,看来这个错误可能来自任何地方。

无论如何,我在我的MVC应用程序中添加了一个新的WebAPI控制器,它自动从NuGet获取所有引用。不久之后,我从NuGet UI中删除了引用,但我忘记使用它们删除文件(即System.Http)。

出于某种原因,我收到的错误是这个,还有一个关于未使用变量的简单警告。

我注释掉变量以至少摆脱警告,重建指出了所有使用不存在引用的文件。删除这些文件后,一切正常。

当我从对扩展方法的调用中删除类型注释时,我在Visual Studio 2015中遇到了这个错误,这只留下了空的尖括号。

所以我没有obj.extensionMethod<Type>()而是obj.extensionMethod<>()

我将此归类为Visual Studio中的bug,因为我不知道该错误如何产生该错误。

很奇怪!我尝试了所有以前的答案,不幸的是,在我的情况下没有任何效果。

我遇到了两个错误:

  1. 缺少. dll文件
  2. 方法已在具有相同参数的另一个位置定义

我已经清除了第二个错误,首先删除了在另一个地方复制的函数。

我的第一个错误-即. dll文件丢失已自行解决。

我想说,如果您在. dll丢失文件错误的同时出现多个错误,请先尝试解决其他错误。也许. dll错误会自行解决!

在我的情况下,我有这个错误,因为我的一个项目使用了与其他解决方案不同的. NET框架版本。我使用NuGet包管理器安装NLog,所以,我认为,它安装了这个项目的. Net版本。

我尝试了这篇文章中的所有解决方案,但没有一个有效。我删除了NLog,清理了解决方案并使用trid编译:同样的事情,CS006错误。

当我从这个项目中删除obj\Debug中的所有文件时,解决方案编译了。

我在getting latest(Team Foundation Server(TFS)命令)之后遇到了这个问题。

解决冲突后,我发现使用namespace that does not exist in the project的语句。

所以我删除了using语句,然后clean and rebuild,一切都好。

删除解决方案文件夹中包含NuGet的packages文件夹对我有用。重建后,一切再次正常。检查解决方案中的References并检查是否有黄色三角形的引用。

示例图片:

在此输入图片描述

看起来此类错误与Visual Studio未提供有关错误的正确信息有关。开发人员甚至不了解构建失败的原因。它可能是语法错误或其他原因。通常,要解决此类问题,您应该找到问题的根源(例如,查看构建日志)。

在我的情况下,问题实际上是Error List窗口没有显示任何错误。但真的有语法错误;我在Output窗口中发现了这些错误,修复后,问题就解决了。

以前的解决方案都不适合我,所以我将分享我做了什么。

在合并来自另一个相互引用的分支的一些新类库后,我遇到了这个问题。删除项目中的引用并重新创建它们最终解决了这个问题。显然Visual Studio已经合并了错误的文件路径。

对我来说,它发生在我将一个新项目纳入解决方案时。

Visual Studio自动选择。NET Framework 4.5。

我像其他库一样更改为版本。NET 4.5.2,它起作用了。

此问题可能是由于您的代码中的语法错误而发生的,由于元数据错误,您可能看不到该语法错误。因此,在执行之前答案中的任何操作之前,请查看您的源文件。

在改变了很多解决方案之后,我开始遇到这个问题,搁置了更改并撤销了它。

解决它的唯一方法是删除并再次添加从TFS到我的本地文件夹的映射。

在我的情况下,ReSharper是愚蠢的,即使我的项目针对C#6,我也被提供重构以使用仅限C#7的功能。

出于这个原因,我最终更改了此代码,

private DateTime? _joinedDate;[Column(TypeName = "DateTime2")]public DateTime JoinedDate{get { return _joinedDate ?? DateTime.Now; }set { _joinedDate = value; }}

到这个代码中:

private DateTime? _joinedDate;[Column(TypeName = "DateTime2")]public DateTime JoinedDate{get => _joinedDate ?? DateTime.Now;set => _joinedDate = value;}

出于某种原因,使用表达式主体的getter和setter会使编译器产生元数据错误而不是语法错误。

我遇到了这个问题。在我的案例中,多个C#项目被引用为DLL文件。在用作DLL文件的项目中(在其他项目中)的任何编译时错误都会导致大量错误。原因是,编译时错误会阻止创建相应的DLL文件,这会导致项目中引用缺失DLL文件的一系列错误。

因此,当您在解决方案资源管理器中重建时(忽略简单的编译时错误),将发生一堆“找不到元数据文件. dll”错误(让您认为除了简单的重建之外还做错了什么)。

如果您面临这个问题,那么最好的解决方案是清理解决方案,然后逐个构建每个项目,以找出哪个项目正在启动错误。

我看到这个错误是因为我的代码中有以下行(看起来我还在SQL模式下思考):

if(myVar is null)DoSomething();

Visual Studio(2017)在设计或编译时没有报告错误,但项目无法构建并给出“缺少. dll”错误。将错误行更改为:

if(myVar == null)

问题解决了。

到目前为止的几十个答案都不适合我。在我的情况下,我也得到了错误:

推断出元组元素名称“值”。请使用语言版本7.1或更高版本通过其推断名称访问元素

这出现在构建时的“元数据文件'. dll'无法找到”错误旁边,但它很快就消失了,因为IDE“赶上”时有时会出现错误。

双击错误以找到它,并删除违规代码,修复它。

否则,您可以在Visual Studio中尝试此操作:

菜单项目→<项目名称>属性构建→按钮高级语言版本c#<最新次要版本>(例如“Cc#.0”)

这也解决了它。

看起来“找不到元数据文件'. dll'”通常是其他一些潜在问题的症状,因此,如果顶级解决方案都不适合您,请检查其他错误和警告并尝试找到真正的问题。

对我来说,问题是我打开了两个Visual Studio窗口,我的项目在一个窗口中运行调试,我试图在另一个窗口中构建它。

我不得不停止调试,然后它让我成功构建。

在我的案例中,设置目标框架解决了问题:

  1. 右键单击项目并选择Properties

  2. Application中,将Target Framework更改为与主项目相同(例如“. NET Framework 4.5”)。

在我的例子中,我也有一堆其他的构建错误(一些简单的类型转换)以及这个错误,我挠头试图解决这个问题,我没有专注于其他错误。

最终解决我的问题的是我修复了所有其他构建错误,然后我再次构建并成功构建。

因此,如果您有其他构建错误以及丢失的DLL文件错误,并且其他任何东西都不适合您,那么请先尝试修复其他错误,然后再次构建解决方案。

对我来说,问题是构建输出中没有出现的错误,即我有两个实用程序类最初位于不同的命名空间中。我更改了第二个的命名空间以匹配第一个的命名空间(不知道第一个中还有另一个实用程序类),这就是这个错误开始出现的时候。

我想象构建输出错误浮出水面,因为无法构建逻辑层库DLL文件,主应用程序找不到它。

解决方案是将第二个实用程序类改回不同的命名空间,这就是真正的构建错误开始涌入的时候。在整理它们之后,构建进行得很好。

作为概述,如果以前的任何解决方案不适合你,你可能已经抑制了Visual Studio未显示的代码中的错误,因此请尝试重新跟踪你的编码步骤并检查是否有任何违规行为。

PS:这是在Visual Studio 2015社区版中

正如user@burzhuy指出的那样,查看Output窗口而不仅仅是Error List窗口可能很重要。

在我的案例中,我正在对罗斯林编译器进行修改。它的构建项目运行额外的检查,以查看公共字段是否与编译器的公共接口一致,否则它会产生RS0016或RS0017错误。我添加了几个公共字段,并通过将鼠标悬停在错误上并选择“添加到公共API”来修复RS0016错误。

后来我改变了主意,将公共字段移动到另一个类。由于某种原因,这产生了“元数据文件找不到错误”,我越是摆弄它,我得到的错误就越多。

您需要找到正确的PublicAPI.Unshipped.txt文件(在我的情况下,它在E:\Roslyn\32414\src\Compilers\Core\Portable中)并手动编辑它以删除不再相关的行。

在我的例子中,我收到此错误消息的原因很简单,从TFS获取项目的最新版本后,解决方案中错误的项目被标记为启动项目。选择正确的项目作为启动项目为我解决了这个问题。

在我的例子中,解决方案中的一些项目针对任何CPU,其中一些针对x86。在跨解决方案统一平台目标后,编译错误消失了。

我遇到了同样的问题。在我的例子中,我引用了一个类库项目,其.网络版高于我的项目,VS未能构建该项目,并引发了与您发布的相同的错误。

我简单地将我的类库项目(破坏构建的那个)的.网络版设置为与引用项目的. net版本相同,并解决了问题。

我在4.6.1中有一个类引用了4.6.2中的一个接口……将类升级到462修复了它。

Visual Studio IDE在幕后不做任何构建,Msbuild应用程序做。VS IDE本质上只是构建Msbuild使用的项目文件,如果你把它留给IDE自己解决问题,它经常会出错。如果你得到Metadata file '.dll' could not be found错误,那很可能是因为没有找到正确/预期的程序集。所以也许Visual Studio可能正在为4.5框架应用程序创建一个项目文件,并期望4,5个程序集,而你引用的是4.0程序集。因此,请查看您的Visual Studio设置中的不兼容性或自己进入项目文件,并通过指定正确的路径<Reference Include="C:\\correct path to assembly\\yourAssembly.dll" />手动修复它。

我有同样的问题和另一个解决方案。

问题:一个解决方案,多个项目。使用其他一些结果的主应用程序失败了,说:

无法找到元数据文件'C:\Repos\TheApplication\TheApplication ationCommon\bin\Debug\TheApplication.dll'

但实际上这个项目产生了C:\Repos\TheApplication\TheApplicationCommon\bin\Debug\TheApplicationCommon.dll另一个项目也使用相同的dll完美编译。

在我更新使用PostSharp 3. x. x. x的内部NuGet包之前,现在使用PostSharp 4. x. x. x。我的解决方案是将其添加到我的*. csproj文件中:

<?xml version="1.0" encoding="utf-8"?><Project ToolsVersion="..."><Import Project="..." Condition="..." /><PropertyGroup>...<AssemblyName>TheApplication</AssemblyName>...<SkipPostSharp>True</SkipPostSharp> <!-- This line --></PropertyGroup>...

另一个解决方案->清洁,另一个解决方案->重建,它在本地和构建服务器上工作。

希望它能帮助到某人。线程很旧而且很长,但此问题经常返回,我还没有看到此解决方案。顺便说一句,使用Visual Studio 2017(15.8. x)。

在我的情况下,在我的Web.config文件中更改此

<?xml version="1.0" encoding="utf-8"?>

对这

<?xml version="1.0"?>

解决了我的问题

我的问题出现在我编写c#7代码时,但该项目使用的是旧版本的. net框架

当我进行构建时,它通常会在Visual Studio 2017中显示这样的错误:

Error   CS0006  Metadata file 'C:\src\ProjectDir\MyApp\bin\x64\Debug\Inspection.exe' could not be found MyApp   C:\src\ProjectDir\MyApp\CSC 1   Active

但有时像这样的错误会显示几秒钟,然后它会消失并切换回上面的消息:

Error   CS1503  Argument 1: cannot convert from 'MyApp.Model.Entities.Asset' to 'MyApp.Model.Model.Entities.Inspection' MyApp   C:\src\ProjectDir\MyApp\ViewModels\AssetDetailsViewModel.cs 1453    Active

所以我花了时间解决第一个错误,但真正的问题是由于第二个错误。首先,我必须删除所有的 /bin和 /obj目录,然后我还删除了上面提到的. suo文件。这使我能够将问题缩小到接口问题。

在我的界面中,我有这个:

    Task<IList<Defect>> LoadDefects(Asset asset);

但在我的实际实现中,我有这样的代码:

    public virtual async Task<IList<Defect>> LoadDefects(Inspection inspection){var results ...// ....
return results;}

在我将界面更新为以下内容后,构建成功完成:

    Task<IList<Defect>> LoadDefects(Inspection inspection);

所以看起来VS中的缓存导致它不断显示CS0006错误,而实际问题是CS1503错误。

在我的例子中,我在注意到我引用了一个. Net Framework 4.7项目作为对. Net Framework 4.6.1项目的依赖后解决了这个问题。将项目4.7迁移到4.6.1后,我的应用程序正常编译

我同意以上只是一个区别。在我的情况下:我正在使用Visual Studio 2019。我关闭了VS-2019并使用VS-2017打开。并重建项目一切正常!谁在我的位置日期是:2019年4月19日

在我的情况下,当我在本地引用NuGet包并将其目录移动到其他地方时,我改变了NuGet.Config中的路径,但不幸的是,我发现我应该手动更改.csproject文件以更新参考路径,但错误消息CS0006远远没有描述这个问题。一般来说,它也发生在有一个引用的DLL,无法找到,能够识别问题搜索你的引用在项目中的问题,你会发现一些引用与警告图标关联,尝试修复这些,它应该按预期工作。

很多这些答案听起来像是反复试验,但在我的例子中,很简单:在那个特定的位置没有找到引用的dll。

如果您看到构建错误,通常在这种情况下,构建会抱怨许多dll。关键是找到缺少的正确dll。在我的案例中,我的解决方案中的一个项目有直接dll引用而不是项目引用。因此,我需要在构建失败的解决方案之前构建输出该dll的项目,以确保失败的解决方案在该特定位置找到丢失的dll。

哇……这很简单,但很难用语言表达。

此问题可能发生,因为您正在使用为项目选择的. net版本不支持的功能。

在我的情况下,原因是我使用???运算符来检查null并抛出异常。

奇怪的是,VS没有在构建错误列表中告知问题的实际原因。

但是您可以在构建的产出日志中找到此信息。

删除bin/obj文件夹然后重建项目对我有用。

在我的案例中,我认为发生的事情是我在第一次构建项目时遇到了运行时错误,因此没有生成我的dll文件。

当从另一个项目中引用一个项目时就会发生这种情况。我引用的项目就是有问题的那个。

在我的例子中,解决方案的父文件夹的名称中有%20。我通过删除%20重命名了父文件夹,问题得到了修复。

我在VS2019中遇到了同样的问题。这是你需要做的:

  1. 在某个分支上推送最新的更改
  2. 删除项目
  3. 从快速入门中删除项目-您可以尝试引用不存在的项目,它会要求您删除
  4. 克隆项目
  5. 运行项目

我遇到了这个问题。在我的情况下,我从所有项目中删除了所有bin和obj文件夹,然后此错误将为我解决。再试一次以解决问题

我在更新dlls/nuget后遇到了这个问题。

我可以通过更正. csproj文件手动解决此问题。大多数情况下,文件中的版本没有更新。例如:

<Analyzer> Include="..\packages\Microsoft.CodeAnalysis.**VersionCheckAnalyzer.2.9.1**\analyzers\dotnet\Microsoft.CodeAnalysis.VersionCheckAnalyzer.dll"/>
<Analyzer> Include="..\packages\Microsoft.CodeAnalysis.**VersionCheckAnalyzer.2.9.7**\analyzers\dotnet\Microsoft.CodeAnalysis.VersionCheckAnalyzer.dll"/>

Visual Studio 2019这对我有用:

  1. 关闭Visual Studio
  2. 删除隐藏的.vs文件夹
  3. 重新打开Visual Studio并重建解决方案。

我在尝试发布我的项目时遇到了这个错误,

上面都回答了,没有帮助我…

我只是改变我的部署和发布成功!

在我的情况下,是依赖项目(项目取决于错误消息中的项目)在项目的“属性→应用程序→程序集信息…”下的“程序集版本”字段中缺少值。我只是添加了与“文件版本”相同的数字,单击“确定”,编译器错误消失了!

缺少汇编版本

事实证明,重新添加AssemblyVersion然后再次构建项目会导致另一个错误,声称它已经存在于项目中。它是!在解决方案资源管理器中项目的属性节点下,有一个“SolutionVersionInfo.cs”文件也包含AssemblyVersion属性-从项目中删除此文件解决了此错误。

对我来说,问题发生是因为我是内联变量。

因此,以下成功构建:

ReportCategory reportCategoryEnum;Enum.TryParse(reportCategory, true, out reportCategoryEnum);

当我修改代码如下时,没有显示错误,但构建失败了

Enum.TryParse(reportCategory, true, out ReportCategory reportCategoryEnum);

我有一个非常不寻常的错误案例,但也许有人会从中受益。

我遇到了这个错误,缺少解决方案中的一个项目的. dll文件(使用目标框架netStandard 2.0),我正在处理并且该项目使用的引用(Microsoft. Office. Interop. Word)立即出错。

这个解决方案是从git存储库中克隆的,我的团队中的其他人也可以很好地编译这个解决方案。

我尝试了所有提出的问题解决方案-重新启动VS,计算机;清理项目;检查和取消选中构建复选框;检查构建顺序是否正确等。

我发现默认情况下没有选择此项目的清单(项目属性中清单的下拉列表为空且已禁用)。因此我尝试添加它,但没有任何效果。

最后,我开始将这个项目. csproj文件与这个项目的其他旧版本中的一个进行比较,编译时没有问题。经过一些无用的尝试我发现,Microsoft. Office. Interop. Word的路径在两个项目中是相同的,甚至认为这是一个以大量“上升”符号(…\)开头的相对路径。而不工作的项目比其他项目低一级。

在项目. csproj文件中的Microsoft. Office. Interop. Word的引用路径中添加一个“上升”符号(…\)解决了这个问题。

我不知道为什么这条路径是以这种方式创建的,并且在我的情况下不更新,而它对我团队中的其他人正常工作。

在我的情况下,我删除了git文件夹并删除了Git(Azure运营模式)。这是我做的唯一有效的方法。

我尝试了清理,重建,重新配置构建,删除bin和obj文件夹;没有工作。当我删除Git的解决方案时,哇!它对我有用。

我不明白,但这为我解决了。

这在VS2019中为我工作。Net Core,ASP. Net Core解决方案。

  1. 在解决方案的同一位置打开PowerShell控制台。
  2. 键入dotnet restore恢复所有软件包和项目
  3. 类型dotnet build。将构建解决方案

现在它也可以从Visual Studio IDE构建。没有其他解决方案为我工作

我在一个. csproj文件中发生了合并冲突,最终得到了一个构建目标的两个副本。

<Compile Include="SystemCodes\APSystemCodes.cs" />

在我消除了重复之后,构建工作了。

在VS 2019中,在项目参考文献下,通过展开分析仪检查是否有任何未解决的项目:

在此处输入图片描述

对我来说,有两个路径错误的.dll文件。右键单击每个并选择删除

在此处输入图片描述

构建项目,然后构建解决方案。完成。

对我来说,这是一个未使用的导入“使用ApsNetCore”在控制器上。删除它,清理,重建它,它工作了。

对我来说,这是错误的文件夹名称。如果您从源代码关闭,将空格替换为'%20',您将收到此类错误。解决方案-只需重命名命名错误的文件夹。

导航到解决方案的文件夹资源管理器并删除引发错误的未使用项目文件夹。在我的情况下,删除项目后,该文件夹仍存在于目录中。删除成功构建的文件夹解决方案后!

这里解释的大多数方法都没有为我解决问题。

最后,我通过应用以下步骤修复了问题:

1.关闭Visual Studio。

2.删除每个项目bin文件夹中的所有内容。

3.打开解决方案并重建。

我在使用Visual Studio 2019时遇到了同样的错误。在仔细查看后台发生的事情后,我发现附加类库存在错误,这些错误反过来又无法正确编译并同时通过错误“未找到元数据文件”。更正错误,再次编译,一切正常。

在我的情况下,答案是在输出选项卡的分析中找到的。

当前项目的框架版本与其他项目不同。将框架版本更改为现有项目版本将解决此问题。

这里没有别的东西对我有用,但这确实:

  1. 使用Git隐藏更改
  2. 清洁和建造
  3. 应用藏匿
  4. 重建

现在,突然VS向我指出了一个以前没有出现的错误。此外,一个文件中有几个错误是智能感知忽略的。我在没有红色下划线的帮助下纠正了这些错误,然后能够成功构建。

我用的是VS 2019。我们组应该从2017升级到2019。

实际解决方案

我试图克隆到我的C:驱动器上的一个文件夹,这是我漫游配置文件的一部分(因此在网络上)。我创建了一个本地文件夹,保证不会被跟踪并在那里克隆。问题消失了。

备注:

  • 这不可能是路径长度问题,因为我还尝试将其克隆到名称比原始路径长的文件夹中,并且构建得很好。
  • 这不可能是由于文件名中的空格造成的,因为我们的解决方案文件夹中存在空格。
  • 这个问题似乎只影响VS2019而不影响VS2017。虽然我们以前遇到过漫游配置文件问题,但当我们试图与Git同步而不是构建时,它就会发生。

我试过/检查过的其他事情都无济于事

  • 重启VS、注销、重启等。
  • 从运营模式仓库中删除解决方案并重新克隆
  • 我们的代码中没有构建错误
  • 取消选中并重新选中构建配置框
  • 构建顺序是有道理的
  • 所有。NET Framework目标相同。(在我的情况下为4.6。可能无关紧要。)
  • DLL实际上存在于路径中
  • 重装项目
  • 重新安装NuGet包
  • 重新添加DLL

大小写敏感

在我的情况下,错误消息如下

严重性代码描述项目文件行抑制状态错误命令"C:\Program Files(x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\gacutil.exe" /i"C:\用户\cmaggiul\source\repos\消费-价值-api\EValueApi\EValueApi\bin\debug\EValueApi.dll"退出,代码为3。

我遵循EValueApi.dll文件的路径,发现调试目录在Windows中是大写的。我将目录更改为小写(以匹配gacutil.exe使用的位置,它解决了我的问题。

在Visual Studio 2019中:

  • 关闭Visual Studio。
  • 删除位于同一目录中的. vsccc文件文件夹作为您的解决方案文件。
  • 打开解决方案并重建。

在我的例子中,我有一个对另一个项目的引用,我删除了它,但我从未在代码中使用过它,因此我没有得到任何编译错误。

提示:检查您的解决方案中是否有任何不存在的对其他项目的引用。

我在我的项目中遇到了同样的问题,我在解决方案中添加了控制台应用程序,但其他解决方案不起作用并且找不到. dll,所以我尝试了这种方法:

  1. 右键单击有问题的项目
  2. 单击应用程序选项卡,这是默认的
  3. 将输出类型控制台应用程序更改为类库

我遇到了同样的问题。首先,我从工具>Nuget包管理器>包管理器设置中清除了所有nuget缓存,然后单击“清除所有Nuget缓存”。之后打开Powershell并运行“dotnet恢复”然后“dotnet构建”。在我的情况下,这个解决方案修复了我的错误。

在我的情况下:转到添加引用。在参考管理器窗口中取消选中其他项目的dll项目。保存它。再次将参考dll项目添加到其他项目。

使用Blazor WebAssemblyASP.NETCore托管应用程序时,当我删除Weather的预测模型时出现了这个问题,这导致了一个不可见的构建错误。

如果这是您的情况,只需删除FetchData.razor文件,您就可以走了!

我在对具有纯内容项目的MonoGame解决方案进行干净的CLI重建时遇到了这个问题。

解决方案是向每个内容项目添加一个带有空构造函数的虚拟类文件。

我今天在VS2022上通过Blazor项目解决了这个问题。

潜在的问题是我引入了一个例程C#编译错误在. razor文件中声明的C#代码中。VS2022正在从构建错误列表选项卡中删除错误的显示。我通过扫描输出控制台日志选项卡中的构建输出找到了C#错误,其中我的C#错误被描述为预期。

附言。如果您想知道,我有一个单元测试项目引用了我的Blazor Web项目。从Unit Test项目到Blazor应用程序的项目DLL引用抱怨缺少Blazor DLL。

对我来说,它仍然是VS2022当前版本中的一个“功能”。

  1. 构建解决方案的所有约80个项目
  2. 取消中间的构建
  3. 卸载约70个项目并全部重建

导致错误。修复:

  1. 重新加载所有项目
  2. 重建一切直到结束
  3. 那就卸货吧

重建成功没有元数据错误