/ / Definire una costante condizionale per tutte le build in Visual Studio: c #, visual-studio, msbuild, preprocessor-direttiva, msbuild-propertygroup

Definire una costante condizionale per tutte le build in Visual Studio - c #, visual-studio, msbuild, preprocessore-direttiva, msbuild-propertygroup

Ho un progetto con un po 'di codice. Voglio determinare se viene utilizzato RyuJIT e, in tal caso, scrivere RyuJIT altrimenti LegacyJIT.

Scrivo io:

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

poi sto cercando di definire una costante. Quindi apro la mia .csproj nel blocco note e scrivi quanto segue:

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

Ma non funziona: la costante non è definita, quindi la seconda riga viene sempre compilata per qualsiasi framework di destinazione. Cosa sto facendo di sbagliato? Come posso condividere questa costante tra build?

risposte:

0 per risposta № 1

Risolto con Choose nodo. Inoltre, ora sono in grado di fare riferimento .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>..packagesSystem.Numerics.Vectors.4.1.0libnet46System.Numerics.Vectors.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<PropertyGroup>
<DefineConstants>SIMD</DefineConstants>
</PropertyGroup>
</When>
</Choose>

Ho sostituito RyuJIT con SIMD perché è più adatto