Musisz ręcznie edytować plik projektu i dodać s do domyślnego TargetFramework i zasadniczo zmienić go na TargetFrameworks . Następnie wspominasz o Monikerze z ; separator.
Możesz również umieścić odwołania do pakietów Nuget w warunkowej ItemGroup ręcznie lub za pomocą Menedżera pakietów VS Nuget.
Oto jak powinien wyglądać plik .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>
Innym obejściem, które robię w dzisiejszych czasach z powodu brakującej dokumentacji, jest utworzenie projektu w VS2015 i utworzenie pliku project.json przy użyciu dostępnej dokumentacji i funkcji Intellisense, a następnie otwarcie rozwiązania w VS2017 i skorzystanie z wbudowanej aktualizacji. Następnie przyjrzę się plikowi csproj, aby dowiedzieć się, jak wykonać tę konfigurację.
Wielokrotne kierowanie na bardziej ezoteryczne cele bez monikera :
Microsoft:
PCL nie są zalecane +
Chociaż PCL są obsługiwane, autorzy pakietów powinni zamiast tego obsługiwać netstandard. Platforma .NET Platform Standard to ewolucja języków PCL i reprezentuje przenośność plików binarnych między platformami przy użyciu pojedynczego monikera, który nie jest powiązany ze statycznym, takim jak monikery portable-a + b + c.
Jeśli chcesz kierować Portable profilu nie ma predefiniowany przydomek też nie można wywnioskować więc przenośne profili TargetFrameworkIdentifier, TargetFrameworkVersionoraz TargetFrameworkProfile. Również stała kompilatora nie jest definiowana automatycznie. Na koniec musisz dodać wszystkie odwołania do zestawów, żadne nie są domyślnie dostarczane.
Poniższy przykład pochodzi z projektu, w którym użyto dynamicsłowa kluczowego, więc dodatkowo potrzebował Microsoft.CSharpzestawu, dzięki czemu można zobaczyć, jak to odwołania do różnych celów.
<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>