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>

しかし、それは機能しません: 定数が定義されていないため、2 行目は常にターゲット フレームワーク用にコンパイルされます。私は何を間違っていますか?この定数をビルド間で共有するにはどうすればよいですか?

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 に答える