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