当 VS 解决方案中的目标失败时,如何使 msbuild 失败?

2023-11-21

我在命令行上使用 msbuild 来构建包含 C++ 项目的 VS2012 解决方案。该项目有一个在构建后运行的目标:

<Target Name="RunTargetAfterBuild" AfterTargets="Build">
  <Error Text="I am a failing target" />
</Target>

我希望 msbuild 在构建时返回错误,但是在构建过程中的某个地方,错误丢失并且 msbuild 报告“构建成功”。因此,ERRORLEVEL 仍设置为 0,因此很难检测自动构建期间是否出现问题。如何使 msbuild 将此错误一直传播到顶级项目/解决方案?我知道这是可能的,因为这是编译器错误等发生的情况。

以下是输出的相关部分:

> msbuild test.sln

...

...: error : I am a failing target  [...test.vcxproj]
Done Building Project "...test.vcxproj" (default targets) -- FAILED.

Done Building Project "...test.vcxproj.metaproj" (default targets).

Done Building Project "...test.sln" (Build target(s)).

Build succeeded.    --> this is NOT what I want

....

0 Warning(s)
1 Error(s)

对于编译器错误,输出是这样的:

> msbuild test.sln

....

...: error C3861: 'HECK': identifier not found [...test.vcxproj]
Done Building Project "...test.vcxproj" (default targets) -- FAILED.

Done Building Project "...test.vcxproj.metaproj" (default targets) -- FAILED.

Done Building Project "....test.sln" (Build target(s)) -- FAILED.


Build FAILED.     --> this is what I want

0 Warning(s)
1 Error(s)

Solution

正如艾伦回答的那样,有效的方法是命名目标AfterBuild因为这是 msbuild 的已知目标。然而,这需要在导入 Microsoft.Cpp.targets 之后定义目标,这在某种程度上容易出错,并且使得在构建后定义多个运行目标变得更加困难。在研究这个时我发现使用AfterTargets不使用时确实按预期工作Build目标但任何其他目标。不知道为什么,但现在我正在使用这个解决方案:

<Target Name="RunTargetAfterBuild" AfterTargets="FinalizeBuildStatus">
  <Error Text="I am a failing target" />
</Target>

将自定义目标添加到项目的 InitialTargets 属性中。

InitialTargets =“RunTargetAfterBuild”

