Bạn cần phải chỉnh sửa thủ công tệp dự án và thêm s vào TargetFramework mặc định và về cơ bản thay đổi nó thành TargetFrameworks . Sau đó, bạn đề cập đến Moniker với một ;dải phân cách.
Ngoài ra, bạn có thể đặt các tham chiếu gói Nuget trong một ItemGroup có điều kiện theo cách thủ công hoặc sử dụng VS Nuget Package Manager.
Đây là giao diện .csproj của bạn:
<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>
Một cách giải quyết khác mà tôi thực hiện những ngày này vì thiếu tài liệu là tôi tạo một dự án trong VS2015 và hình thành project.json bằng cách sử dụng tài liệu có sẵn và intellisense, sau đó mở giải pháp trong VS2017 và sử dụng bản nâng cấp tích hợp sẵn. Sau đó, tôi sẽ xem xét tệp csproj để tìm cách thực hiện cấu hình đó.
Nhắm mục tiêu nhiều mục tiêu bí truyền hơn mà không có Moniker :
Microsoft:
PCL không được khuyến nghị +
Mặc dù PCL được hỗ trợ, các tác giả gói nên hỗ trợ net tiêu chuẩn thay thế. Tiêu chuẩn nền tảng .NET là sự phát triển của PCL và thể hiện khả năng di động nhị phân trên các nền tảng bằng cách sử dụng một biệt danh duy nhất không gắn với biệt danh tĩnh như portable-a + b + c.
Nếu bạn muốn nhắm mục tiêu một xách tay hồ sơ nó không có một định nghĩa trước biệt danh rất Profiles xách tay cũng không thể suy luận TargetFrameworkIdentifier
, TargetFrameworkVersion
vàTargetFrameworkProfile
. Ngoài ra, một hằng số biên dịch không được định nghĩa tự động. Cuối cùng, bạn phải thêm tất cả các tham chiếu lắp ráp không được cung cấp theo mặc định.
Ví dụ bên dưới này được lấy từ một dự án đã sử dụng dynamic
từ khóa, vì vậy nó cũng cần thêm phần hợp Microsoft.CSharp
ngữ, do đó bạn có thể thấy cách nó tham chiếu cho các mục tiêu khác nhau.
<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>