【转】.NET Core 可移植类库PCL Portable Class Library详解

转自:https://www.kaifaxueyuan.com/server/dotnet-core/dotnet-core-portable-class-library.html

 在这一章中,我们将讨论什么是PCL (可移植类库),以及为什么我们需要PCL。为了理解这个概念,让我们打开上一章创建的类库项目文件夹。

什么是PCL

  现在让我们了解什么是PCL

  •   可移植类库项目使您能够编写和构建在多个.net框架平台上工作的托管程序集。

  •   您可以创建包含希望在许多项目中共享的代码的类,例如共享业务逻辑,然后在不同类型项目中的引用它。

  •   PCL还可以帮助您快速轻松地为Microsoft平台构建跨平台应用程序和库。

  •   可移植类库可以帮助您减少开发和测试代码的时间和成本。

  •   使用此项目类型编写和构建可移植的.NET框架程序集,然后从针对多个平台(如Windows和Windows Phone等)的应用程序中引用这些程序集。

  备注:Visual Studio 2017开始就不叫可可移植类库了,改名叫.net标准类库,所在Visual Studio 2017中直接创建.net标准类库即可,下面是 Visual Studio 2015的操作方法,如果你使用Visual Studio 2017可以直接忽略下面的内容,直接看后面的“添加StringLib类”部分。

  现在,让我们从解决方案资源管理器中删除我们创建的类库。同时,将其从“解决方案”文件夹中删除,并进一步添加新的项目项。

remove.jpg

  在左窗格中选择Visual C# → Windows模板,并在中间窗格中选择类库(可移植)。

  在名称字段中输入StringLibrary,然后单击确定创建此项目。

stringlibrary.jpg

  现在我们需要选择要引用的目标框架。让我们选择Windows Universal和ASP.NET Core,单击确定。

retarget.jpg

  你可以看到它已经创建了一个PCF格式的新项目。现在让我们在解决方案资源管理器中右键单击StringLibrary项目,然后选择属性。

properties.jpg

  点击目标.NET标准平台,弹出的提示框单击确认。

target.jpg

  它现在是同一个类库,只有一个小区别。不同之处在于,UWP也可以使用它,因为它包含*.csproj文件。

class_library.jpg

 

添加StringLib类

  现在让我们添加一个新类;为此,您需要右键单击解决方案资源管理器中的项目,然后选择添加→类...

add_new_class.jpg

  在中间窗格中选择类,在名称字段中输入StringLib.cs,然后单击添加。一旦添加了类,然后替换StringLib.cs文件中的以下代码。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; namespace StringLibrary { public static class StringLib { public static bool StartsWithUpper(this String str) { if (String.IsNullOrWhiteSpace(str)) return false; Char ch = str[0]; return Char.IsUpper(ch); } public static bool StartsWithLower(this String str) { if (String.IsNullOrWhiteSpace(str)) return false; Char ch = str[0]; return Char.IsLower(ch); } public static bool StartsWithNumber(this String str) { if (String.IsNullOrWhiteSpace(str)) return false; Char ch = str[0]; return Char.IsNumber(ch); } } 
}

 

  让我们构建这个可移植类库项目,它应该可以编译而不会出错。现在,我们需要在我们的控制台项目中添加这个便携式类库的引用。因此,展开FirstApp,右键单击引用并选择添加引用…

references.jpg

  在“引用管理器”对话框中,选择StringLibrary,这是我们的可移植类库项目,然后单击“确定”。

library_project.jpg

  你可以看到StringLibrary引用被添加到控制台项目中,它也可以在project.json文件中看到。

  现在,您可以再次运行应用程序,您将看到相同的输出:

run_application.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式C++实现(4)——原型模式、模板方法模式

软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书&#xff0…

【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!

转自:医疗业务学习笔记--DICOM协议的基础内容 - 知乎 本文首发于“雨夜随笔”公众号,欢迎关注。 DICOM协议是医疗领域对如何处理、存储、打印和传输医疗图片的一系列标准。DICOM是 Digital Imaging and Communications in Medicine 的缩写,…

linux去掉u盘写保护,最全面win10系统下u盘写保护怎么去掉

U盘写保护就是只能读取U盘中的内容,但是却不能修改或者将其它文件保存在U盘,有时候U盘写保护妨碍我们使用,有些朋友想要将其接除,对此,我给大家整理了win10移除写保护的方法,希望能帮助到你U盘是通过USB接口…

设计模式C++实现(5)——桥接模式

软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书&#xff0…

【转】CT基本概念(必须掌握)!!!!!!!!!!!!!!

转自:http://www.bmecn.com/wenku/knowledge/988.html 1.像素(Pixel)和体素(Voxel) 像素(Pixel)是构成图像的基本单位,即图像可被分解成的最小的独立信息单元。因为图像是二维的&a…

