Может ли один проект библиотеки классов быть скомпилирован как стандарт.net и.net framework?

У меня есть проект, который в настоящее время составлен для.Net 4.0 и.Net 4.5. У меня также есть другой проект, который использует.Net Core 2.0.

Существует код, которым они делятся, было бы очень полезно, если бы я мог создать библиотеку классов.Net Standard 2.0, но нам все еще нужно поддерживать.Net Framework 4.0.

Есть ли способ скомпилировать библиотеку классов как для.Net Framework 4.0, так и для библиотеки классов.Net Standard 2.0 (при условии, что библиотека классов не использует никаких зависимостей, которые не поддерживаются обоими)?

1 ответ

Короче:

<TargetFrameworks>net40;netstandard2.0</TargetFrameworks>

Когда вы строите, это создаст каждую цель отдельно. Если вы используете автоматическую генерацию nupkg (<GeneratePackageOnBuild>True</GeneratePackageOnBuild>), nupkg будет содержать все цели. Если вам нужно настроить вещи по-разному для каждого, вы можете проверить TargetFramework переменная в файле сборки, которая будет применяться индивидуально для каждой цели. Это может быть использовано для добавления различных ссылок или других параметров конфигурации, например:

  <PropertyGroup Condition="'$(TargetFramework)' == 'net20'">
    <FeatureServiceModel>false</FeatureServiceModel>
  </PropertyGroup>
  <PropertyGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
    <DefineConstants>$(DefineConstants);COREFX</DefineConstants>
    <ImportLibs>core</ImportLibs>
    <FeatureServiceModel>false</FeatureServiceModel>
  </PropertyGroup>
Другие вопросы по тегам