.NET Standard 类库的使用技巧
![作者头像](https://ask.qcloudimg.com/custom-avatar/1136704/muq78yd3m8.jpg)
在前一篇博客《.NET Standard中配置TargetFrameworks输出多版本类库》中详细介绍了如何创建、配置、条件编译、引用本地程序集、NuGet方式引用程序集、XML文档输出、编码与DEBUG 调试、自动生成内部版本号、文件复制等功能。但是Visual Studio中也存在一些使用不方便的地方,本文介绍一些开发中的小技巧。
一、API适配.NET版本提示
高版本的 Visual Studio 足够智能,能针对不同的API及时给出提示,指出API适用于哪种版本的.NET。比如下图中使用的 fileStream.WriteAsync()方法是异步方法,只在.NET4.5及.NET Standard2.0中受支持,在.NET4.0中没有异步方法,只有对应的 fileStream.Write()同步方法。
![](https://ask.qcloudimg.com/http-save/yehe-1136704/zvig9jtg5z.png)
将代码修改为如下格式即可实现多版本
![](https://ask.qcloudimg.com/http-save/yehe-1136704/xo20irg7oz.png)
所以在编写代码时,建议在项目文件.csproj文件中做如下配置:
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
</PropertyGroup>
也就是将 netstandard2.0 放置在第一个位置,因为在VS中编写代码时当前编辑器环境是针对放置在第一个位置的.NET版本。
二、.NET 目标框架切换
.NET Standard 类库配置多目标框架后,添加引用时无法自动切换版本,必须手动调整配置顺序才可以。
<PropertyGroup>
<TargetFrameworks>net40;net45;netstandard2.0;</TargetFrameworks> <!--输出多版本类库-->
</PropertyGroup>
但是在编码时提供了目标框架切换的功能,这个是非常实用且方便的功能。我做的BIMFACE二次开发的接口的目标是支持 .NET Framework4.0、.NET Framework4.5 以及 .NET Core版本。将鼠标放到代码编辑器界面左上角,自动给出提示“实用下拉列表可查看和切换到此文件所属的其他项目”
![](https://ask.qcloudimg.com/http-save/yehe-1136704/ypjetrhbpu.png)
下拉框的选项内容是 <TargetFrameworks> 中配置的值
![](https://ask.qcloudimg.com/http-save/yehe-1136704/p7pbe8ndlq.png)
此功能可以判断相同的代码在哪些框架下受支持且能正确编译。比如我再LogUtils类中写了一个异步记录日志的方法,当切换到 .NET Standard 2.0 或者 .NET 4.5时编辑器没有给出错误的提示,说明代码在这两种框架下是受支持的。
![](https://ask.qcloudimg.com/http-save/yehe-1136704/rvb0dn3a8c.png)
![](https://ask.qcloudimg.com/http-save/yehe-1136704/uqyclwyd0u.png)
当切换到 .NET4.0 时,VS中自动给出了错误提示信息
![](https://ask.qcloudimg.com/http-save/yehe-1136704/i2qodlhqi5.png)
此时就可以使用条件编译符号来解决此问题
![](https://ask.qcloudimg.com/http-save/yehe-1136704/meb1vrv5uc.png)
社区
活动
资源
关于
腾讯云开发者
扫码关注腾讯云开发者
领取腾讯云代金券
热门产品
热门推荐
更多推荐
Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2024 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有