代码之家  ›  专栏  ›  技术社区  ›  Alex Zhukovskiy

为Visual Studio中的所有生成定义条件常量

  •  2
  • Alex Zhukovskiy  · 技术社区  · 9 年前

    我有一个带有一些代码的项目。我想确定是否使用了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>
    

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

    1 回复  |  直到 9 年前
        1
  •  0
  •   Alex Zhukovskiy    9 年前

    解决方法: Choose 节点。另外,现在我可以参考 .Net 4.6-only dll。

      <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 因为它更适合