c# - 如何多目标 C# 类库以同时支持 NET_STANDARD 和 NET_COREAPP?
问题描述
我有一个当前是多目标的类库,NET40
并且NETSTANDARD2.0
:
<TargetFrameworks>net40;netstandard2.0</TargetFrameworks>
NETCOREAPP2.1
但是,我现在还需要支持一些新的 api,这些新 api是作为netstandard
.
我最初的想法是简单地扩展当前框架以包括NETCOREAPP2.1
:
<TargetFrameworks>net40;netstandard2.0;netcoreapp2.1</TargetFrameworks>
<PropertyGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.1'">
<DefineConstants>NETCORE</DefineConstants>
</PropertyGroup>
在代码中我可以像这样使用新添加的 API:
#if NETCORE
// Use the api added in NETCORE 2.1
#endif
但是,一旦在面向更高版本.NET Core的应用程序中使用该库后会发生什么?例如.NET Core 2.2?我必须为每个新发布的版本创建新的常量吗?
在理想的世界NETCOREAPP2.1
中会实施NETSTANDARD2.1
,但不幸的是事实并非如此。
解决方案
只需创建一个 .net 标准 2.0 库。此库可供 .net (>= 4.6.1) 或核心 (>= 2.0) 应用程序使用。保证了库的向下兼容性。
https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-platforms-support
推荐阅读
- php - WooCommerce:检查购物车中不同购物车商品/ SKU 的数量
- machine-learning - 机器学习模型的部署 - 数据版本控制
- android - 我希望仅在收到实时数据后才调用函数
- c++ - 英特尔集成性能原语傅里叶变换幅度
- database - 什么是存储文件的最佳 nosql 数据库仅包含整数列表
- amazon-dynamodb - DynamoDb 嵌套地图更新
- php - Laravel 7:foreach 循环中未定义的变量
- mongodb - MongoDB Golang 驱动程序尝试连接到 localhost 而不是 docker 主机
- .net - Windows 窗体应用程序设置任务计划程序以运行一些已包含在此应用程序中的类的更好方法是什么?(。网)
- javascript - Googlemaps按类名放置自动完成 - JS循环问题