Mar*_*zek 8 .net msbuild .net-core
使用新的MsBuild版本,很容易在.csproj项目中定位多个框架和框架版本:
<TargetFrameworks>net40;net45;net461;netcoreapp1.1</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)
现在,我如何获得为每个定义的常量,以便我可以让某些代码只是例如netcoreapp1.1pass而不是完整框架编译的一部分?
我希望能够像这样添加一个预处理器指令:
#if NET_CORE
// some code
#endif
Run Code Online (Sandbox Code Playgroud)
对于完整的.NET Framework和可能的.NET Standard也是如此.
我发现的其他问题没有采用新<TargetFrameworks>方法将框架定义为帐户.像这样的东西不起作用:
<DefineConstants Condition=" '$(TargetFramework)' == '.NETCoreApp' ">NET_CORE</DefineConstants>
Run Code Online (Sandbox Code Playgroud)
Dav*_*idG 11
已经定义了可以使用的各种预处理器符号.来自文档:
.NET Framework 2.0 --> NET20
.NET Framework 3.5 --> NET35
.NET Framework 4.0 --> NET40
.NET Framework 4.5 --> NET45
.NET Framework 4.5.1 --> NET451
.NET Framework 4.5.2 --> NET452
.NET Framework 4.6 --> NET46
.NET Framework 4.6.1 --> NET461
.NET Framework 4.6.2 --> NET462
.NET Framework 4.7 --> NET47
.NET Framework 4.7.1 --> NET471
.NET Framework 4.7.2 --> NET472
.NET Standard 1.0 --> NETSTANDARD1_0
.NET Standard 1.1 --> NETSTANDARD1_1
.NET Standard 1.2 --> NETSTANDARD1_2
.NET Standard 1.3 --> NETSTANDARD1_3
.NET Standard 1.4 --> NETSTANDARD1_4
.NET Standard 1.5 --> NETSTANDARD1_5
.NET Standard 1.6 --> NETSTANDARD1_6
.NET Standard 2.0 --> NETSTANDARD2_0
.Net Core 1.0 --> NETCOREAPP1_0
.Net Core 1.1 --> NETCOREAPP1_1
.Net Core 2.0 --> NETCOREAPP2_0
.Net Core 2.1 --> NETCOREAPP2_1
Run Code Online (Sandbox Code Playgroud)
例如:
#if NETSTANDARD1_6
Console.WriteLine("This is .Net Standard 1.6");
#endif
#if NETCOREAPP2_0
Console.WriteLine("This is .Net Core 2.0");
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1093 次 |
| 最近记录: |