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

Posted

技术标签:

【中文标题】如何在没有任何错误或警告的情况下找到构建失败的原因【英文标题】:How to find reason of failed Build without any error or warning 【发布时间】:2012-10-25 17:09:25 【问题描述】:

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

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

不知道我应该在 Visual Studio 中尝试什么来解决/诊断问题。你能帮忙吗?

编辑:

我发现构建失败了,

    来自状态栏中显示的文本。

    从输出窗口:

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

【问题讨论】:

你怎么知道你的构建失败了? 输出选项卡中有什么吗? 尝试增加 Visual Studio 中输出窗口的详细程度。它可以帮助确定问题。如何提高详细程度:blogs.msdn.com/b/saraford/archive/2008/10/07/… 你试过重启VS2010甚至重启你的电脑吗? @NahuelI。我在另一个项目中再次遇到了类似的问题,当我搜索 *** 时,我得到了自己的问题:-) 【参考方案1】:

Build + Intellisense 吞下了错误消息。 选择 Build Only 会显示它们。

【讨论】:

刚刚遇到这些都没有显示错误的情况:( 哇,这对我有用,这在 VS 2019 的新版本中到底是怎么回事。谢谢大佬! 哇,这太奇怪了!这是 VS 中的错误吗? VS 2022 中仍在发生这种情况......【参考方案2】:

我刚刚遇到了类似的情况。在我的例子中,出现在 csproj 文件的 BeforeBuild 目标中的自定义操作(来自 Nuget.org 上的 MSBuildVersioning 包 - http://www.nuget.org/packages/MSBuildVersioning/)失败了,但没有在正常位置触发任何错误消息。

我能够通过设置 “MSBuild 项目构建输出详细程度”(在最新的 Visual Studio 的工具选项卡 [路径:工具 > 选项 > 构建和运行]) 到“诊断”,如下所示。这表明自定义操作(在我的例子中是 HgVersionFile)是失败的。

【讨论】:

对于像我这样一无所知的人:要使用此方法,您可能必须搜索输出窗口的内容。我的构建错误被#pragma warning disable 语句隐藏,并且仅在我在输出窗口中搜索“错误”时可见。 在将详细程度设置为诊断后,我发现我收到了 System.OutOfMemoryException。我正在使用计算机 98% 的可用内存。这是一个很好的答案! 在我的例子中,它是一个带有 .Net 4.5 的项目,它引用了带有 4.5.2 的项目。详细的诊断助手找出它 对我来说,我使用 Queue New Build 在 TFS 上构建,而 Queue Build 对话框在第二个选项卡上有一个详细信息,我可以打开然后在构建日志中查看问题。 在解决方案中添加了对另一个项目的引用。不知何故出了点问题。解决方案资源管理器中的引用列表表明它在那里。只有在切换到诊断模式后,输出窗口才告诉我该引用有问题。删除它并重新添加它,问题解决了。【参考方案3】: 如果解决方案包含多个项目,请尝试一次构建一个。 尝试重新启动 Visual Studio。 尝试重新启动计算机。 尝试“全部重建” 尝试“Clean Solution”,然后删除“vspscc”文件和“vssscc”文件,然后重新启动 Visual Studio,然后“全部重建”。

【讨论】:

如果没有帮助,我应该找一份新工作吗? 刚刚重启VS2013对我有帮助。我在一个资源有限的虚拟机上工作,但我不确定这是否与它有关。 如果您遇到此问题,您将无法清理解决方案。 帮助我关闭所有VS实例(不足以关闭故障实例),然后删除.vs文件夹并重新启动VS。 我的解决方案是从磁盘上擦除 VS 并使用记事本【参考方案4】:

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

【讨论】:

VS 2015 Community Win 7 与单个 MVC 项目。相同的分辨率。 VS 2017 Community Win 10。我想我应该在寻找解决方案之前尝试将其关闭再打开! VS 2019 Pro Win 7。传统仍在继续。 =( VS 2019 Community 16.7.5,Windows 10。有些东西永远不会改变。【参考方案5】:

删除 .vs 文件夹并重新启动 VS,为我工作

【讨论】:

值得注意的是what is actually in this folder @Liam 很多东西,比如缓存、配置设置等。***.com/a/48897202/5237614 这就是我想要的。由于此文件夹,项目在更改后未构建 是的。关闭 Visual Studio 删除 .vs 文件夹并重新启动并正常工作【参考方案6】:

我想扩展Sasse's answer。

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

一个项目给了我

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

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

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

【讨论】:

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

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

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

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

奇怪的是,它在一段时间内构建/运行良好,但突然构建开始失败一次,导致此问题。不知道我做了什么让它开始抱怨不同的 .NET 目标版本,但我觉得 Visual Studio 中有一些永远无法解决的谜团。

【讨论】:

原来我添加了一个新项目,它有一个不同的 .Net 目标框架版本 - 我修复了这个问题,虽然构建仍然失败,但我能够看到正在破坏的错误构建。谢谢。【参考方案8】:

没有什么对我有用,所以我删除了 .suo 文件,重新启动 VS,清理了投影,然后构建就可以工作了。

【讨论】:

【参考方案9】:

我最近遇到了同样的问题,我也尝试了很多方法,例如, 重新启动 Visual Studio、清理和重建解决方案、重新启动 PC 等。 (首先确保您的解决方案中的所有项目都针对相同的 .NET 版本。)

但显然没有什么对我有用,所以我按照以下步骤操作;

    保存项目中的待定更改并关闭 Visual Studio 从文件资源管理器中找到确切位置并找到“obj”文件并打开它,

    然后,删除所有包含的文件(有些文件不会删除,没关系,跳过它们)

    使用运行命令(按 Windows 键 + R)并输入“%temp%”,然后按回车键查找临时文件。

    最后,全部删除。

这对我有用,希望它适用于你的情况。

【讨论】:

“首先确保解决方案中的所有项目都针对相同的 .NET 版本”。包括测试项目。【参考方案10】:

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

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

试试这些东西,希望绝对有效。

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

当引用的项目之一是比您当前项目更高版本的 .NET 框架时,可能会发生这种情况。

【讨论】:

【参考方案13】:

只是为了完成并可能帮助将来再次遇到相同错误的人,我正在使用 Mahapps Metro 接口并更改了一个窗口的 XAML,但忘记更改代码隐藏中的部分类。在这种情况下,构建失败而没有错误或警告,我可以通过增加设置输出的详细程度来找到它:

【讨论】:

还在错误过滤器中选择“仅构建”而不是“构建 + 智能感知”。【参考方案14】:

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

如果选择此选项,则列表中不会显示任何错误。切换到“Build Only”,错误按预期出现。

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

【讨论】:

【参考方案15】:

转到输出窗口,在输出窗口中搜索“错误”,TADA

【讨论】:

【参考方案16】:

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

dotnet build

然后您可以在命令行输出中看到任何错误,即使 Visual Studio 正在玩捉迷藏并带有构建错误消息。

【讨论】:

哇,这个命令显示了在 VS 内部构建的错误,所以我已经能够解决该错误。现在的问题是为什么 VS 没有报错,而这个命令却报错【参考方案17】:

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

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

一旦我将项目的 Target Framework 更新为 4.6.1,问题就得到了解决。

【讨论】:

谢谢!如果您没有找到具体错误但怀疑这是问题所在,您可以尝试将项目的 TF 更改为更高的 TF。我的情况就是这样。【参考方案18】:

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

我增加了输出的详细程度(请参阅 Richard J Foster 的说明)并在输出中搜索“失败”。我很快发现了哪个项目失败了,以及为什么:项目“TestRunner”失败,出现“error CS0246: The type or namespace name 'TestCleaner' could not be found”(尽管在代码)。

检查 TestRunner 的引用,果然对 TestCleaner 的引用被标记为未解析,并且引用属性中缺少路径。删除和重新添加并没有解决它。同样,没有解释为什么。

unresolved reference

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

【讨论】:

【参考方案19】:

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

【讨论】:

【参考方案20】:

在我的例子中,我将Diagnostic 设置为 MSBuild 详细程度,如 here 所示。

猜猜看...在 Visual Studio 中 Output 窗口的最后一行显示:

2>"C:\Company\Project\project.sharded\Project\Project.csproj" (Rebuild;BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;DebugSymbolsProjectOutputGroup;DebugSymbolsProjectOutputGroupDependencies;DocumentationProjectOutputGroup;DocumentationProjectOutputGroupDependencies;SatelliteDllsProjectOutputGroup;SatelliteDllsProjectOutputGroupDependencies;SGenFilesOutputGroup;SGenFilesOutputGroupDependencies target) (1) ->
2>(CoreCompile target) -> 
2>  C:\Company\Project\project.sharded\Project\Services\UserService.cs(387,59,387,62): error CS0136: A local or parameter named 'sut' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter
2>
2>    2147 Warning(s)
2>    1 Error(s)

这看起来像是 Visual Studio 2019 (16.3.5) 中的一个错误。

Visual Studio 的 Error List 窗口中未显示任何错误。

这是Error List窗口中通常出现的错误类型。

这是违规行:

var sut = _sdb.SysUsableThreads.SingleOrDefault(sut => sut.uid == thread.uid && sut.thread_core == thread.core);

好的。不能使用sut,因为变量名为sut,而我将lambda 命名为sut。同样,这是应该在Error List 中显示的内容。这肯定是 Visual Studio 2019 中的一个错误。我在 Visual Studio 中报告了它。

【讨论】:

我在 Visual Studio 2019 中遇到了同样的问题,在构建诊断中显示错误数量,但在错误列表中没有。通过使用 Visual Studio 2017 打开项目,我能够在错误列表中看到错误【参考方案21】:

在 Visual Studio 2019 中,我必须“以管理员身份运行”,它最终构建成功。 所以以管理员身份打开应用程序(鼠标右键-以管理员身份运行)。

【讨论】:

【参考方案22】:

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

【讨论】:

当我试图通过删除 bin 和 obj 文件夹来解决这个问题时,它修复了它。我还需要管理员权限才能删除 obj 文件夹,所以发生了一些非常奇怪的事情。【参考方案23】:

为我解决的问题是从解决方案的根目录中删除 .vs 文件夹并重新启动 Visual Studio。

同样重要的是,即使错误没有显示在错误列表窗格中,它们仍然存在于构建的输出中。

【讨论】:

【参考方案24】:

在我这边,当我添加一个新项目(库)时遇到了这个问题

我是怎么解决的

右键单击新添加的库,转到属性然后应用程序,在应用程序下将目标框架更改为所有项目的框架。

问题是您的项目使用不同的目标框架。

【讨论】:

【参考方案25】:

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

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

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

然后我一点一点地取消注释代码,然后一切正常。

【讨论】:

【参考方案26】:

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

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

【讨论】:

【参考方案27】:

我已经尝试了所有方法,但在我的情况下没有任何效果,然后我更改了这些提到的设置,这对我来说很好地解决了这个问题。 试试如果它可以帮助后来的观众。 这些设置在您的情况下可能会有所不同,但请确保使用您最初保留的相同配置设置构建所有包括 DLL(在图像中提到。)。

干杯!

【讨论】:

【参考方案28】:

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

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

所以如果你使用VS2015就不要升级到1.x以上的版本

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

【讨论】:

【参考方案29】:

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

在 Visual Studio 2015 中,我在 TOOLS > Options > Projects and Solutions > Build and Run 下打开了详细 MSBuild

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

Nuget 包 是罪魁祸首,更新 Nuget 后 - 构建成功。

【讨论】:

【参考方案30】:

这可能是由于您的项目和 VS 中的 reportviewer 版本不同

【讨论】:

这是一条评论

以上是关于如何在没有任何错误或警告的情况下找到构建失败的原因的主要内容,如果未能解决你的问题,请参考以下文章

Xojo 说“构建失败”并在没有进一步消息的情况下死亡

Xcode:构建失败,但没有错误消息

visual studio 2017社区构建失败,没有显示任何错误

当 sass 一起使用 calc 和 var 时,React 构建失败

jni调用崩溃的情况下如何在linux上查找失败的原因?

jenkins构建项目的错误和原因及其解决方法