如何在#if语句中设置.NET Core以进行编译
我创建了multy框架项目。 我使用这样的东西:
#if NET40 Console.WriteLine("hello from net 4"); #endif
但我无法找到.NET Core的通配符。 我试过了 :
#if NETCOREAPP1.0 Console.WriteLine("hello from net Core"); #endif
但这不是有效的声明。 谢谢。
使用NETCOREAPP1_0
或更多重新发送的NETCOREAPP1_1
和NETCOREAPP2_0
文章https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/libraries包含不同预处理器符号的列表。
.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 Standard 1.0 – > NETSTANDARD1_0
.NET Standard 1.1 – > NETSTANDARD1_1
.NET Standard 1.2 – > NETSTANDARD1_2
.NET标准1.3 – > NETSTANDARD1_3
.NET Standard 1.4 – > NETSTANDARD1_4
.NET Standard 1.5 – > NETSTANDARD1_5
.NET Standard 1.6 – > NETSTANDARD1_6
您可以按以下方式定义任何自定义条件编译符号(project.json):
"frameworks": { "net40": { "buildOptions": { "define": ["NET_40"] } }, "netstandard1.5": { "buildOptions": { "define": [ "NET_STANDARD" ] } } }
这种方法似乎更实用,因为您可以对多个目标使用相同的条件符号,而无需编写类似的东西
#if NET20 && NET 40 && NET45
扩展Devon对VS2017 .csproj文件的回答:
查看此处的表,您可以使用正则表达式轻松定义常量。 因此,如果添加/更改目标框架,则无需考虑更新条件。
NETFRAMEWORK NETSTANDARD NETCORE
用法:
#if NETFRAMEWORK FrameworkSpecific(); #endif #if NETSTANDARD StandardSpecific(); #endif #if NETCORE CoreSpecific(); #endif
对于新的Visual Studio 2017 csproj项目系统……
您可以在此处找到可用符号的完整列表: https : //docs.microsoft.com/en-us/dotnet/core/tutorials/libraries#how-to-multitarget
您可以在.csproj文件中创建复合常量,如下所示:
FULLFRAMEWORK;FULL
然后你可以在#if
编译器指令中使用它,如下所示:
#if FULLFRAMEWORK private bool DoSomethingFullFrameworkSpecific() { var connectionStringSetting = ConfigurationManager.ConnectionStrings[connectionStringName]; return connectionStringSetting != null; } #endif
虽然上面的答案是正确的,但应该注意.NET Core xproj项目类型中存在一个错误。 通过项目设置定义条件编译符号时,它将元素定义为“定义”,但这是不正确的。 它应该创建一个名为“define”的元素。 您可以通过手动编辑project.json来解决此问题。
我已经在两个地方记录了这个错误。 请花点时间向微软注册您的烦恼,以便他们最终能够解决这个问题并且不会让其他人感到悲伤。
这个post详细解释了重现步骤和截图的问题: https : //github.com/dotnet/cli/issues/4022#issuecomment-238777946
这是Microsoft Connect错误报告: https : //connect.microsoft.com/VisualStudio/feedbackdetail/view/2983351/conditional-compilation-symbols-broken-in-net-core-projects#tabs
上述就是C#学习教程:如何在#if语句中设置.NET Core以进行编译分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/956587.html