如何在C#/ .Net.Core中基于平台(Linux vs Windows)定义编译时间常数?

问题描述 投票:0回答:1

受此blog的启发,我试图这样实现:

<DefineConstants Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))' == 'true'">Windows</DefineConstants>
<DefineConstants Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))' == 'true'">POSIX</DefineConstants>

但我收到此错误:

The function "IsOSPlatform" on type "System.Runtime.InteropServices.RuntimeInformation" is not available for execution as an MSBuild property function

是否有解决此问题的方法?没有这两条DefineConstants行,该项目将完美加载。

MSBuild Error

c# linux .net-core csproj conditional-compilation
1个回答
0
投票

此方法仅适用于15.0(或更高版本)的MSBuild。由于单声道现在不包含此版本的MSBuild。

here上有一个未解决的问题>

Visual Studio可以使用它在.csproj文件中编译代码。

© www.soinside.com 2019 - 2024. All rights reserved.