2

我有一个带有一些代码的项目。我想确定是否使用了 RyuJIT,如果是,则RyuJIT另写LegacyJIT

我写的:

#if RuyJIT
            Console.WriteLine("RyuJIT");
#else
            Console.WriteLine("LegacyJIT");
#endif

然后我试图定义一个常数。所以我.csproj在记事本中打开我的并写下以下内容:

  <PropertyGroup>
    <DefineConstants Condition=" $(TargetFrameworkVersion.Replace('v', '')) &gt;= 4.6 ">RyuJIT</DefineConstants>
  </PropertyGroup>

但它不起作用:没有定义常量,因此总是为任何目标框架编译第二行。我究竟做错了什么?如何在构建之间共享这个常量?

4

1 回答 1

0

Choose节点解决。另外,现在我可以引用.Net 4.6-onlydll。

  <Choose>
    <When Condition=" $(TargetFrameworkVersion.Replace('v', '')) &gt;= 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因为它更合适

于 2016-03-01T13:54:10.677 回答