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

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


当前回答

在我的例子中,我以错误的方式获得了安装目录。

如果您的解决方案路径类似于“我的项目%2c非常流行%2c单元测试%2c软件和硬件。zip”,它不能解析元数据文件,也许我们应该防止一些无效的单词,如%2c。

当从某些站点克隆存储库时,目录名是URL编码的。它将把目录名中的空格字符转换为%20,正斜杠转换为%2f,下划线转换为%5f,等等。虽然,我不确定为什么%符号会破坏事情。

将路径重命名为正常名称解决了我的问题。

其他回答

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

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

我也遇到了同样的问题。Visual Studio没有构建被引用的项目。

写产品说明:

右键单击解决方案并单击Properties。 在左侧单击“配置”。 确保选中了“Build”下无法找到的项目的复选框。如果已选中,则取消选中,单击应用并再次选中方框。 (可选)必须在解决方案属性的发布和调试模式下执行此操作。

截图说明:

人们说一幅画胜过千言万语。点击动图放大,希望你很容易理解:

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

在我的例子中,解决方案的父文件夹的名称中有%20。我通过删除%20重命名了父文件夹,问题得到了解决。

检查主项目的.csproj文件。如果您在解决方案中删除项目或更改引用,Visual Studio不会清除这些问题。

我在.csproj文件中引用了三次旧项目,编译器向这些已删除的项目显示了此错误。