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

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


当前回答

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

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

其他回答

根据错误消息,我认为文件路径没有被截断。它看起来是不正确的。如果我正确地阅读消息,它似乎正在寻找DLL文件在…

工作= - \ VersionManagementSystem \ BusinessLogicLayer \ bin \ \工具调试\ BusinessLogicLayer.dll

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

在Visual Studio的新版本中仍然会发生这种情况(我刚刚在Visual Studio 2013中发生了这种情况):

另一种方法是关闭Visual Studio并删除.sln文件旁边的.suo文件。(它将在下次保存全部(或退出Visual Studio)时重新生成)。

当我在另一台机器上向解决方案中添加新项目时,我就遇到过这个问题,但.suo文件在其他情况下也可能被损坏,导致非常奇怪的Visual Studio行为,所以删除它是我一直尝试的事情之一。

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

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

对我来说,以下步骤是有效的:

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

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

The Visual Studio IDE doesn't do any building behind the scenes, the Msbuild application does. The VS IDE essentially just constructs the project file that is used by Msbuild and quite often it makes mistakes if you leave it up to the IDE to figure things out on it's own. If you are getting the Metadata file '.dll' could not be found error it is likely due to the fact that the correct/expected assemblies are not being found. So perhaps Visual Studio might be creating a project file for a 4.5 framework app, and expecting 4,5 assemblies, while you are referencing 4.0 assemblies. So look at your Visual Studio settings for incompatibilities or go into the project file yourself, and manually fix it by specifying the correct path <Reference Include="C:\\correct path to assembly\\yourAssembly.dll" />.