我在一个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

这是我如何引用我的usercontrols:

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

每次构建失败后都会发生这种情况。我能得到解决方案编译的唯一方法是注释掉所有用户控件并重新构建项目,然后取消注释用户控件,一切正常。

我已经检查了构建顺序和依赖项配置。

正如你所看到的,它似乎截断了DLL文件的绝对路径…我读到过关于长度的问题。这是一个可能的问题吗?

注释、构建和取消注释是非常烦人的,构建变得非常烦人。


当前回答

在我的案例中,问题是由一个简单的构建错误引起的,

事件“XYZ”从未被使用过

不管出于什么原因,它都没有显示在错误窗口中。

因此,Visual Studio构建系统似乎忽略了这个错误,并试图构建依赖的项目,这反过来又以恼人的元数据消息失败。

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

首先看看你的输出窗口!

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

其他回答

我今天在VS2022的一个Blazor项目的解决方案中击中并解决了这个问题。

潜在的问题是我引入了一个常规的c#编译错误 在。razor文件中声明的c#代码。VS2022正在从“生成错误列表”选项卡中删除错误显示。我通过在output控制台日志选项卡中扫描构建输出发现了c#错误,我的c#错误被描述为预期的。

附注:如果你想知道,我有一个单元测试项目引用我的Blazor web项目。从单元测试项目到Blazor应用程序的项目DLL引用正在抱怨缺少Blazor DLL。

到目前为止,这几十个答案中没有一个对我有用。在我的情况下,我也得到了错误:

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

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

双击错误以找到它,并删除有问题的代码,修复它。

否则,你可以在Visual Studio中试试这个:

菜单项目→<项目名称>属性→构建→按钮高级→语言版本→c# <最新小版本>(例如:“c# 5.0”)

这也能解决问题。

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

就我个人而言,我未能在解决方案中添加对其中一个项目的引用,这就是导致我出现错误的原因。

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

在对解决方案进行了大量更改之后,我开始遇到这个问题,搁置更改并撤销它。

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