Are there any formalized target framework directives?

拈花ヽ惹草 提交于 2019-12-01 10:55:44

问题


I've read Microsoft's article about how to detect target framework, for example :

netcoreapp2.2
net47
net58 

But there are situations where I don't care about the exact version, but the general framework target :

NETCORE
.Net Framework

But I didn't find such flags.

Question:

Are there any generalized flags for that ? or better, how can I distinguish between those two without specifying all options?


回答1:


Besides the version-specific directives such as NETSTANDARD2_0, the Target frameworks documentation lists the following preprocessor symbols:

  • NETFRAMEWORK

  • NETSTANDARD

  • NETCOREAPP

...and NETMF for .NET Micro Framework, WP for Windows Phone, and UAP for Universal Windows Platform.


Here is an example .csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>   
    <TargetFrameworks>netstandard1.5;netstandard2.0;net48;netcoreapp3.0</TargetFrameworks>
  </PropertyGroup>
</Project>

and C# class:

namespace ClassLibrary1
{
    public class Class1
    {
        public void Test()
        {
#if NETFRAMEWORK
            System.Console.WriteLine(".NET Framework");
#elif NETCOREAPP
            System.Console.WriteLine(".NET Core");
#elif NETSTANDARD
            System.Console.WriteLine(".NET Standard");
#endif
        }
    }
}

Here's .NET Core 3.0 selected (see top left), with the NETCOREAPP region 'live' and the others greyed out:



来源:https://stackoverflow.com/questions/56516658/are-there-any-formalized-target-framework-directives

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!