我有一个包含一些代码的项目。我想确定是否使用了RyuJIT,如果是,则写RyuJIT
否则LegacyJIT
。
我写道:
#if RuyJIT
Console.WriteLine("RyuJIT");
#else
Console.WriteLine("LegacyJIT");
#endif
然后我试图定义一个常量。所以我在记事本中打开.csproj
并写下以下内容:
<PropertyGroup>
<DefineConstants Condition=" $(TargetFrameworkVersion.Replace('v', '')) >= 4.6 ">RyuJIT</DefineConstants>
</PropertyGroup>
但它不起作用:未定义常量,因此总是为任何目标框架编译第二行。我究竟做错了什么?如何在构建之间共享此常量?
答案 0 :(得分:0)
使用Choose
节点解决。另外,现在我可以引用.Net 4.6-only
dll。
<Choose>
<When Condition=" $(TargetFrameworkVersion.Replace('v', '')) >= 4.6 ">
<ItemGroup>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.1.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<PropertyGroup>
<DefineConstants>SIMD</DefineConstants>
</PropertyGroup>
</When>
</Choose>
我将RyuJIT
替换为SIMD
,因为它更适合