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

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


当前回答

我在打开一个实体框架被引用的项目后收到了这个错误,所以我删除了这些引用,并通过pthe socket管理器重新安装了实体框架6.0.0.0版本:

install-package entityframework -version 6.0.0.0

错误仍然在显示,所以我认为那些引用在那里,因为有一个旧版本的实体框架应该“预安装”在项目中,但它并没有真正工作。

所以我去找文件包。Config,并注意到有另一个引用:

<packages>
  **<package id="EntityFramework" version="5.0.0" targetFramework="net45" />**
  <package id="EntityFramework" version="6.0.0" targetFramework="net45" />
</packages>

然后我删除了这一行,清理并重新构建了项目和容器解决方案,它最终工作了。

其他回答

这类错误看起来与Visual Studio没有提供关于错误的正确信息有关。开发人员甚至不理解构建失败的原因。它可能是语法错误或其他原因。通常,要解决这类问题,您应该找到问题的根源(例如,查看构建日志)。

在我的例子中,问题实际上是错误列表窗口没有显示任何错误。但确实有语法错误;我在输出窗口中发现了这些错误,在修复它们之后,问题就解决了。

建议的答案对我不起作用。这个错误是另一个问题的诱饵。

我发现我的目标是一个略有不同的。net版本,这被编译器标记为警告,但它导致构建失败。 这应该被标记为错误,而不是警告。

以上几点我都同意,只是有一点不同。 在我的例子中:我使用的是Visual Studio 2019。我结束了VS-2019,以VS-2017开始。并重建项目一切工作都很好! 我的职位日期是2019年4月19日

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

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

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

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

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

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

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

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