

Roslyn 判断当前使用 dotnet core 编译器进行编译
source link: https://lindexi.gitee.io/post/Roslyn-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8-dotnet-core-%E7%BC%96%E8%AF%91%E5%99%A8%E8%BF%9B%E8%A1%8C%E7%BC%96%E8%AF%91.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在写 msbuild 预编译或编译调度逻辑时,如何知道当前执行的编译器使用的是上古版本的 msbuild 还是用了 dotnet core 内核的 Roslyn 编译器?本文解决的问题是我期望在 Windows 系统使用 .NET Framework 版本的工具,而在非 Windows 系统上,使用 dotnet core 版本的工具。原因是 .NET Framework 在开发者设备上都会有,用起来简单。而 dotnet core 提供了跨平台,可以在其他平台上使用
在 吕水大的 入门博客 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 - walterlv 其实有提到使用的方法
通过 MSBuildRuntimeType 就可以判断,如下面代码
<PropertyGroup>
<!-- 我们使用 $(MSBuildRuntimeType) 来判断编译器是 .NET Core 的还是 .NET Framework 的。
然后选用对应的文件夹。-->
<NuGetWalterlvTaskFolder Condition=" '$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tasks\netcoreapp2.0\</NuGetWalterlvTaskFolder>
<NuGetWalterlvTaskFolder Condition=" '$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tasks\net47\</NuGetWalterlvTaskFolder>
</PropertyGroup>
使用 Condition=" '$(MSBuildRuntimeType)' == 'Core'"
可以判断当前是否使用 dotnet core 版本的编译器
细节描述如下
The type of the runtime that is currently executing. Introduced in MSBuild 15. Value may be undefined (prior to MSBuild 15), Full indicating that MSBuild is running on the desktop .NET Framework, Core indicating that MSBuild is running on .NET Core (for example in dotnet build), or Mono indicating that MSBuild is running on Mono.
更多请看 MSBuild Reserved and Well-known Properties - Visual Studio
更多编译相关请看手把手教你写 Roslyn 修改编译
本文会经常更新,请阅读原文: https://blog.lindexi.com/post/Roslyn-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E4%BD%BF%E7%94%A8-dotnet-core-%E7%BC%96%E8%AF%91%E5%99%A8%E8%BF%9B%E8%A1%8C%E7%BC%96%E8%AF%91.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN 关注我的主页
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。
无盈利,不卖课,做纯粹的技术博客
以下是广告时间
推荐关注 Edi.Wang 的公众号
欢迎进入 Eleven 老师组建的 .NET 社区
以上广告全是友情推广,无盈利
Recommend
-
12
Replies 4 comments As with C#8 and .NET Core 3.0,
-
7
dotnet Roslyn 通过读取 suo 文件获取解决方案的启动项目本文来告诉大家一个黑科技,通过 .suo 文件读取 VisualStudio 的启动项目。在 sln 项目里面,都会生成对应的 suo 文件,这个文件是 OLE 格式的文件,文件的格式没有公开,本文的方法适合用在 Visual...
-
7
dotnet 通过引用 msbuild 程序集实现自己定制编译器本来我想说的是基于引用 msbuild 程序集来自己做一个编译器,但是想想好像本文做的,和造编译器没啥关系,咱自己调用 msbuild 的 API 而已。本文来告诉大家如何引用 msbuild 程序集,如何在自己的应用程...
-
9
[.NET大牛之路 006] 了解 Roslyn 编译器 .NET大牛之路 • 王亮@精致码农 • 2021.07.09
-
8
Code Triage HomeThe easiest way to get started contributing to Open Source c# projects like roslynPick your favorite repos to receive a different open issue in your inbox every da...
-
7
dotnet OpenXML 获取 Excel 表格当前激活选择的工作表本文告诉大家如何读取 Excel 里面的信息拿到当前激活选择的工作表 在开始之前,期望大家了解如何使用 OpenXML 读取 Excel 文件,如果对此还不了解,请看
-
5
吕毅 发表于 1 天前 Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性。以至于我们只需要编写很少量的代码便能够分析我们的源代码。之前我写过一些使用 Roslyn 进行
-
7
dotnet 5 判断当前程序运行在 Windows 系统 Linux 系统的简单方法 本文告诉大家使用 dotnet 5 提供的 System.OperatingSystem 类的方法进行快速且简单判断当前程序所运行在的系统 判断系统的简单代码示例:
-
7
使用 Roslyn 编译器服务 .NET Core和 .NET 4.6中...
-
6
Net 编译器平台 --- Roslyn
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK