【问题标题】:Are there any formalized target framework directives?是否有任何正式的目标框架指令?
【发布时间】:2019-10-24 06:42:44
【问题描述】:

我看过Microsoft's article关于如何检测目标框架,例如:

netcoreapp2.2
net47
net58 

但有些情况我并不关心确切版本,而是一般框架目标:

NETCORE
.Net Framework

但我没有找到这样的标志。

问题:

是否有任何通用标志?或者更好的是,如何在不指定所有选项的情况下区分这两者?

【问题讨论】:

  • 您的用例是什么?如果您谈论的是库,则可以针对涵盖您需要的所有平台的 The Net Standard 版本。
  • 例如:Server.Mappath 在标准和核心中都不存在。仅在 FW 上。我需要知道我是否要获取特定文件的文件。 (这是一个例子,还有更多)。

标签: .net visual-studio .net-core .net-standard compiler-directives


【解决方案1】:

除了特定于版本的指令(例如 NETSTANDARD2_0)之外,Target frameworks documentation 还列出了以下预处理器符号:

  • NETFRAMEWORK

  • NETSTANDARD

  • NETCOREAPP

...NETMF 用于 .NET Micro Framework,WP 用于 Windows Phone,UAP 用于通用 Windows 平台。


这是一个例子.csproj

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

和 C# 类:

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
        }
    }
}

这里选择了 .NET Core 3.0(见左上角),NETCOREAPP 区域为“live”,其他区域为灰色:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2010-11-21
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多