Vous avez besoin d'ajouter un s à la valeur par défaut TargetFramework et modifier fondamentalement à TargetFrameworks. Ensuite, vous mentionnez le Nom avec un ; séparateur.
Aussi, vous pouvez mettre le package Nuget des références dans un conditionnelle ItemGroup manuellement ou à l'aide de VS Gestionnaire de Package Nuget.
Voici ce que votre .csproj devrait ressembler à:
<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 je fais ces jours-ci en raison de documents manquants, c'est que je créer un projet dans VS2015 et la forme du projet.json à l'aide de la documentation disponible et intellisense, puis ouvrez la solution dans VS2017 et utilisez la fonction intégrée de mise à niveau. Je vais donc regarder le fichier csproj de comprendre comment faire pour que la configuration se produire.
Multi-ciblage plus ésotérique des cibles sans Nom:
Microsoft:
PCLs ne sont pas recommandés+
Bien que PCLs sont pris en charge, les auteurs du paquet devrait soutenir
netstandard à la place. L' .NET Plate-forme Standard est une évolution de
PCLs et représente binaire portabilité sur les plates-formes à l'aide d'un seul
surnom qui n'est pas lié à une statique comme comme portable-a+b+c monikers.
Si vous souhaitez cibler un Profil Portable, il n'est pas prédéfinie moniker donc Portable Profils ne pouvez pas déduire TargetFrameworkIdentifier
, TargetFrameworkVersion
, et TargetFrameworkProfile
. Aussi un compilateur constante n'est pas définie automatiquement. Enfin, il faut ajouter toutes les références d'assembly aucun n'est fourni par défaut.
Cet Exemple ci-dessous est extrait à partir d'un projet qui a utilisé l' dynamic
mot-clé si elle a en outre besoin de l' Microsoft.CSharp
de l'assemblée, ainsi vous pouvez voir comment il est références pour des cibles différentes.
<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>