Может ли один проект библиотеки классов быть скомпилирован как стандарт.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>