Как вы указываете разные зависимости и символы при множественном нацеливании на библиотеку классов .NET Standard?

С помощью project.json можно было ориентироваться на разные целевые платформы, указывая разные зависимости и символы условной компиляции для каждой целевой платформы.

Мне нужно сделать то же самое с библиотекой классов .NET Standard, используя формат проекта .csproj. Я знаю, как ориентироваться на несколько фреймворков, но как указать разные зависимости и символы условной компиляции для каждого из них?

(В случае, если «условная компиляция» непонятна, мне нужна возможность указать директивы препроцессора в коде, таком как #if NET452.)

Хорошим примером, когда это полезно, является работа с настройками приложений. В полной версии .NET Framework вам необходимо ссылаться на System.Configuration.dll и работать с ConfigurationManager. конфигурация .NET Core — это совсем другое дело.


person Gigi    schedule 30.03.2017    source источник


Ответы (1)


В принятом ответе на ваш предыдущий вопрос, на который вы ссылались, уже есть ответ: используйте <ItemGroup>s с тестированием Conditions для $(TargetFramework). Слегка измененный код из этого ответа:

<ItemGroup Condition="'$(TargetFramework)' == 'net452'">
  <PackageReference Include="Microsoft.Azure.DocumentDB" Version="1.12.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.6'">
  <PackageReference Include="Microsoft.Azure.DocumentDB.Core" Version="1.1.0" />
</ItemGroup>

Для директив препроцессора ничего делать не нужно. Такие директивы, как NET452 или NETSTANDARD1_6, определяются автоматически.

person svick    schedule 30.03.2017