项目的target自动生成的_新'目标'——在VS项目里编写专属Target

本文介绍了如何使用MSBuild的Target功能进行项目自动化,包括在编译后自动执行任务,如复制文件,并展示了如何通过编写Target进行健壮性检测,确保编译环境满足特定条件。Target提供了一种模块化设计的解决方案,适用于需要更高级别自动化操作的项目。
摘要由CSDN通过智能技术生成

6f8e9c9d84788a0db9d7cde4f9297e83.png

前言

MSBuild是一个强大的编译系统,强大到可能都不知道居然还有这些功能。我就简单的说一下——Target(目标),希望能帮助到大家!

不知道大家有没有遇到过这样一种常见,项目编译好了,但是这个项目还依赖一个数据文件,该数据文件可能需要打包或者加密等其他动作。也许大家会说生成前、后事件神马的也能支持,但是那个毕竟不方便模块化设计。

如果大家对模块化设计有比较高的要求,那么——Target或许会非常的适合你!

编写第一个Target

比如说,我们需要在生成完毕后将项目下的一个123.txt复制到输出目录。

那么我们可以在项目的配置中(vcxproj之类的)编写如下Target:

<Project>
  <!--直接跳到xml文件最后...-->

  <Target Name="Copy123_TXT" AfterTargets="Build;Rebuild">
    <Copy SourceFiles="$(ProjectDir)123.txt" DestinationFolder="$(OutDir)" />
    <!--在这之后可以填写其他任务,它们会按顺序执行。-->
  </Target>
</Project>

其大概意思就是有个名字叫 Copy123_TXT 的 Target,再Build或者Rebuild后执行任务,任务是吧$(ProjectDir)123.txt 这个文件复制到 $(OutDir) 文件夹。

怎么样?还是挺简单的吧,更多MSBuild支持的任务可以参考官方文档。

编写第二个Target

之前我们在演示了一个简单的Copy文件任务,至于其他的复制文件夹,还是删除文件夹,还是执行其他什么exe命令行这些就不多阐述了。 相信大家都能从微软的官方文档中get到。

但是我们某些时候也仅仅是执行什么任务,我们也可能需要进行健壮性检测,不在预期范围的则给予罢工处理!

比如说,某项目必须在VS2019 以及Windows SDK 19041才能编译,否则就报错,让他准备好这些条件。

我们可以编写如下代码:

<Project>
  <!--直接跳到xml文件最后...-->

 <!--注意,这次我们用了 BeforeTargets,中文意思就是 在这些目标之前运行-->
  <Target Name="My_Check" BeforeTargets="Build;Rebuild">
    <Error Code="My404" Text="必须使用VS2019以及Windows SDK 19041!" Condition=" ('$(PlatformToolsetVersion)'!='142') Or ('$(WindowsTargetPlatformVersion)'!='10.0.19041.0')"/>
    <!--在这之后可以填写其他任务,它们会按顺序执行。-->
  </Target>
</Project>

我们主要使用了一个Error任务,并且给它加了一个Condition,Condition内部的用法也有很多,可以判断某文件是否存在,也可以读取注册表等等,具体可以参考MSBuild属性。

最后

Target初步的介绍就到这里啦,其实Target用法还是比较多的,甚至在Target还能写C#代码。我说这些话并不是为了吓退大家,只是希望大家并不要受限于此,发挥自己的想象力创造更多的可能!有好的点子也记得跟丫丫分享哦~~

顺道说下,YY-Thunks的Windows 2000支持就是用了Target来修改PE文件的最低支持版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值