如何在没有任何错误或警告的情况下找到构建失败的原因


144

我有一个WebApplication,其中包含对WCF服务的引用。

使用Visual Studio 2010进行构建时,构建失败,没有任何错误或警告。但是,构建.csproj使用MsBuild成功。

无法弄清楚应该如何在Visual Studio中尝试解决/诊断问题。你能帮忙吗?

编辑:

我发现构建失败了,

  1. 来自状态栏中显示的文本。
    在此处输入图片说明

  2. 从输出窗口:

    ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

5
您怎么知道您的构建失败了?
山姆,我说要

5
输出标签中有什么吗?
Malice 2012年

15
尝试增加Visual Studio中“输出”窗口的详细程度。它可以帮助确定问题。如何增加详细级别:blogs.msdn.com/b/saraford/archive/2008/10/07/...
马克西姆科尔尼洛夫

6
您是否尝试过重启VS2010甚至重启PC?
comecme 2012年

2
@NahuelI。我在另一个项目中再次遇到类似的问题,当我搜索stackoverflow时,我又回到了自己的问题:-)
Abhijeet 2014年

Answers:


119

我遇到了类似情况。就我而言,在csproj文件的BeforeBuild目标中出现的自定义操作(来自Nuget.org上的MSBuildVersioning包-http : //www.nuget.org/packages/MSBuildVersioning/)失败,而没有触发正常的地方。

我可以通过将“ MSBuild项目的构建输出详细程度”(在最新的Visual Studio的“工具”选项卡[路径:工具>选项>构建和运行 ]中)设置为“ 诊断 ”来确定,如下所示。然后,这表明自定义操作(在我的情况下为HgVersionFile)失败了。

Visual Studio截屏,显示修改后的设置。


2
理查德(Richard)的出色发现-将两个详细级别都设置为诊断时,这是非常有用的信息
Dai Bok

3
对于像我这样一无所知的人:要使用此方法,您可能必须搜索输出窗口的内容。我的构建错误被#pragma warning disable语句隐藏,仅当我在输出窗口中搜索“错误”时才可见。
sirdank

将详细程度设置为诊断后,我发现我遇到了System.OutOfMemoryException。我正在使用计算机的98%的可用内存。这是一个很好的答案!
TxRegex

1
这也解决了VisualStudio 2017上的问题。非常感谢。
艾登

1
对我来说,我使用Queue New Build在TFS上构建,并且Queue Build对话框在第二个选项卡上有详细信息,我可以打开它,然后在构建日志中查看问题。
AaronLS

135

Build + Intellisense吞噬了错误消息。选择仅生成显示它们。

屏幕截图


刚进入这些都不显示错误的情况:(
Imad

1
哇,这为我工作,这在VS 2019的新版本中到底是怎么回事。谢啦!
卡特

1
@AbuAbdullah为我工作。在帮助他人方面做得很好。

谢谢,保存了我的一天
Bikram Limbu

59
  • 如果解决方案包含多个项目,请尝试一次构建一个项目。
  • 尝试重新启动Visual Studio。
  • 尝试重新启动计算机。
  • 尝试“ 全部重建
  • 尝试“ 清理解决方案 ”,然后删除“ vpspscc ”文件和“ vssscc ”文件,然后重新启动Visual Studio,然后再“ 全部重建 ”。

105
而当它无济于事时,我应该找一份新工作吗?
Alex Zhukovskiy

2
刚刚重启VS2013对我有帮助。我当时正在使用资源有限的VM,但是不确定是否与此有关。
Jmaurier '16

2
如果遇到此问题,则无法清理解决方案。
艾登

1
帮助我的是关闭VS的所有实例(不足以关闭有问题的实例),然后删除该.vs文件夹并再次启动VS。
EliSherer

22

VS(2013 Pro,Win 8.1)重新启动为我做到了。


带有单个MVC项目的VS 2015 Community Win 7。相同的分辨率。
maplemale

2
VS 2017 Community Win10。我想我应该先尝试将其关闭然后再打开,然后再寻找解决方案!
DreamTeK


9

我想扩展一下萨斯的答案

若要解决Visual Studio 2015 Update 2的问题,我必须一次构建一个项目,并在每次构建后查看输出窗口。

一个项目给了我

“类型或名称空间名称'SomeNamespace'在名称空间'BeforeSomeNamespace'中不存在(您是否缺少程序集引用?)”。

“错误列表”窗口中没有错误,但程序集的“参考”下有一个黄色警告标志。

然后,我看到引用项目的目标是4.5.1,引用项目的目标是4.6.1。将4.6.1更改为4.5.1可以使整个构建成功。


1
好吧,一次构建一个项目可能不是必需的,但是有一点可以肯定:仔细查看输出窗口(最好将其复制/粘贴到记事本中,并使用Ctrl + F查找)作为“缺失”一词。它没有显示在错误列表中,但可以肯定会破坏您的解决方案。-.-
Dovydas Navickas

5

没有任何帮助,所以我删除了.suo文件,重新启动了VS,清理了项目,然后构建就可以了。


5

似乎这个问题有多个答案,所以我将根据个人经验补充我的经验,希望它可以节省某人的时间/压力。

确保解决方案中的所有项目都针对相同的.NET版本。

与OP相似,有0个错误,但构建一直失败。但是,有一个警告条目(埋藏在数百个无用的XML警告之间...)说,一个项目针对的是与引用该项目的项目不同的.NET版本。整个问题是我的解决方案中的一个项目针对.NET 4.5.2,而其余项目针对4.5.1。即使存在这种差异,它也应该可以工作(因此,这只是一个警告),但是不幸的是,它破坏了构建。

奇怪的是,它构建/运行了一段时间,但突然之间构建一次失败,从而导致了此问题。不知道我是如何开始抱怨不同的.NET目标版本的,但是我觉得Visual Studio中只有一些奥秘无法解决。


1
事实证明,我添加了一个新项目,并且它具有不同的.Net目标框架版本-我已解决了该问题,尽管构建仍然失败,但是我仍然能够看到破坏构建的错误。谢谢。
Fijjit


3

首先“清理解决方案”,然后重新构建。

如果不起作用,请关闭解决方案并重新启动解决方案。

尝试这些事情,希望绝对有效。


3

另外一种可能是Visual Studio需要以管理员身份运行,这可能与部署到本地IIS服务器或其他部署需求有关。


3

当所引用的项目之一是.NET Framework的版本高于当前项目时,可能会发生这种情况。


3

我遇到了同样的问题,并且将问题追溯到错误列表选项 “ Build + Intellisense”。

如果选择此选项,则列表中不会显示任何错误。切换到“ 仅构建 ”,然后出现预期的错误。

它看起来像Visual Studio中的错误。重新启动Visual Studio解决了此问题


2

将新项目(称为“ TestCleaner”)添加到解决方案后,我遇到了类似的问题:构建失败,没有错误。

我增加了输出的详细程度(请参阅Richard J Foster的说明),并在输出中搜索“失败”。我很快发现哪个项目失败了,以及为什么:项目“ TestRunner”失败,并出现“ 错误CS0246:找不到类型或名称空间名称'TestCleaner'”(即使代码中未突出显示任何问题)。

检查TestRunner的引用,确保对TestCleaner的引用被标记为未解决,并且引用属性中缺少路径。删除并重新添加并不能解决问题。同样,没有解释为什么。

未解决的参考

我终于找到了原因:“ TestCleaner”正在使用与其他项目不同的目标框架。是.Net 4.5.2; 其他的是4.5。


2

只是为了完整起见,也许是将来帮助某个人再次遇到相同的错误,我使用了Mahapps Metro界面并更改了一个窗口的XAML,但是却忘记了在后面的代码中更改部分类。在那种情况下,构建失败而没有错误或警告,我能够通过增加设置输出的详细程度来发现它:

错误窗格

输出窗格


5
还要在错误过滤器中选择“仅构建”而不是“构建+智能”。
niico

2

我有同样的问题。错误列表窗口有2个下拉菜单“显示包含的项目”和“显示产生的问题”。将鼠标悬停在下拉菜单上后,即可看到这些名称。将“显示生成的问题”下拉列表设置为“构建+ IntelliSense”,更改为“仅构建”后,错误将显示在列表中。


2

对我来说,这Target Framework就是问题所在。

我的项目Target Framework4.5.2,引用的项目Target Framework4.6.1

将项目更新Target Framework为后4.6.1,问题已解决。


1

我遇到了同样的问题!只需删除bin文件夹并重新启动即可VS。就这样。在中测试VS 2013


当我尝试通过删除bin和obj文件夹来解决此问题时,它进行了修复。我还需要管理员权限才能删除obj文件夹,因此发生了一些非常奇怪的事情。
DAG

1

为我解决的是.vs从解决方案的根目录中删除该文件夹,然后重新启动Visual Studio。

也许还很重要的一点是,即使错误未在“错误列表”窗格中显示,但它们仍存在于Build的输出中。


1

尝试从Powershell命令行构建项目:

dotnet build

这样,即使Visual Studio播放隐藏和查找并生成错误消息,您也可以在命令行输出中看到任何错误。


0

在向asp.net项目添加新页面后,这发生在我身上。

我所做的就是排除该页面,让它再次成功构建。

然后,我将所有代码都注释掉的页面添加回去。成功。

然后我一点一点地注释掉了代码,然后一切正常。


0

删除几个表格后,我遇到了同样的问题。输入代码并对删除的控件之一执行“显示定义”后,错误弹出。

我还针对我的一个项目制定了更高的框架,所以这也可能是一个问题。


0

我已经尝试了所有方法,但在我的情况下无济于事,然后我更改了上述设置,为我很好地解决了该问题。请尝试,如果可能对后来的观众有帮助。这些设置可能会因您的情况而有所不同,但请确保使用最初保留的相同配置设置来构建所有包含的DLL(如图所示)。配置设定

图片在这里。

干杯!


0

如果安装了nuget软件包“ Microsoft.Net.Compilers”,请确保它适合您的Visual Studio版本(“构建工具”版本)。

1.x版本表示C#6.0(Visual Studio 2015和更新)。例如1.3.2

因此,如果您使用VS2015,请不要升级到1.x以上的版本

https://stackoverflow.com/a/44397905/3862615


0

我在旧机器上确实有一个旧项目。当我关闭计算机时,项目正在正确构建。今天,我收到构建错误,但没有错误消息。从上面尝试了一些建议后,就没有运气了。

在Visual Studio 2015中,我在“ 工具”>“选项”>“项目和解决方案”>“生成并运行”下启用了“详细MSBuild ”。

它给了我一些关于构建的细节,但是没有错误。之后,我尝试检查扩展和更新(工具>扩展和更新),发现其中很少需要更新。

Nuget软件包是罪魁祸首,在更新了Nuget之后-构建成功。

在此处输入图片说明



0

由于一切都不起作用,因此发现以解决方案(.sln)打开项目时不会显示错误,而以项目打开项目时会显示错误。


0

我遇到了同样的问题,我更改了工具->选项->项目和解决方案/构建并运行-> MSBuild项目构建日志文件的详细程度[ 诊断 ]。由于某些原因,此选项在日志中显示错误,我的VS未在“错误”选项卡中显示“错误”!

在此处输入图片说明

执行上述设置,然后在记事本/文本编辑器的输出副本中进行搜索,以查找错误。它将显示所有错误。


0

重新启动Visual Studio对我有用。另外,请尝试正常重新启动Visual Studio(不以管理员身份运行)。尝试重新启动系统,然后重复上述步骤。


0

重现此症状的另一种方法:

我向现有解决方案中添加了一个新项目,并且构建输出报告了错误,例如“找不到类型或名称空间名称X ...”,但错误列表中未显示任何错误。

我引用的类在同一解决方案的其他项目中(被引用)。

原来,我错误地在新项目中选择了.net的早期版本。一旦我更改为与其他项目相同的版本,所有内容都将构建而没有任何错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.