Elle düzenlemeye proje dosyası ve eklenti ihtiyaç ler varsayılan için TargetFramework ve temelde olarak değiştirin TargetFrameworks . Sonra Moniker'dan a ; ayırıcı.
Ayrıca Nuget paketi referanslarını manuel olarak veya VS Nuget Paket Yöneticisini kullanarak koşullu bir ItemGroup'a yerleştirebilirsiniz.
.Csproj dosyanız şöyle görünmelidir:
<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>
Bu günlerde eksik belgeler nedeniyle yaptığım başka bir geçici çözüm, VS2015'te bir proje oluşturmam ve mevcut belgeleri ve intellisense'i kullanarak project.json dosyasını oluşturmam, ardından çözümü VS2017'de açıp yerleşik yükseltmeyi kullanmam. Daha sonra bu yapılandırmanın nasıl gerçekleştirileceğini bulmak için csproj dosyasına bakacağım.
Moniker olmadan daha ezoterik hedefleri çoklu hedefleme :
Microsoft:
PCL'ler önerilmez +
PCL'ler desteklense de, paket yazarları bunun yerine netstandard'ı desteklemelidir. .
Bir Taşınabilir Profili hedeflemek isterseniz bir önceden tanımlanmış yok lakabı da olamaz anlaması Taşınabilir Profiller böylece TargetFrameworkIdentifier
, TargetFrameworkVersion
ve TargetFrameworkProfile
. Ayrıca bir derleyici sabiti otomatik olarak tanımlanmaz. Son olarak, tüm montaj referanslarını eklemeniz gerekir, hiçbiri varsayılan olarak sağlanmamıştır.
Aşağıdaki Örnek, dynamic
anahtar kelimeyi kullanan bir projeden alınmıştır, bu nedenle ek olarak Microsoft.CSharp
montaja ihtiyaç duyar, böylece farklı hedefler için nasıl referans olduğunu görebilirsiniz.
<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>