.NET Standard 类库的使用技巧
在前一篇博客《.NET Standard中配置TargetFrameworks输出多版本类库》中详细介绍了如何创建、配置、条件编译、引用本地程序集、NuGet方式引用程序集、XML文档输出、编码与DEBUG 调试、自动生成内部版本号、文件复制等功能。但是Visual Studio中也存在一些使用不方便的地方,本文介绍一些开发中的小技巧。
高版本的 Visual Studio 足够智能,能针对不同的API及时给出提示,指出API适用于哪种版本的.NET。比如下图中使用的 fileStream.WriteAsync()方法是异步方法,只在.NET4.5及.NET Standard2.0中受支持,在.NET4.0中没有异步方法,只有对应的 fileStream.Write()同步方法。

将代码修改为如下格式即可实现多版本

所以在编写代码时,建议在项目文件.csproj文件中做如下配置:
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
</PropertyGroup>
也就是将 netstandard2.0 放置在第一个位置,因为在VS中编写代码时当前编辑器环境是针对放置在第一个位置的.NET版本。
.NET Standard 类库配置多目标框架后,添加引用时无法自动切换版本,必须手动调整配置顺序才可以。
<PropertyGroup>
<TargetFrameworks>net40;net45;netstandard2.0;</TargetFrameworks> <!--输出多版本类库-->
</PropertyGroup>
但是在编码时提供了目标框架切换的功能,这个是非常实用且方便的功能。我做的BIMFACE二次开发的接口的目标是支持 .NET Framework4.0、.NET Framework4.5 以及 .NET Core版本。将鼠标放到代码编辑器界面左上角,自动给出提示“实用下拉列表可查看和切换到此文件所属的其他项目”

下拉框的选项内容是 <TargetFrameworks> 中配置的值

此功能可以判断相同的代码在哪些框架下受支持且能正确编译。比如我再LogUtils类中写了一个异步记录日志的方法,当切换到 .NET Standard 2.0 或者 .NET 4.5时编辑器没有给出错误的提示,说明代码在这两种框架下是受支持的。


当切换到 .NET4.0 时,VS中自动给出了错误提示信息

此时就可以使用条件编译符号来解决此问题

.NET Standard 类库的使用技巧的更多相关文章
- Visual Studio 2017创建.net standard类库编译出错原因
正式版上个月已经Release了,从那时到现在经常会收到更新提示,估计问题还不少吧!其中最吸引我的当然是.net standard与.net core. 刚好最近接触.net standard项目,新 ...
- .Net Standard 类库的创建和使用
一..Net Standard类库的创建 1.在当前Vs 2017中创建.Net Standard 类库项目,目前版本默认值 .Net Standard v1.4 二..Net Standard类库的 ...
- 如果不需要,建议移除net standard类库中的Microsoft.NETCore.Portable.Compatibility
使用Microsoft.NETCore.Portable.Compatibility会破坏该类库在Mono和Xamarin平台的兼容性 可能导致的问题 provides a compile-time ...
- NET Standard中配置TargetFrameworks输出多版本类库
系列目录 [已更新最新开发文章,点击查看详细] 在.NET Standard/.NET Core技术出现之前,编写一个类库项目(暂且称为基础通用类库PA)且需要支持不同 .NET Framew ...
- Xamarin+Prism开发之.net standard化
前面[Visual Studio 2017创建.net standard类库编译出错原因]已经解决.net standard类库的编译问题,现在可以正式进入主题了.作为.net 跨平台开发者也得跟上时 ...
- .NET Standard 2.0 特性介绍和使用指南
.NET Standard 2.0 发布日期:2017年8月14日 公告原文地址 前言 早上起来.NET社区沸腾了,期待已久的.NET Core 2.0终于发布!根据个人经验,微软的产品一般在2.0时 ...
- 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目
迁移Net项目为Net Core\Standard项目 背景: 我们公司内部有自己ORM开发框架,最新因为需要将系统迁移到国产服务器上,所以首先需要将最基础的ORM框架改造可以运行在国产服务器上.对于 ...
- 通过编写一个简单的日志类库来加深了解C#的文件访问控制
在程序的开发调试过程及发布运行后的状态监控中,日志都有着极其重要的分量,通过在关键逻辑节点将关键数据记录到日志文件当中能帮助我们尽快找到程序问题所在.网上有不少专业成熟的日志组件可用,比如log4ne ...
- [C#] .NET Core/Standard 1.X 项目中如何使用XmlIgnoreAttribute等标准范围外的内容,兼谈如何解决“violation of security transparency rules failed”(违反安全透明规则失败)异常
作者: zyl910 一.缘由 XML序列化是一个很常用的功能,但对于.NET Core/Standard,其直到2.0版才内置支持XML序列化.具体来说, .NET Core 2.0 或 .NET ...
随机推荐
- 正则表达式在Java中应用的三种典型场合:验证,查找和替换
正则式在编程中常用,总结在此以备考: package regularexp; import java.util.regex.Matcher; import java.util.regex.Patter ...
- Mybatis源码如何阅读,教你一招!!!
前言 前一篇文章简单的介绍了Mybatis的六个重要组件,这六剑客占据了Mybatis的半壁江山,和六剑客搞了基友,那么Mybatis就是囊中之物了.对六剑客感兴趣的朋友,可以看看这篇文章:Mybat ...
- Linux:安装禅道
一.准备工作 禅道安装包ZenTaoPMS.8.1.3.zbox_64.gz,上传至服务器:rz命令 解压到指定目录 tar -zxvf ZenTaoPMS.8.1.3.zbox_64.gz -C ...
- python基础四(json\os\sys\random\string模块、文件、函数)
一.文件的修改 文件修改的两种思路: 1.把文件内容拿出来,做修改后,清空原来文件的内容,然后把修改过的文件内容重新写进去. 步骤: 1.打开文件:f=open('file','a+') #必须用a ...
- 【NOIP2013模拟】黑魔法师之门
题目描述 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源.然而在与Violet星球的战争中,由于Z副官的愚蠢,地球的领袖applepi被邪恶的黑魔法师Vani囚禁在了Violet星球. ...
- 基于 ramfs 的 OTA
背景 默认的 OTA 方案是基于 recovery 系统完成的.某个产品考虑产品形态和 flash 容量之后,计划去掉 recovery 系统(不考虑掉电安全),这就需要 OTA 方案能支持在只有单个 ...
- Appium自动化Android环境搭建
前言: 本系列教程用于个人经验记录,用于他人借鉴,提供一定参考价值.经常会有一种感觉,工具或技术在某一阶段使用比较熟练,过一段时间就可能会遗忘,俗话说好记性不如烂笔头,以此记录. appium简介 ...
- swift基本体验
Swift初体验 1. 导入框架 2. 定义标识符: let/var 3. 语句结束时;可以省略 4. print() 5. let/var 6. 逻辑分支 7. 循环使用 // 1.Swift中如何 ...
- CTF-WeChall-第四天上午
2020.09.12 08:24 哈哈,go on!
- Vue+SpringBoot项目实战(一) 搭建环境
GitHub 地址: https://github.com/dongfanger/sprint-backend https://github.com/dongfanger/sprint-fronten ...