栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

MSBuildTasks 介绍与使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MSBuildTasks 介绍与使用

MSBuildTasks

简介
  • MSBuild生成项目是基于一系列任务来完成的,我们也可以进行拓展增加自己的任务,比如复制文件、自动上传到服务器、同步git、执行测试单元等等,帮助我们完成一系列重复枯燥的动作,同时它也能集成到nuget包里面,安装的时候它自动导入到项目里面,此功能可以代替以前nuget包的toolsinstall.ps1的脚本功能
  • 如果是开发包含前端需要编译打包的项目,可以在MSBuild Tasks里,在项目运行之前执行打包工作
  • 官网

GetStart
  • 罗里吧嗦的就不讲了,还没懂的讲了也不懂,反正你们也不会看官网,先来个Hello World!

    • 首先建一个项目,为了方便编辑,新建一个 .net core 控制台项目
    • 项目=>右键=>编辑csproj
    • 在最后面添加如下代码,放在里面即可
      
          
      
      
    • 生成项目,查看输出窗口,可以看到如下输出
    • Target目标里面放一系列任务,每个目标都有Name,重名会被覆盖,BeforeTargets、AfterTargets是执行时机,动作可以是CoreCompile编译,或者PostBuildEventg构建,参考目标生成顺序
    • 更多自带的任务

自定义任务
  • 自带的例子功能有限,我们可以自己实现一个任务,自定义功能
  • 官方教程-自定义一个任务
  • 官方教程-引入任务,从AssemblyFile指定的dll中加载TaskName中指定的类型,等效于使用 .NET 中的 LoadFrom 方法加载程序集然后获取对应的类型,该类型必须实现ITask接口
  • 一定记得在Target上加BeforeTargets="CoreCompile",相当于调用,官网的例子没加,我跑不起来,所以要注意这个

使用MSBuild.Targets 文件
  • 如果在一个项目里面引入了太多的任务,不方便管,而且要多个项目共用也麻烦,这时候可以使用MSBuild .Targets文件l方便管理,然后导入到项目
  • 示例,可以是绝对路径、绝对路径、还有通配符。如果在nuget包包含这个文件,安装以后会自动导入到安装用户的项目里面,被触发的时候就会运行

nuget包中使用targets
  • 请参考这两篇博客,在NuGet包中提供跨平台的MSBuild任务 、在NuGet中捆绑.NET构建工具
  • 文件的命名很重要PackageId + “.targets”,NuGet会忽略其他文件

调试
  • 参考这篇博客,加上Debugger.Launch();,运行到那一行代码即可命中断点,跟js的debugger差不多吧。还有里面说到的正统方法没试成功,可能是我设置不对,就没折腾

  • vs编译项目的时候实际上调用的事msbuild.exe,理论上附加到这个进程并断点也是可以的,如果是dotnet命令方式编译,那就附加到dotnet进程进行调试,但感觉还是Debugger.Launch();简单粗暴

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/230840.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号