/ / Zalety netcoreapp2.0 vs netstandard2.0 dla projektu bibliotecznego - .net, .net-core, .net-standard

Zalety netcoreapp2.0 vs netstandard2.0 dla projektu bibliotecznego - .net, .net-core, .net-standard

Mam już istniejące rozwiązanie dotnet 4.6.2, które składa się z dwóch zewnętrznych projektów (do przeniesienia w tym samym czasie) i udostępnionego core biblioteka.

Muszę wybrać zestaw rdzenia TargetFramework, Które mogłyby być netcoreapp2.0 lub netstandard2.0.

Skoro nie będzie możliwe wykonanie lub odniesienie do jakiegokolwiek projektu zewnętrznego, czy są jakieś zalety w taki czy inny sposób?

Odpowiedzi:

16 dla odpowiedzi nr 1

Różnią się one naturą:

Każda wersja .NET Core Librairies implementuje (przynajmniej) daną wersję standardu .NET, a pełną tabelę można znaleźć w .NET Standardowa dokumentacja. Obecnie najnowsze wersje są zsynchronizowane (2.0 - 2.0), ale to nie było i nigdy nie będzie prawdziwe.

The.Biblioteki NET Core są w rzeczywistości zawsze nadzbiorem interfejsów API zdefiniowanych w odpowiedniej wersji standardu .NET. W bibliotekach .NET Core zawsze dostępne są typy i elementy, które nie są (jeszcze?) Częścią standardu .NET. Microsoft publikuje porównywanie nazw dostępnych interfejsów API z obszarami nazw.

Twoja biblioteka może korzystać z interfejsu API, którego jeszcze nie mazostał standaryzowany w .NET Standard (lub nigdy nie będzie), ale jest już dostępny w .NET Core Libraries. Jako przykład możesz użyć typów z przestrzeni nazw System.Drawing, które wkrótce będą dostępne w .NET Core Libraries, ale nie będą częścią standardu .NET Standard 2.0.

Tak więc, wybierając netcoreapp2.0 przez netstandard2.0, zyskujesz dostęp do większego API, kosztem kompatybilności.

Ogólnie, zawsze powinieneś starać się wybierać najbardziej przenośny framework (tutaj, netnet).

Jeśli nie jest to opcja dla ciebie, najlepszą rzeczą byłoby przekierowanie na wiele struktur z jednej biblioteki, jak wyjaśniono tutaj: W jaki sposób ukierunkować na wiele bibliotekę klasy .NET Core za pomocą csproj?. Wiele .NET Core API brakuje w .NET Standard są również obecne w (pełnym) .NET Framework.


1 dla odpowiedzi nr 2

NetStandard jest nowym zalecanym formatem biblioteki, który umożliwia współdzielenie różnych frameworków (NetFramwwork, NetCore, Xamarin), więc to byłaby odpowiedź. https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/