2019-11-22-Roslyn-在多开发框架让-msbuild-的-Target-仅运行一次
2024-08-30 13:25:12
title | author | date | CreateTime | categories |
---|---|---|---|---|
Roslyn 在多开发框架让 msbuild 的 Target 仅运行一次
|
lindexi
|
2019-11-22 09:23:56 +0800
|
2019-11-21 09:29:58 +0800
|
Roslyn MSBuild 编译器
|
在写预编译框架,因为安装项目会基于多个平台,也就是对应的 Target 会执行多次,而我需要的只是执行一次就可以
创建一个控制台项目,修改项目文件,然后使用 dotnet build 可以看到 Foo 输出两次
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net45</TargetFrameworks>
</PropertyGroup> <Target Name="Foo" AfterTargets="AfterBuild">
<Warning Text="Foo"></Warning>
</Target> </Project>
因为这是在两个平台分别输出,如果想要在编译只运行一次,可以基于以下
- DispatchToInnerBuilds
- PreBuildEvent
- GenerateNuspec
如下面代码
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net45</TargetFrameworks>
</PropertyGroup> <Target Name="Foo" BeforeTargets="DispatchToInnerBuilds">
<Warning Text="Foo"></Warning>
</Target> </Project>
如果是在 GenerateNuspec 之后也就是需要用户创建 NuGet 库才能执行
本文代码放在 github 欢迎小伙伴访问
Targeting builds for multiple frameworks and machines
Option to run target once per project in multi-targeting build · Issue #2781 · microsoft/msbuild
最新文章
- Redis高可用分布式内部交流(九)
- Android Animation(动画)
- 1476. Lunar Code
- mysql 5.6.33 重置密码后报错
- (大数据工程师学习路径)第四步 SQL基础课程----修改和删除
- Servle中的会话管理
- intellij idea 下载及安装破解--好使
- Flask-SQLAlchemy.........>;model创建表
- SpringBoot vue
- PowerDesigner导出SQL,注释为空时以name代替
- Autoware(2)—加载地图数据
- 使用IntelliJ Idea新建SpringBoot项目
- Python自动化开发 - 面向对象(一)
- 在UI自动化测试中使用flaky插件运行失败用例
- linux shell学习四
- 【leetcode 简单】第三十六题 最小栈
- SQL 语句中的in、find_in_set、like的区别
- Ubuntu编译内核树
- D3.js学习笔记(四)—— 使用SVG坐标空间
- 集合的前N个元素