gpt4 book ai didi

c# - 目标框架符号未定义

转载 作者:行者123 更新时间:2023-12-02 09:39:26 26 4
gpt4 key购买 nike

我正在尝试使用 if 编译器指令有条件地包含 .Net Framework 早期版本所需的一些代码,但更高版本不需要。

我使用了 MSDN 中的以下引用文献:#if compiler directive引用,以及 Target Frameworks引用。

我正在编写一个 .Net 4.5.1 应用程序,但 NET451 符号似乎未定义,其他任何符号也未定义。

我已经改编了目标框架 MSDN 文章中的示例以包含所有框架符号,因此我可以看到定义了哪一个。

#if NET20
Console.WriteLine("Target framework: NET20");
#elif NET35
Console.WriteLine("Target framework: NET35");
#elif NET40
Console.WriteLine("Target framework: NET40");
#elif NET45
Console.WriteLine("Target framework: NET45");
#elif NET451
Console.WriteLine("Target framework: NET451");
#elif NET452
Console.WriteLine("Target framework: NET452");
#elif NET46
Console.WriteLine("Target framework: NET46");
#elif NET461
Console.WriteLine("Target framework: NET461");
#elif NET462
Console.WriteLine("Target framework: NET462");
#elif NET47
Console.WriteLine("Target framework: NET47");
#elif NET471
Console.WriteLine("Target framework: NET471");
#elif NET472
Console.WriteLine("Target framework: NET472");
#elif NETSTANDARD1_0
Console.WriteLine("Target framework: NETSTANDARD1_0");
#elif NETSTANDARD1_1
Console.WriteLine("Target framework: NETSTANDARD1_1");
#elif NETSTANDARD1_2
Console.WriteLine("Target framework: NETSTANDARD1_2");
#elif NETSTANDARD1_3
Console.WriteLine("Target framework: NETSTANDARD1_3");
#elif NETSTANDARD1_4
Console.WriteLine("Target framework: NETSTANDARD1_4");
#elif NETSTANDARD1_5
Console.WriteLine("Target framework: NETSTANDARD1_5");
#elif NETSTANDARD1_6
Console.WriteLine("Target framework: NETSTANDARD1_6");
#elif NETSTANDARD2_0
Console.WriteLine("Target framework: NETSTANDARD2_0");
#elif NETCOREAPP1_0
Console.WriteLine("Target framework: NETCOREAPP1_0");
#elif NETCOREAPP1_1
Console.WriteLine("Target framework: NETCOREAPP1_1");
#elif NETCOREAPP2_0
Console.WriteLine("Target framework: NETCOREAPP2_0");
#elif NETCOREAPP2_1
Console.WriteLine("Target framework: NETCOREAPP2_1");
#elif NETCOREAPP2_2
Console.WriteLine("Target framework: NETCOREAPP2_2");
#else
Console.WriteLine("Could not tell which framework we're using.");
#endif

结果输出是“无法判断我们正在使用哪个框架”。

我做错了什么吗?文档是否不正确?或者我发现了一个错误?

最佳答案

这些指令仅由 .NET Core 的构建系统隐式生成。关键字 from the documentation :

The complete list of preprocessor symbols for .NET Core target frameworks is:

因此,当您创建面向 .NET Framework 的新应用程序或类库时,指令将会丢失。相反,创建一个 Core 或 .NET Standard 库或应用程序。

如果您还没有准备好迁移到 Core,请参阅 Detect target framework version at compile time对于解决方法 - 例如,您可以自己定义它们。

关于c# - 目标框架符号未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54629452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com