创建一个.NET Standard类库
选择“类库”,用于创建面向.NET或.NET Standard的类库的项目。注意:不要选择“类库(.NET Framework)”
项目文件
双击项目名称,或者右键,点击“编辑项目文件”,打开项目文件
项目文件内容:
改成支持多个net目标框架
将TargetFramework
标签改为TargetFrameworks
,然后里面输入需要增加的版本,示例:
- net framework4.5,输入
net45
- net framework4.6.1,输入
net461
- net core 3.0,输入
netcoreapp3.0
;net core版本以此类推 - net standard 输入
netstandard2.0
- net5.0输入
net5.0
;5.0以上以此类推 - net5.0(及以上)如果针对某一系统平台,如windows,输入
net5.0-windows
<TargetFrameworks>netstandard2.0;netcoreapp3.0;netcoreapp3.1;net45;net451;net452;net46;net461;net462;net47;net471;net472;net48;net481;net5.0-windows;net6.0-windows;net7.0-windows</TargetFrameworks>
修改完成后保存,项目自动加载,也会出现如下错误,只要重新加载项目即可。
加载完成后可以在项目依赖项中看到多个net目标框架,及其相关的引用
多Net框架类库安装nuget包
nuget包支持你的多个net目标框架
如果选择的nuget包支持你的多个net目标框架,会自动为各net框架安装
可以在各个版本中看到包正常安装。
nuget包支持你部分net目标框架
如果需要安装的nuget包只支持部分net版本,支持的部分可以正常安装,不支持的会提示异常
异常的显示黄色感叹号
解决方法:
在项目文件中配置
当前项目文件已经出现了包的引用
需要对不同NET版本进行不同的包引用
示例:sqlsugar包的应用,net framework版本引用sqlsugar,net Core版本(包括新的net 5.0以上版本)引用SqlSugarCore
增加一个ItemGroup对引用进行分组,通过Condition属性增加条件,格式'$(TargetFramework)'=='net版本'
,然后在该ItemGroup中增加包引用PackageReference
<ItemGroup Condition="'$(TargetFramework)'=='net45'">
<PackageReference Include="SqlSugar" Version="5.1.3.50" />
</ItemGroup>
修改完成之后可以看到只有net45版本引用了该包
然后为net5.0增加另一个包的引用
结果:
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net45'">
<PackageReference Include="SqlSugar" Version="5.1.3.50" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net5.0'">
<PackageReference Include="SqlSugarCore" Version="5.1.3.50" />
</ItemGroup>
注意事项1:'$(TargetFramework)'=='net版本'
net版本中带 逗号.
的需要加上单引号''
,否则项目文件会出错。其他情况可以不加单引号
注意事项2:右侧值net版本
需要和TargetFrameworks中写的net版本一致。例如上面版本是net5.0,下面写net5,则不会引用
更多
关于项目文件更多的标签元素的使用可以阅读官网