Vous devez modifier manuellement le fichier de projet et ajouter des s au TargetFramework par défaut et le changer essentiellement en TargetFrameworks . Ensuite, vous mentionnez le Moniker avec un ; séparateur.
Vous pouvez également placer les références de package Nuget dans un ItemGroup conditionnel manuellement ou en utilisant VS Nuget Package Manager.
Voici à quoi devrait ressembler votre .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>
Une autre solution de contournement que je fais ces jours-ci en raison d'une documentation manquante est que je crée un projet dans VS2015 et forme le project.json en utilisant la documentation disponible et intellisense, puis j'ouvre la solution dans VS2017 et j'utilise la mise à niveau intégrée. Je vais ensuite regarder le fichier csproj pour comprendre comment réaliser cette configuration.
Multi-ciblage de cibles plus ésotériques sans Moniker :
Microsoft:
Les PCL ne sont pas recommandés +
Bien que les PCL soient pris en charge, les auteurs de packages doivent prendre en charge netstandard à la place. La norme de plate-forme .NET est une évolution des PCL et représente la portabilité binaire entre les plates-formes en utilisant un seul surnom qui n'est pas lié à une statique comme les monikers portable-a + b + c.
Si vous souhaitez cibler un profil portable , il n'a pas de prédéfini moniker donc les profils portables aussi ne peut donc conclure TargetFrameworkIdentifier
, TargetFrameworkVersion
et TargetFrameworkProfile
. De plus, une constante de compilateur n'est pas définie automatiquement. Enfin, vous devez ajouter toutes les références d'assemblage, aucune n'est fournie par défaut.
Cet exemple ci-dessous est tiré d'un projet qui a utilisé le dynamic
mot - clé, donc il avait en plus besoin de l' Microsoft.CSharp
assemblage, vous pouvez ainsi voir comment il est référencé pour différentes cibles.
<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>