编译错误和编译警告

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(,,,): warning CS0067: The event 'WalterlvClass.Foo' is never used.

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

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

<Exec IgnoreStandardErrorWarningFormat="True" Command="$(OutputPath)$(AssemblyName).exe" />

最新文章

  1. WCF入门教程2——创建第一个WCF程序
  2. Socket通信功能实现
  3. oracle基础备份和还原
  4. 10 Things Every Java Programmer Should Know about String
  5. 19个必须知道的Visual Studio快捷键(转)
  6. Vue#计算属性
  7. 【JS】两种计时器/定时器
  8. Android样式的开发:Style篇
  9. ext DateTime.js在ie下显示不全
  10. nginx上用fastcgi配置python环境
  11. SolrCloud阶段总结
  12. VS2003.NET在文件中查找卡死
  13. SSH综合练习-仓库管理系统-第二天
  14. A. Mike and Cellphone(Round 361 Div.2)
  15. javascript基础教程学习总结(1)
  16. 阻止浏览器冒泡事件,兼容firefox和ie
  17. 7-unittest和requests重构、封装处理get/post请求
  18. Apollo 9 — adminService 主/灰度版本发布
  19. service的生命周期
  20. [daily] socks代理转化为http代理

热门文章

  1. Python 如何计算当前时间减少或增加一个月
  2. UILable 标题加粗代码
  3. Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型
  4. 解决 Java 调用 Azure SDK 证书错误 javax.net.ssl.SSLHandshakeException
  5. asp.net core2.0 连接mysql和mssql
  6. Windows Server: 将虚拟机迁移到 Azure (以阿里云为例)
  7. Redis整合spring总结
  8. Struts2 学习(一)
  9. MySQL在DOS界面对database和table增删改查
  10. vue学习笔记(一)