Anda perlu secara manual mengedit file proyek dan add s ke default TargetFramework dan pada dasarnya mengubahnya ke TargetFrameworks . Kemudian Anda menyebutkan Moniker dengan ; pemisah.
Anda juga dapat meletakkan referensi paket Nuget dalam ItemGroup bersyarat secara manual atau menggunakan VS Nuget Package Manager.
Berikut tampilan .csproj Anda:
<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>
Solusi lain yang saya lakukan hari ini karena dokumentasi yang hilang adalah saya membuat proyek di VS2015 dan membentuk project.json menggunakan dokumentasi dan intellisense yang tersedia, kemudian membuka solusi di VS2017 dan menggunakan pemutakhiran bawaan. Saya kemudian akan melihat file csproj untuk mencari tahu bagaimana membuat konfigurasi itu terjadi.
Multi-penargetan target yang lebih esoterik tanpa Moniker :
Microsoft:
PCL tidak disarankan +
Meskipun PCL didukung, pembuat paket harus mendukung standar bersih sebagai gantinya. .NET Platform Standard adalah evolusi dari PCL dan mewakili portabilitas biner di seluruh platform menggunakan moniker tunggal yang tidak terikat dengan statis seperti moniker portabel-a + b + c.
Jika Anda ingin menargetkan Profil Portabel itu tidak memiliki ditentukan sebelumnya moniker sehingga Profiles portabel juga tidak bisa mengambil kesimpulan TargetFrameworkIdentifier
, TargetFrameworkVersion
dan TargetFrameworkProfile
. Juga konstanta kompilator tidak didefinisikan secara otomatis. Akhirnya Anda harus menambahkan semua referensi assembly tidak ada yang disediakan secara default.
Contoh di bawah ini diambil dari proyek yang menggunakan dynamic
kata kunci sehingga diperlukan tambahan Microsoft.CSharp
assembly, sehingga Anda dapat melihat bagaimana referensi untuk target yang berbeda.
<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>