继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

MSBuildTasks 介绍与使用

笑笑_xxred
关注TA
已关注
手记 59
粉丝 30
获赞 171

MSBuildTasks

简介

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

GetStart

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

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

自定义任务

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

使用MSBuild.Targets 文件

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

nuget包中使用targets

调试

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

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

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP