我在一个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文件的绝对路径…我读到过关于长度的问题。这是一个可能的问题吗?

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


当前回答

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

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

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

其他回答

我使用Visual Studio 2019得到了同样的错误。 在仔细研究了后台发生的事情后,我发现在追加的类库上有错误,这反过来又没有正确编译,同时通过错误“元数据文件未找到”。纠正错误,重新编译,所有工作。

在我的例子中,答案是在输出选项卡的分析中找到的。

这里解释的大多数方法都不能为我解决这个问题。

最后,我通过以下步骤解决了这个问题:

1. 关闭Visual Studio。

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

3.开放解决方案并重新构建。

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

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

正如用户@burzhuy指出的那样,查看Outputwindow,而不仅仅是错误列表窗口是很重要的。

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

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

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

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