В Visual Studio можно создать библиотеку классов (Class Library) 3:
- Class Library (.NET Framework)
- Class Library (.Net Core)
- Class Library (.NET Standard)
Какая разница между ними? Какой тип библиотеки лучше использовать и когда?
В Visual Studio можно создать библиотеку классов (Class Library) 3:
Какая разница между ними? Какой тип библиотеки лучше использовать и когда?
Какая разница между ними?
О .Net Framework писать не буду, поскольку это самая распространённая платформа, а о .Net Core и .Net Standart скажу следующее:
Во первых нужно отметить их совместимость: Библиотеки, предназначенные для .NET Standard, будут работать в любой среде исполнения, совместимой со стандартом .NET, например .NET Core,.NET Framework, Mono/Xamarin. С другой стороны, библиотеки, ориентированные на .NET Core, могут работать только в среде выполнения .NET Core.
И конечно не нужно забывать о площади поверхности API: Стандартные библиотеки .NET поставляются со всеми в NETStandard.Library, тогда как библиотеки .NET Core поставляются со всеми в Microsoft.NETCore.App. Последняя включает около 20 дополнительных библиотек, некоторые из которых мы можем добавить вручную в нашу библиотеку .NET Standard (например, System.Threading.Thread), а некоторые из них несовместимы с стандартом .NET(например, Microsoft.NETCore.CoreCLR).
Кроме того, библиотеки .NET Core определяют время выполнения и поставляются с моделью приложения.
Какой тип библиотеки лучше использовать и когда?
зависит от того, что вы разрабатываете, какую совместимость ваши библиотеки должны иметь и какую площадь поверхности .NET API вы хотите
Используйте .NET Standard, если вам нужно увеличить количество приложений, которые будут совместимы с вашей библиотекой, но тем самым пожертвовав площадью поверхности .NET API.
Используйте .NET Core, когда требуется увеличить площадь поверхности .NET API, доступ к которой может получить ваша библиотека
Например, библиотека, предназначенная для .NET Standard 1.3 будет совместима с приложениями, нацеленными на .NET Framework 4.6,.NET Core 1.0, Универсальная платформа Windows 10.0 и любая другая платформа, поддерживающая .NET Standard 1.3. Однако библиотека не будет иметь доступа к некоторым частям .NET API. Например, пакет Microsoft.NETCore.CoreCLR совместим с .NET Core, но не с .NET Standard.