我在一个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文件的路径类似于“D:\Assemblies Folder\Assembly1.dll”。

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

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

解决方案是在堆栈溢出问题我如何替换所有的空格与%20在c# ?

其他回答

在我的例子中,我注释掉了一个特定(空)命名空间中的类:

namespace X.Y.Z.W
{

    // Class code

}

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

在构建中,它还说-随着项目丢失的DLL文件:

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

删除bin/obj文件夹,然后重新构建项目对我来说很有效。

在我的情况下,我认为发生的是,我经历了一个运行时错误,我第一次构建项目,所以我的dll文件不是没有生成。

这发生在从另一个项目引用一个项目时。我引用的项目就是有问题的那个。

导航到解决方案的文件夹资源管理器并删除抛出错误的未使用的项目文件夹。在我的例子中,在删除项目后,文件夹仍然存在于目录中。删除文件夹后解决方案构建成功!

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

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

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

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

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

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