您是对的,这不会解决您的问题。但是使用 AfterBuild Target 我能够重现并让 .sln 上的 msbuild 失败

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 VS 解决方案中的目标失败时,如何使 msbuild 失败? 的相关文章

  • 在 Visual Studio Community 2019 中生成包含文件的图表

    我想使用 Visual Studio 2019 Community 在我的 C 项目中 生成包含文件的图表 但是当我右键单击时 该选项不会出现 尽管在另一台 PC 上使用 Visual Studio 2017 出现 使用同一项目 今年他们把
  • 将 LFS 与 Visual Studio 2017 结合使用

    我不想将 Visual Studio 2017 15 5 与使用 Git LFS 跟踪某些文件的 Git 存储库一起使用 我的机器上已经安装了 Git 2 15 其中包含 Git LFS 我安装的 Visual Studio 2017 仅包
  • 通过 TFS 构建服务执行时 MSBuild 找不到引用

    我有一个参考 Telerik 程序集的解决方案 引用的版本已安装在构建服务器上 问题是 持续集成构建总是成功的 直到我升级解决方案和构建服务器上的 Telerik 程序集 现在构建无法提供经典的 无法解析此引用 我检查了我的解决方案 一切都
  • 错误MSB8008:指定的平台工具集(v120)未安装或无效[重复]

    这个问题在这里已经有答案了 我下载了一个c 项目 我打开了 sln文件 我尝试构建该项目 我收到以下错误 error MSB8008 Specified platform toolset v120 is not installed or i
  • 通过 USB 将应用程序从 VS 2019 部署/调试到 Windows 10 手机

    我有一些旧的 Windows 10 手机 我想赋予它们第二次生命 作为我孩子们的音乐设备 由于我手上有 Visual Studio 2019 Enterprise 所以我想尝试自己创建一些东西 不是我尝试创建一个 UWP 应用程序和一个 X
  • MSBuild:部署未包含在项目中的文件

    我在一个 Web 项目上有一个预构建事件 该事件使用 Node js 缩小并连接 javascript 文件 这会在脚本文件夹中创建一个名为 BuiltScripts 的文件夹 该文件夹与脚本文件夹重复 只是文件被缩小了 当我进行部署时 我
  • 无法使用 IIS Express 在 VS2017 中加载文件或程序集

    我们公司有一个 ASP NET 项目 为 5 6 的开发人员运行 所有 Visual Studio 2017 和 IIS Express 上的调试 没有疯狂的设置或任何让它运行的东西 1 位同事无法使其正常工作 他总是遇到以下异常 几个月前
  • 在运行时设置强类型数据集连接字符串的最佳方法?

    我的 Windows 窗体应用程序使用使用 Visual Studio 中的设计器创建的强类型数据集 在运行时 我希望能够选择实时数据库或测试数据库 在运行时以编程方式设置数据集连接字符串的最佳方法是什么 TableAdapters 中的连
  • 如何降低 Visual Studio 构建进程优先级以防止系统无响应?

    我们定期使用 Visual Studio 2013 编译大型 C 项目 在开发人员机器上构建源代码最多可能需要 45 分钟 在此期间 机器经常因CPU负载100 而变得无响应 有没有办法告诉 Visual Studio 以较低的进程优先级运
  • 如何在 Visual Studio 中调试时强制异常?

    我正在调试模式下运行我的应用程序 并且我想手动抛出异常 即不是从代码内部抛出异常 有什么办法可以做到这一点吗 当然 跑步throw new Exception My forced exception 在命令或立即窗口中不起作用 编辑 我希望
  • 是否可以在 Visual Studio 2008 和 Visual Source Safe 6.0 中使用 WinMerge?

    我想在解决方案资源管理器中使用 WinMerge 作为 VS2008 内的默认比较工具来代替 比较 上下文菜单项 这可能吗 我正在寻找一个快速替代当前乏味差异工具的工具 我只是更喜欢 WinMerge 我对进入文件夹资源管理器并在那里进行比
  • 点云库在 VS 2019 中不起作用,但在 VS 2017 中起作用

    我已经使用 vcpkg 安装了点云库 这也是我第一次使用 vcpkg 但经过一些重新安装后 我终于通过使用 vcpkg install pcl windows x64 命令安装点云库来工作 但仅限于 Visual Studio 2017 而
  • 通过命令行的 MSbuild 包不包括我的所有程序集

    我正在尝试设置一个部署脚本来发布我们的网站 而不是必须打开 VS 来进行部署 发布 当我通过 VS 进行发布时 它将正确包含所有引用的程序集 但是当我通过命令行进行发布时 它不会 我对我所缺少的东西感到迷失 我的 MSBuild 命令是 m
  • 无法将预编译、合并的 webapp 部署到 Azure

    我正在尝试将 ASP NET Web 应用程序部署到 Azure 它是 Web 表单 MVC 和 WebAPI 的混合体 并且有大量的 aspx ascx 文件 因此它们确实需要预编译 否则每次部署都会使网站运行缓慢一段时间 我正在尝试通过
  • 关于 .net core 的 csproj 格式的完整文档在哪里?

    是否有关于 net core 项目的 csproj 格式的完整文档 我一直在寻找一种在构建之前复制文件的方法 经过一番搜索后 我找到了解决方案 但我找不到这方面的文档 它会覆盖文件吗 有没有额外的选择
  • 分布式环境中的 MS Team Foundation Server - 提示所需技巧

    是否有人在地理分布的团队中使用 Team Foundation Server 我们在英国 尝试与澳大利亚的团队合作 但我们发现这非常困难 我们主要的两个问题是 事情正在向我们检查 而我们无需询问最新情况 即使使用代理 大多数事情也需要一段时
  • 如何将最新的 Windows SDK 版本传递给 CMake?

    如何将最新的 Windows SDK 版本传递给 CMake 这样我就不需要进入 Visual Studio 并从配置属性 常规中手动放置它 我在互联网上搜索 找到了 CMAKE SYSTEM VERSION 变量 并且尝试使用 set C
  • 隔离必需的字段验证器?

    我在页面上有两个搜索按钮 一个链接到下拉列表 另一个链接到带有文本框的下拉列表以获取更多搜索条件 我在所有上述控件上都需要现场验证器 当我从第一个下拉列表中选择某些内容并单击相应的搜索按钮时 文本框的字段验证器会触发 从而禁用第一个搜索按钮
  • 如何更改 Visual Studio 的默认 Web 浏览器?

    这是针对未锚定到 aspx 文件的 Silverlight 项目的 因此右键单击等有点不可能 有任何想法吗 Edit 添加 html 文件 然后单击它 真是蠢啊 上次我问问题是凌晨三点 为什么右键单击不可行 至少对于任何 HTML 文档 即
  • 添加多个 Visual Studio 属性表 (.props) 的 %PATH%

    界定PATH在属性表中的本地项目中 我需要将其添加到LocalDebuggerEnvironment 当只有 1 个属性表定义时 此方法效果很好PATH 如果我有多个属性表 而我想使用PATH从每个属性表中 Visual Studio 只会

