Có một loạt bài viết đẹp về nó mà giải quyết câu hỏi của tôi xung quanh nó ...
https://oren.codes/2015/06/16/demystifying-pcls-net-core-dnx-and-uwp-redux/ https://oren.codes/2015/07/29/targeting-net-core/
Net Core có tất cả các thư viện của mình (ví dụ như System.IO) trong các gói NuGet riêng biệt (mỗi cái có sẵn cho SDK, DNX, UWP và .Net 4.6). Thư viện của bên thứ ba nhắm mục tiêu dnxcore50
(DNX) hoặc uap10.0
(UWP) nếu chúng truy cập nền tảng một cách tự nhiên hoặc dựa vào các tính năng của chúng. Nếu họ không truy cập nền tảng nhưng chỉ dựa vào các gói khác, họ nên nhắm mục tiêu dotnet
.
dotnet
có nghĩa là: Tôi tương thích với bất kỳ nền tảng nào đáp ứng các phụ thuộc của tôi (thư viện XYZ "dotnet" sử dụng System.Reflection dnxcore5+net45
không thể sử dụng bởi ứng dụng UWP uap10.0
). Điều này có hiệu quả kết thúc cơn ác mộng tổ hợp của các nền tảng. Tổ hợp mục tiêu trước đó dnxcore5+net45
đã tạo một giao lộ giữa các thư viện nền tảng và mỗi lần bổ sung sẽ làm cho tình hình trở nên tồi tệ hơn. dotnet
ở phía bên kia không hạn chế thư viện trên một mục tiêu mà thay vào đó chuyển tiếp quyết định hạn chế này cho các phụ thuộc của nó (nơi đột nhiên các hạn chế mới như nền tảng unicorn
nổi tiếng có thể hiển thị).
Vì vậy, với tư cách là tác giả thư viện, bạn có thể nhắm mục tiêu dotnet
nếu bạn chỉ cần các thư viện khác.
Trả lời câu hỏi của bạn:
- PCL của bạn là tương thích với môi trường phong cách Net cốt lõi như DNX và UWP nếu bạn thêm các mục tiêu
dotnet
, dnxcore50
hoặc uap10.0
tùy thuộc vào nhu cầu của thư viện của bạn (xem bài viết của Owen cho cùng khả năng tương thích cơ bản với hồ sơ hợp đồng 259).
- .Net Core là nhiều hơn một bộ thư viện PCLed. Nó là một CLR mới, một khung công tác có tổ chức mới (được đóng gói trong các phần nhỏ) và cơ sở hạ tầng cho các SDK .Net mới (DNX, UWP và bất kỳ thứ gì đến tiếp theo). Thuật ngữ ".Net Core" nhắm mục tiêu cả hai, thư viện lớp cơ sở "CoreFx" và CLR "CoreCLR". Nhưng các nền tảng thực sự là trong thực tế DNX (bởi nhóm ASP.Net) và UWP (bởi nhóm Windows).
Tất cả câu trả lời đó là hiểu biết hiện tại của tôi về tình huống thư viện .Net Core. Đó là công việc đang được tiến hành, và như đã đề cập trong các bài đăng, chưa được công bố tài liệu.
LƯU Ý tháng 12 năm 2016: Hãy nhận biết, dotnet
như người tiền nhiệm để netstandard1.x
đã thay đổi trong khái niệm của nó bắt đầu với netstandard2.x
(NET Lõi 2,0; ~ tháng 6 năm 2017). Bắt đầu với netstandard2.0
sẽ có một hợp đồng chung (netstandard.dll) mà tất cả các nền tảng (.NET Core, .NET Framework, Xamarin, Mono, Unity3D) thực hiện. Hợp đồng này sẽ được mở rộng theo thời gian và nền tảng phải hoặc là thả hỗ trợ cho tiêu chuẩn mới nhất, ném NotImplementedException hoặc triển khai nó.