代码之家  ›  专栏  ›  技术社区  ›  mshwf

当调用程序集为.NET framework 4.7.2时,.NET标准库是否将目标预处理器设置为NETSTANDARD2\u 0?

  •  0
  • mshwf  · 技术社区  · 6 年前

    TargetFrameworks .csproj文件的标记):

    以下是.NET标准库中唯一的类:

    public class StdClass
        {
            public string GetCallingPlatform()
            {
    #if NETCOREAPP2_1
                return "Core2.1";
    #elif NETCOREAPP2_0
                return "Core2.0";
    
    #elif NETSTANDARD2_0
                return "Standard2.0";
    #elif NET472
                return "NetFramework4.7.2";
    #else
                return "NotSpecified";
    #endif
            }
    
        }
    

    然后,我从两个控制台应用程序和 Main 两者的方法,我称之为 GetCallingPlatform :

    static void Main(string[] args)
        {
            StdClass stdClass = new StdClass();
            var platform = stdClass.GetCallingPlatform();
            Console.WriteLine(platform);
            Console.ReadLine();
        }
    

    .NET Core 2.1控制台应用程序 NETCOREAPP2_1 预处理器,但.NET framework控制台应用程序 NETSTANDARD2_0 NET472 或者 #else 自TFM以来的阻止 net472

    1 回复  |  直到 6 年前
        1
  •  3
  •   CodeCaster    6 年前

    您的共享类库将针对所有声明的目标框架进行编译,每个框架都位于它们自己的目录下 bin\Debug ,所以 bin\Debug\netcoreapp2.1 bin\Debug\netstandard2.0 .

    当编译那些针对这些框架的版本时,编译器指令将被应用。.NET标准版将返回“Standard2.0”,.NET Core verison将返回“Core2.1”。

    推荐文章