如何创建可同时被.NET与.NET Core项目引用的跨平台类库项目
可行解决方案
下面给出两种可直接落地的方案,无需修改现有.NET Framework 4.5 WebAPI项目、.NET 5 MVC项目的原有配置:
方案一:使用匹配兼容版本的.NET Standard类库
该方案仅需维护一个类库项目,天然支持跨平台运行:
- 新建.NET Standard类库项目,目标版本选择
netstandard1.1(.NET Standard 1.1是唯一同时兼容.NET Framework 4.5、.NET 5的标准版本,你之前创建的.NET Standard类库无法被引用,大概率是选了2.0及以上的高版本,高版本.NET Standard仅支持.NET Framework 4.6.1及以上) - 正常安装Newtonsoft.Json 13.0.1 NuGet包即可,该版本原生支持netstandard1.1
- 编译完成后即可同时被两个业务项目引用,部署到Linux环境也能正常运行
方案二:配置类库多目标框架
如果你的类库后续需要用到.NET Standard 1.1不支持的API,可以选择多目标编译的方案:
- 右键已创建的类库项目,选择「编辑项目文件」,将原有的单目标框架配置
<TargetFramework>xxx</TargetFramework>替换为多目标配置:<TargetFrameworks>net45;net5.0</TargetFrameworks> - 保存项目文件后重新加载,Newtonsoft.Json 13.0.1会自动适配两个目标框架,无需额外配置
- 编译后类库会同时生成面向.NET Framework 4.5、.NET 5的两个版本的输出,两个业务项目会自动匹配引用对应版本的类库,部署到Linux环境时使用.NET 5版本的输出即可正常运行
注意事项
- 选择方案一的前提下,类库代码不要使用.NET Standard 1.1版本之后才推出的API,否则会触发编译报错
- 两种方案均不需要修改现有业务项目的目标框架版本,对业务代码无侵入
内容的提问来源于stack exchange,提问作者nick zoum
相关产品推荐
相关产品推荐

