首页 > 代码库 > 创建可同时用于.net core与.net framework的库,并发布到nuget

创建可同时用于.net core与.net framework的库,并发布到nuget

 

 

我们在引用nuget上的类库时常常会看到如下类型的包

技术分享

 

 

这说明它分别可用于使用.netFramework或使用.net Core的项目.这样的包可以兼顾到不同框架版本的项目,但只需在nuget发布一个包就行,非常的方便.

那么如何来创建一个这样的通用类库呢?

首先使用vs2017新建一个标准库

技术分享

 

编辑csproj文件

技术分享

 

编辑标签TagetFramework,添加如图标出的内容

技术分享

 

重载项目,然后生成项目可以发现在debug目录生成了两个文件夹,说明你已经创建了一个可用于多个目标框架的类库,简称多目标库

技术分享

 

仅仅到这步还不够,因为net45提供的api与netstandard提供的api是有差异的,例如获取程序工作文件夹路径的方法

使用.net framework4.5的方法是

string rootDir = AppDomain.CurrentDomain.BaseDirectory

使用.net core

 string rootDir = AppContext.BaseDirectory;

对于这样有差异的代码我们应该使用条件编译的方法兼容,方法如下

查看项目的编译符号,项目->右键->属性->生成

技术分享

 

可以看到项目的生成符号是NET45,我们的兼容代码就可以这样编写

技术分享

 

并且可以在导航栏来切换不同框架版本来进行调试

技术分享

 

最后一步就是生成nupkg包来发不到nuget,右键项目点击打包

技术分享

 

生成目录下找到nuget包文件,并发布到nuget

 

技术分享

 

 技术分享

 

创建可同时用于.net core与.net framework的库,并发布到nuget