C#中是否有任何编译时标志可以有条件地指定运行时要求?例如,考虑到标志#if DEBUG ... #endif
,是否可以执行类似于的操作
#if RUNTIME_LINUX_X64
// Read file X
#endif
#if RUNTIME_WIN_X64
// Read file y
#endif
因此,将基于与publish
命令相关联的-r
标志来编译代码的正确部分。
更新:我不想使用#define xxx
,我只想基于-r
标志获得目标运行时值。
您可以通过提供DefineConstants
属性来定义常量:
dotnet build -p:DefineConstants=SOME_PREPROCESSOR_SYMBOL
但在这种特殊情况下,您可能只需要使用Environment.OSVersion
或RuntimeInformation.IsOSPlatform
检查。
同时查看:
- .NET运行时标识符(RID(目录,并基于RID定义常量
SupportedOSPlatformAttribute
- CCD_ 10