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

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


当前回答

在我的案例中,我犯了这个错误,因为我的一个项目使用了不同于其他解决方案的。net框架版本。我使用NuGet包管理器来安装NLog,所以,我认为,它安装了这个项目的。net版本。

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

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

其他回答

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

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

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

一旦所有的NuGet包都得到了纠正,项目就可以再次正确地构建了。

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

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

以前答案中的提示没有帮助,但过了一段时间后,我注意到在一些项目中缺少对System.dll等几个程序集的引用。

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

项目B中没有丢失System.dll的错误。

在项目B中添加诸如System.dll之类的库引用解决了这个问题。 (系统。数据系统。DirectoryServices等等)。

我在我的解决方案中添加了一个新项目,并开始得到这个。

的原因吗?我引入的项目针对的是一个不同的。net框架(4.6和另外两个是4.5.2)。

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

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

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