.net - MsBuild 15 中每个 TargetFramework 的条件

标签 .net msbuild .net-core

使用新的 MsBuild 版本,可以很容易地在 .csproj 项目中定位多个框架和框架版本:

<TargetFrameworks>net40;net45;net461;netcoreapp1.1</TargetFrameworks>

现在,我如何为它们中的每一个定义一个常量,以便我可以让某些代码只成为例如的一部分netcoreapp1.1通过而不是完整的框架编译?

我希望能够添加这样的预处理器指令:
#if NET_CORE
    // some code
#endif

完整的 .NET Framework 和可能的 .NET Standard 也是如此。

我发现的其他问题不需要新 <TargetFrameworks>将框架定义为帐户的方法。像这样的东西不起作用:
<DefineConstants Condition=" '$(TargetFramework)' == '.NETCoreApp' ">NET_CORE</DefineConstants>

最佳答案

已经定义了各种可以使用的预处理器符号。来自 docs :
.NET 框架


框架/版本
象征


.NET 框架(任何版本)
网络架构

.NET 框架 2.0
网20

.NET 框架 3.5
网35

.NET 框架 4.0
网40

.NET 框架 4.5
网45

.NET 框架 4.5.1
NET451

.NET 框架 4.5.2
NET452

.NET 框架 4.6
网46

.NET 框架 4.6.1
网461

.NET 框架 4.6.2
网462

.NET 框架 4.7
网47

.NET 框架 4.7.1
NET471

.NET 框架 4.7.2
NET472

.NET 框架 4.8
网48

.NET 标准


框架/版本
象征


.NET 标准(任何版本)
网标

.NET 标准 1.0
网络标准1_0

.NET 标准 1.1
网络标准1_1

.NET 标准 1.2
网络标准1_2

.NET 标准 1.3
网络标准1_3

.NET 标准 1.4
网络标准1_4

.NET 标准 1.5
网络标准1_5

.NET 标准 1.6
网络标准1_6

.NET 标准 2.0
网络标准2_0

.NET 标准 2.1
网络标准2_1

.NET 核心


框架/版本
象征


.NET [Core](任何版本)
网芯APP

.NET 核心 1.0
NETCOREAPP1_0

.NET 核心 1.1
NETCOREAPP1_1

.NET 核心 2.0
NETCOREAPP2_0

.NET 核心 2.1
NETCOREAPP2_1

.NET 核心 2.2
NETCOREAPP2_2

.NET 核心 3.0
网芯APP3_0

.NET 核心 3.1
网芯APP3_1

.NET 5+


框架/版本
象征


.NET 5.0
NET5_0


例如:

#if NETSTANDARD1_6
    Console.WriteLine("This is .Net Standard 1.6");
#endif

#if NETCOREAPP2_0
    Console.WriteLine("This is .Net Core 2.0");
#endif

关于.net - MsBuild 15 中每个 TargetFramework 的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42754123/

相关文章:

c# - Redis StringSetAsync 在使用 Moq 的单元测试中返回 false

c# - System.Array.IndexOf 分配内存

c# - 远程服务器返回错误 : (422)

msbuild - 如何通过 CruiseControl.NET 发布 ClickOnce 应用程序?

.net-core - .NET Core 默认依赖注入(inject)与 CaSTLe DynamicProxy

c# - 建立。在构建之前创建 EmbeddedResource

c# - 了解 "Found conflicts between different versions of "Microsoft.WindowsAzure.Storage“无法解析”的生成日志。

.net - 在 sql 查询中传递整数列表,最佳实践

.net - 是否可以查看在 dll 文件中创建的所有方法和类?

.net - ADO.NET、 Entity Framework 、LINQ、.netTiers、其他?