Вам нужно вручную отредактировать файл проекта и добавить 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 и представляет двоичную переносимость между платформами с использованием единственного прозвища, которое не привязано к статическим именам, таким как Portable-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>