zoukankan      html  css  js  c++  java
  • 如何在 MSBuild Target(Exec)中报告编译错误和编译警告

    编译错误和编译警告

     MSBuild 的 Exec 自带有错误和警告的标准格式,按照此格式输出,将被识别为编译错误和编译警告。

    而格式只是简简单单的 error: 开头或者 warning: 开头。冒号前面也可以加上空格。

    using System;
    
    namespace Walterlv.Demo
    {
        internal class Program
        {
            private static void Main(string[] args)
            {
                Console.WriteLine("warning: 这是一个警告信息。");
                Console.WriteLine("error: 这是一个错误信息。");
            }
        }
    }

    对于这样一段在编译期间执行的程序,编译时将显示如下信息,并产生编译错误和编译警告。

     

    说明解释

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>net47</TargetFramework>
      <Target Name="PostBuild" AfterTargets="PostBuildEvent">
        <Exec Command="$(OutputPath)$(AssemblyName).exe" />
      </Target>
    </Project>

    更复杂的错误和警告控制

    实际上,上面的 warningerror 只是省略的格式,而完整的部分是这样的:

    file_path(line_start,column_start,line_end,column_end): error_or_warning key: message
    • file_path 是文件的绝对路径或相对于项目文件的路径,这样的输出之后在 Visual Studio 中双击之后可以定位到文件。
    • line_start、column_start、line_end、column_end 控制双击之后选中文件的开始和结束行列。
    • error_or_warning 可选为 error 或者 warning。
    • key 是一个唯一标识符,如果用户认为可以忽略这样的错误,则可以使用这个唯一的 key 来禁止某一特定项的警告。
    • message 则是普通的消息提示内容。
    Demo.cs(344,59,344,78): warning CS0067: The event 'WalterlvClass.Foo' is never used.

    阻止编译错误和编译警告的格式化识别

    当然,有可能你只是需要一个 error: 开头或者 warning: 开头的格式,并不希望真的产生编译错误或者编译警告,那么只需要在执行 Exec 的时候设置 IgnoreStandardErrorWarningFormat="True"

    <Exec IgnoreStandardErrorWarningFormat="True" Command="$(OutputPath)$(AssemblyName).exe" />
  • 相关阅读:
    sql 四大排名函数--简介
    Markdown语法规则
    利用ADO操作外部数据——Excel之VBA(15)
    VBA中的用户信息交换——Excel之VBA(14)
    窗体和控件(2)——Excel之VBA(13)
    窗体和控件(1)——Excel之VBA(12)
    使用VBA数组公式——Excel之VBA(11)
    使用DIR函数合并多个文件的数据——Excel之VBA(10)
    ubuntu jupter python虚拟环境
    Pytorch_加载自己的数据集并训练
  • 原文地址:https://www.cnblogs.com/shuyu/p/10478215.html
Copyright © 2011-2022 走看看