为什么重建失败且没有错误?
从今天早上开始,这个错误一直出现。我构建了整个解决方案(25 个 C# 托管项目)并出现“重建全部失败”,但没有任何错误!(我有 13 条关于 COM 不支持泛型的警告,但这是“正常的”,因为一个 dll 被公开为 COM。)
为什么重建失败且没有错误?
从今天早上开始,这个错误一直出现。我构建了整个解决方案(25 个 C# 托管项目)并出现“重建全部失败”,但没有任何错误!(我有 13 条关于 COM 不支持泛型的警告,但这是“正常的”,因为一个 dll 被公开为 COM。)
本身不是答案 - 但您最好查看输出窗口并查看其中的内容。
此外,为了帮助解决这个问题,您可能需要查看您的 MSBuild 详细程度 - 如此屏幕截图所示(最后两个选项):
当心 - 最高级别会产生大量信息。
最后 -msbuild
在命令提示符下从解决方案文件夹运行将真正解决问题 - 因为错误消息和警告分别以红色和黄色出现。
我找到了自己的解决方案,它很简单:
出现此错误时,保存项目并关闭VS 2013。之后,重新打开VS2013并打开最后一个项目。
它就像一个魅力。但是每次都很烦!
许多人在VS2010、VS2012和VS2013中报告了这个问题。
可能是损坏的解决方案用户选项文件。
关闭解决方案,删除其 .suo(VS2012+ 为 .v12.suo),重新打开解决方案,Visual Studio 将构建一个新的。您将丢失启动项目、断点、书签、打开的文件、展开的项目/文件夹等。但与未构建的解决方案相比,这一切都微不足道!
我有同样的问题。我试图将更高的 .net 框架版本(4.5.2)引用到更低的 .net 框架版本(4.5),这会导致构建错误。我在两个项目中都制作了相同的版本并且它有效。
您是否尝试过在重新生成之前清洁溶液?
不久前,我通过修复 .NET Framework 安装(在我的情况下为 .NET Framework v4.0 Extended)来修复它。
如果我是你,这是我会做的检查和事情的列表(尝试在每个步骤之后构建):
我在 VS 2015 中遇到了同样的问题。我尝试了以下但没有成功:
最后我尝试了 Keith Robertson 的回答,删除.suo
( \Visual Studio 2015\Projects\[ProjectName]\.vs\[ProjectName]\v14\.suo
)。尽管这并没有让我得到一个好的构建,但它最终确实给了我一条错误消息,指出我的应用程序有两个入口点。我转到应用程序属性(Alt + Enter)并从下拉列表中选择一个 Startup 对象。
检查输出窗口(查看 -> 输出),因为它会告诉您出了什么问题。有时,可能会缺少引用,或者解决方案中的一个项目的目标 .NET 版本存在问题。
选择合适的目标框架
- 右键单击项目
- 属性
- 在应用程序选项卡中,选择目标框架
我只是有同样的事情。对我来说,它有助于重新启动 VS 并以管理员身份运行它。
我刚刚遇到这种情况,并意识到我在代码中留下了“#error”行并忘记了它。当我尝试构建时,构建失败但#error 行没有出现在我的错误中。
尝试搜索所有“#error”
解决方案是否已构建?
我通过转到数据库项目/项目设置并注意到目标平台是 SQL Server 2014 而不是应有的 2012 来修复它在 Visual Studio 2013 的新实现上。
解决方案:因为没有为调试设置先决条件,仅用于发布 01-更改解决方案配置(在主屏幕中)设置(调试到发布)将解决方案平台设置为(任何 CPU)02-设置调试的先决条件(如果您想继续调试模式) 03-设置所有项目的目标平台版本
我没有收到任何反馈/消息/错误。只是所有项目都未能建立。
我关闭并再次尝试-我注意到一个错误说“您无权访问...”
我点击了我的帐户,重新输入了我的凭据,然后重新构建了解决方案。
瞧!当我构建一个解决方案时,我得到了我习惯看到的东西——在他们所有的荣耀中都有很多错误。
希望这可以帮助某人。
就我而言,这是计算机的错误日期和时间。
Some of the files included in your solution are not in the correct directories, or you have changed the name of one or more directories in your application. In the solution explorer under Setup review the list of all files and remove those that are not properly listed in the SourcePath Property.
我遇到了与原始海报显示相同的问题,错误为 0,重建全部成功。输出选项卡显示一条消息,指出引用的 dll 是使用更高版本的 .NET Framework 构建的。
更改 .NET 框架以匹配解决了我遇到的 0 Errors 和 Rebuild All 成功的问题。
这显然有很多原因。我刚刚找到了我的问题的原因:我创建的新项目的 .NET 版本高于顶级项目的版本。(4.5.2 与 4.0)
这里还有另一个原因,有些人可能听起来很熟悉。我已将一些代码集成到包装 DLL 的解决方案中。随附的 C# 代码文件提供了一个很好的托管 API,并处理了低级 LoadLibrary 的内容以访问 DLL。两者都有相同的基本名称,所以我有 SomeName.cs 和 SomeName.dll。我可以把它放到任何项目中,它会起作用。
一段时间后,这并不是那么好,因为我开始在不同的项目中使用它。我在多个项目中获得了 DLL 和包装器代码的副本。所以我认为最好将包装器代码和 DLL 放入一个新的类库项目中,然后从其他项目中引用该新项目。
完成之后,我开始遇到这个问题。构建进展顺利,直到最后一个阶段,然后没有错误地失败。输出只显示成功。
问题是包装类库项目的名称。我为此使用了相同的基本名称(SomeName)。默认情况下,程序集名称为 SomeName.dll 并且我已经有一个这样的文件(要包装的 DLL),因此我与输出文件发生冲突。
将包装项目及其输出程序集重命名为 SomeNameWrapper 后,问题就消失了。
这可能不是您的确切原因,但您似乎也有一些名称冲突或部署问题。编译器不会给你一个错误也就不足为奇了,因为在编译阶段没有问题,问题从部署开始,显然这并没有以明显的方式出现。
一旦出现此错误的机会是当我们尝试重新命名服务引用名称时,我们会在服务引用中提供一些其他名称,但在命名空间中它将引用旧名称,因此如果您删除并添加服务引用然后保持相同的名称,否则我们可能会遇到此错误,但我们可以在输出窗口中看到错误。