推荐笔记本用户使用的硬盘。。。2.5”战胜台式机硬盘 日立7K320-250GB

2.5”战胜台式机硬盘 日立7K320-250GB 相关评测文章参考:http://www.beareyes.com.cn/2/lib/200808/07/20080807034_8.htm 转载于:https://www.cnblogs.com/bingdongli/archive/2008/10/05/1304169.html

设计模式C++实现(6)——适配器模式

软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书&#xff0…

设计模式C++实现(7)——装饰模式

装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。比如有一个手机,允许你为手机添加特性,比如增加挂件、屏幕贴膜等。一种灵活的设…

较为周全的Asp.net提交验证方案 (下)

接上篇。 下面要对这个生成的“提交验证”类进行功能扩展,通过.Net的“部分类”或“扩展方法”技术都可以轻松实现,这里采用的是“部分类”技术: 引用生成的ADO.NET Entity Framework数据模型的命名空间,且声明为部分类。 书写静态…

linux 14.04安装方法,Ubuntu 14.04 安装配置GNOME经典界面

Ubuntu 14.04上基本完美支持GNOME经典界面,安装配置步骤如下:1. 安装gnome-session-flashbacksudo apt-get install gnome-session-flashback这个包安装后,注销后,在登录界面就能选择GNOME Flashback (Compiz)这个桌面环境了。2. …

设计模式C++实现 —— 策略模式

策略模式是指定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。也就是说这些算法所完成的功能一样,对外的接口一样,只是各自实现上存在差异。用策略模式来封装算法&#…

【转】DIB位图(Bitmap)的读取和保存

转自:https://www.cnblogs.com/wangguchangqing/p/5417444.html 设备无关位图(Device Independent Bitmap)是可以保存在磁盘的位图文件,可以从磁盘读取到内存或者从内存保存到磁盘上。它的文件结构是标准化的,可以在W…

【转】DCMTK各模块说明!!!!!!!

转自:https://blog.csdn.net/Kelvin_Yan/article/details/50765693 有删改 原文来自wiki DCMTK:http://support.dcmtk.org/redmine/projects/dcmtk/wiki/modules 各模块说明 These are the modules of the public DCMTK toolkit (version 3.6.0): 关…

【转】DICOM医学图像处理:基于DCMTK工具包学习和分析worklist

转自:https://blog.csdn.net/zssureqh/article/details/38775315 背景: DICOM3.0协议中有介绍关于worklist的部分。简而言之,worklist可以看做是放射科设备从医院RIS系统中自动读取患者信息的一种“通信协议”,可以指存储在RIS系…

【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

看到在留言中很多朋友提到不太清楚DirectX与游戏引擎的区别的问题,在这里浅墨就专门把自己对游戏引擎的一些理解写成一篇文章,作为我们《Visual C游戏开发》专栏的游戏引擎导论,也希望能通过这篇文章,能让大家有所启发&#xff0c…

【转】DICOM:DICOM Print服务中PresentationContext协商之 MetaSOPClass与SOPClass对比分析!!!!!!!!

转自:https://zssure.blog.csdn.net/article/details/45119841 背景: 最近项目中遇到的实际问题较多,且大多是较隐蔽的、不易被发现的错误。究其根源来看,还是对DICOM3.0协议中的细节掌握不够仔细,因而导致在实际编码…

【转】用fo-dicom实现print scu的注意事项!!!!!!!!!

转自:https://blog.csdn.net/tvsofa2008/article/details/50245357 用fo-dicom实现print scu的注意事项 fo-dicom是一个开源的协议库,开发语言是c#。网上针对fo-dicom的分析也有不少,但是专门针对dicom print的文章还是太少了。 近几天需要…

设计模式C++实现 ——观察者模式

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。它还有两个别名,依赖(Dependents),发布-订阅(Publish-Subsrcibe)。可以举个博客订阅的例子&…

【转】DCMTK开源库的学习笔记1:将DCM文件保存成BMP文件或数据流(即数组)

转自:https://blog.csdn.net/zssureqh/article/details/8784980 DCMTK开源库介绍: DCMTK是目前最全面实现DICOM3.0标准的开源库,通过结合DCMTK开源库和CxImage图像开源库,能够很方便的开发属于自己的DCM文件编辑浏览软件。 DCMT…

【转】DCMTK 开源库的学习笔记2:直接操作dcm文件中像素数据的尝试

转自:https://blog.csdn.net/zssureqh/article/details/8785132 DCMTK官网给出了JPEG格式压缩的DCM文件解压缩的方法(http://support.dcmtk.org/docs/mod_dcmjpeg.html),代码摘录如下: DJDecoderRegistration::regist…