随机推荐

  • JAXB 用于自然返回 JSON 或 XML 的列表

    我使用 MOXy 和 Jersey 来实现 RESTful API 并希望自然地返回 JSON 和 XML 的列表 这意味着 XML 包含整个集合以及集合项的元素标签 而 JSON 包含仅用于收藏的标签 例如 我想返回带有嵌套的设施和位置列
  • 从 Javascript 中的对象中删除空白属性

    如何删除所有属性undefined or null在 JavaScript 对象中 问题类似于this one对于数组 ES10 ES2019 示例 一个简单的单行代码 返回一个新对象 let o Object fromEntries Ob
  • T SQL 条件字符串连接

    有5列地址数据 我需要将这些字段连接成一个地址 并且值之间存在空格 如果存在 如果该列有空值 我应该跳过它并且不输入任何空格 select case when street number THEN cast street number as
  • boost::lexical_cast<> 的语言环境不变保证

    我在用着boost lexical cast
  • 为什么 Input onChange 的行为类似于 ReactJs 中的 onKeyDown?

    在下面的示例中 onChange每次用户输入字母时都会触发事件 例如onkeydown事件 这是正常行为吗 import React from react export default class Form extends React Co
  • 未找到 Conda 命令

    我已经安装了迷你康达并添加了环境变量export PATH home username miniconda3 bin PATH to my bashrc and bash 配置文件 但仍然无法在我的终端中运行任何 Conda 命令 我的设置
  • 使用冒泡排序对 int 数组进行排序

    为什么我打印出来的数组没有在下面的代码中排序 public class BubbleSort public void sortArray int x go through the array and sort from smallest t
  • 如何使用 C# 构建软件电话(使用 SIP 协议)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我面临的挑战是使用 C 或 net 技术构建 sip 软电话 请指导我构建此类所需的技术 要求和规范 可能的要求 支持的编解码器 G 722 1 G 723 1 G 726 G
  • TF10175:团队项目不存在

    我使用 Visualstudio Online 作为存储库 我从项目集合中删除了 ProjectName 项目 之后我只在一台计算机上出现错误 TF10175 ProjectName 团队项目不存在 有解决这个问题的想法吗 我通过删除我的工
  • Unity应用程序块,如何将参数传递给注入工厂?

    这是我现在拥有的 Container RegisterType
  • 何时在 C++ 中使用 void*

    我正在努力思考一个问题void 我应该了解什么是正确的使用方式以及是否存在任何潜在的滥用行为 意思是很酷的东西 没有错 我不明白如何以及为什么使用void 如果我理解的话 我需要将当前指针转换为void 然后当我想使用它时又投射回原来的 为
  • 在大文件中查找和替换

    我想在一个大的 xml 文件中找到一段文本 并想用其他文本替换 文件大小约为 50GB 我想在命令行中执行此操作 我正在查看 PowerShell 想知道它是否可以处理大尺寸 目前我正在尝试这样的事情 但它不喜欢它 Get Content
  • Libgdx |场景2d |设置表格的背景颜色?

    我正在创建一个菜单 就像 flappybird 中的菜单一样 当你死时它会在播放屏幕上弹出 我创建了一个扩展表格的类 我想将表格的背景设置为白色 有没有办法做到这一点 你可以这样做 Pixmap bgPixmap new Pixmap 1
  • 如何使用javascript删除CSS属性?

    是否可以使用 JavaScript 删除元素的 CSS 属性 例如我有div style zoom 1 2 现在我想通过 JavaScript 删除缩放属性 您有两个选择 选项1 您可以使用移除属性方法 它将从元素中删除样式 el styl
  • Haskell:获取表达式的静态类型

    我正在寻找一个可以完成 GHCi type 命令的功能的函数 理想情况下 它会有一个类似的签名 getStaticType a gt String a getStaticType 1 2 a Num t gt t b getStaticTy
  • 子句之间的多个 MySql WHERE

    MySql 新手程序员感谢您的耐心等待 我试图跟踪满足 3 个不同条件的表中的 ID 号 这就是我所得到的 但是查询不会返回表中明确匹配的任何结果 想法 SELECT FROM table WHERE x BETWEEN 80 AND 20
  • 仅底角或顶角为圆角的 ImageView

    我对这个问题有答案 但我花了太多时间寻找它 这就是我创建这个问题的原因 这样对其他人来说会更容易 您不能像通常的视图一样使用形状 drawable 来圆化图像角 这就是为什么您需要对代码内的图像进行一些更改 这是使用材料设计来做到这一点的另
  • 使用 nbconvert 从 Jupyter Notebook 中删除单元格

    中提到的建议如何在 IPython Notebook 中隐藏一个特定单元格 输入或输出 不工作 在 Windows 上我执行以下操作 jupyter nbconvert a ipynb TagRemovePreprocessor remov
  • Android VideoView - 如何按顺序播放视频

    我正在尝试开发一款 Android 应用程序 可以在一个视频视图中播放多个视频 当一个完成后 第二个必须开始 依此类推 我的视频存储在项目的 raw 文件夹中 为了获取他们的文件名 我这样做 Field fields R raw class
  • 当 VS 解决方案中的目标失败时,如何使 msbuild 失败?

    我在命令行上使用 msbuild 来构建包含 C 项目的 VS2012 解决方案 该项目有一个在构建后运行的目标