我有一个有代码的项目。我想确定是否使用了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>但是它不起作用:常量没有定义,因此第二行总是为任何目标框架编译的。我做错了什么?如何在构建之间共享此常量?
发布于 2016-03-01 13:54:10
用Choose节点求解。另外,现在我可以参考.Net 4.6-only dlls了。
<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,因为它更合适
https://stackoverflow.com/questions/35724406
复制相似问题