如何在.Net Core中使用自定义预处理程序指令
我试图在.Net核心中使用预处理程序指令,但我无法确定获取指令的正确方法:
static void Main(string[] args) { Console.WriteLine("Hello World!"); #if MAC Console.WriteLine("MAC"); #else Console.WriteLine("NOT MAC"); #endif }
我已尝试从命令行进行各种排列以使其工作,但我似乎错过了一些东西。 以下是运行各种构建和运行命令时的shell输出:
~/dev/Temp/DirectiveTests $ dotnet msbuild /p:MAC=TRUE Microsoft (R) Build Engine version 15.1.548.43366 Copyright (C) Microsoft Corporation. All rights reserved. DirectiveTests -> /Users/me/dev/Temp/DirectiveTests/bin/Debug/netcoreapp1.1/DirectiveTests.dll ~/dev/Temp/DirectiveTests $ dotnet run /p:MAC=true Hello World! NOT MAC ~/dev/Temp/DirectiveTests $ dotnet run Hello World! NOT MAC
我根据dotnet --version
使用工具版本1.0.1
有谁知道如何使用.net核心从命令行正确设置指令?
你需要设置的是/p:DefineConstants=MAC
注意这将覆盖项目中设置的常量,如DEBUG
或TRACE
,可以设置,这样你可能会使用的完整版本将是
用于调试版本
dotnet msbuild /p:DefineConstants=TRACE;DEBUG;NETCOREAPP1_1;MAC /p:Configuration=Debug
并为发布版本
dotnet msbuild /p:DefineConstants=TRACE;NETCOREAPP1_1;MAC /p:Configuration=Release
一个更简单的解决方案是创建一个名为Mac
的配置,并在您的csproj中
TRACE;NETCOREAPP1_1;MAC
然后从命令行中你只需要做
dotnet msbuild /p:Configuration=Mac
如果您想要不影响其他设置的自定义配置开关(“调试/发布”之类的“配置”),您可以定义任何其他属性并在构建中使用它。
例如,对于dotnet build /p:IsMac=true
您可以将以下内容添加到您的csproj文件中(并非该run
可能无法正确传递属性,但IsMac=true dotnet run
将在清理后IsMac=true dotnet run
):
$(DefineConstants);MAC
如果您想进一步自动检测是否在 Mac上构建 ,可以使用msbuild属性函数来评估您正在构建的操作系统。 并不是说这个目前只适用于msbuild的.net核心变种( dotnet msbuild
)。 有关支持的详细信息,请参阅此PR 。
上述就是C#学习教程:如何在.Net Core中使用自定义预处理程序指令分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::get_OSX()))) $(DefineConstants);MAC
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1003141.html