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

Investigate configuration behavior when the values (Configurations/Platforms/TargetFrameworks) are conditioned or duplicated. · Issue #1829 · dotnet/project-system

Option to run target once per project in multi-targeting build · Issue #2781 · microsoft/msbuild

c# - How to make an MSBuild Target that only runs once instead of once, before Targets that run once per framework in the TargetFrameworks tag? - Stack Overflow

最新文章

  1. Redis高可用分布式内部交流(九)
  2. Android Animation(动画)
  3. 1476. Lunar Code
  4. mysql 5.6.33 重置密码后报错
  5. (大数据工程师学习路径)第四步 SQL基础课程----修改和删除
  6. Servle中的会话管理
  7. intellij idea 下载及安装破解--好使
  8. Flask-SQLAlchemy.........&gt;model创建表
  9. SpringBoot vue
  10. PowerDesigner导出SQL,注释为空时以name代替
  11. Autoware(2)—加载地图数据
  12. 使用IntelliJ Idea新建SpringBoot项目
  13. Python自动化开发 - 面向对象(一)
  14. 在UI自动化测试中使用flaky插件运行失败用例
  15. linux shell学习四
  16. 【leetcode 简单】第三十六题 最小栈
  17. SQL 语句中的in、find_in_set、like的区别
  18. Ubuntu编译内核树
  19. D3.js学习笔记(四)—— 使用SVG坐标空间
  20. 集合的前N个元素

热门文章

  1. ubuntu彻底删除nginx
  2. sqli-labs(11)
  3. 使用Vue前端框架实现知乎日报app
  4. ES6数组内对象去重
  5. 在JavaScript中引用类型和值类型的区别
  6. JDK1.7安装配置环境变量+图文说明Jmeter安装
  7. 动画演示 Delphi 2007 IDE 功能[2] - 定义变量
  8. C# 实现IDisposable
  9. 【ABAP系列】SAP 系统的消息类型分析 MESSAGE TYPE
  10. 第十届山东省acm省赛补题(1)