Вам потрібно вручну відредагувати файл проекту та додати s до TargetFramework за замовчуванням і в основному змінити його на TargetFrameworks . Потім ви згадуєте Монікер з символом ; сепаратор.
Також ви можете помістити посилання на пакети Nuget в умовну групу ItemGroup вручну або за допомогою VS Nuget Package Manager.
Ось як повинен виглядати ваш .csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard1.6;net452</TargetFrameworks>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net452'">
<PackageReference Include="Microsoft.Azure.DocumentDB">
<Version>1.12.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.6'">
<PackageReference Include="Microsoft.Azure.DocumentDB.Core">
<Version>1.1.0</Version>
</PackageReference>
</ItemGroup>
</Project>
Ще одне обхідне рішення, яке я роблю в наші дні через відсутність документації, полягає в тому, що я створюю проект у VS2015 і формую project.json, використовуючи наявну документацію та intellisense, потім відкриваю рішення у VS2017 та використовую вбудоване оновлення. Потім я розгляну файл csproj, щоб з’ясувати, як зробити цю конфігурацію.
Багатоцільове націлювання на більш езотеричні цілі без прізвиська :
Microsoft:
PCL не рекомендується +
Хоча PCL підтримуються, натомість автори пакунків повинні підтримувати netstandard. .NET Platform Standard - це еволюція PCL і представляє двійкову портативність на платформах, використовуючи єдиний псевдонім, який не прив’язаний до статичних, таких як портативні a + b + c монікери.
Якщо ви хочете призначатися Портативний профіль не має зумовлений прізвиська так портативні профілі також не може робити висновок TargetFrameworkIdentifier
, TargetFrameworkVersion
і TargetFrameworkProfile
. Також константа компілятора не визначається автоматично. Нарешті, вам слід додати всі посилання на збірки, жодне з яких не надано за замовчуванням.
Цей приклад нижче взятий з проекту, який використовував dynamic
ключове слово, тому йому додатково потрібна була Microsoft.CSharp
збірка, таким чином, ви можете бачити, як це посилання на різні цілі.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard1.5;net40;portable40-net45+sl5+win8+wp8</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8+wp8'">
<TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile158</TargetFrameworkProfile>
<DefineConstants>$(DefineConstants);PORTABLE158</DefineConstants>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)'=='netstandard1.5'">
<PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
<PackageReference Include="System.ComponentModel" Version="4.3.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net40'">
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8+wp8'">
<Reference Include="Microsoft.CSharp" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows" />
</ItemGroup>
</Project>