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

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


当前回答

就我个人而言,我未能在解决方案中添加对其中一个项目的引用,这就是导致我出现错误的原因。

其他回答

几年后再回到这个问题,这个问题很可能与Windows的最大路径限制有关:

命名文件,路径和命名空间,最大路径长度限制

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

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

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

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

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

区分大小写的

在我的例子中,错误消息如下

严重性代码描述项目文件行抑制状态 命令"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ gaacuti .exe" /i "C:\Users\cmaggiul\source\repos\ consumer - evaluation -api\EValueApi\EValueApi\bin\debug\EValueApi.dll"退出代码3。EValueApi

我沿着路径找到了EValueApi.dll文件,并意识到调试目录在Windows中是大写的。我将目录更改为小写(以匹配gacutil.exe正在使用的位置,它解决了我的问题。

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

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

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