未找到

未发布 .NET Core 2将Visual Basic带到了Linux和macOS平台
by Harriet666 keys 分享 1504087156993
Microsoft已经愈加接近将Visual Basic划为.NET Core平台上的一等公民。作为.NET Core 2发行版的一部分,VB开发者现在可以编写针对.NET Standard 2.0的控制台应用程序和类库,并且可以兼容多个平台。这就意味着运行在Windows上的可执行文件或者类库也能够运行在macOS和Linux上。

一旦安装了.NET Core 2 SDK,你就可以开始创建VB项目了。由于这是.NET Core平台,Visual Studio有助于编码,但是它并不是必需的。.NET Core 2.0中有四个VB模板:
  • 控制台应用程序:Hello World程序样例 
  • 类库 
  • 单元测试工程 
  • xUnit单元测试工程 

在命令提示行中,你可以执行:
dotnet –version
来确认你使用的是.NET Core 2.0版本或者是更高的版本。然后你需要创建一个新目录来保存你的工程,并且运行dotnet new来根据其中一个模板创建一个新工程。之后,执行dotnet run来运行这个工程:
mkdir vbcore
cd vbcore
dotnet new console -lang VB
dotnet run
但是这并不意味着Microsoft的工作都已经全部完成,因为目前还有剩余任务要做,例如,让.NET Core平台上的VB开发者拥有使用ASP .NET Core的能力。Microsofs 的Immo Landwerth说,针对于此的模版尚在进行中,这个版本尚不可用。尽管如此,VB开发者现在可以针对macOS和Linux编写跨平台代码了,在此之前,这是不可能完成的。
未发布 扫描识别控件Dynamic Web TWAIN 13.0发布,新增统一的Dynamsoft服务
by Harriet666 keys 分享 1498113059409
3fbc3fd1c68a47e882c9f1375c4badcbojpg我们很高兴地宣布Dynamic Web TWAIN(DWT)新版本v13.0已经发布,即跨浏览器、跨平台的Web扫描SDK。这个升级主要实现了一个新的设计 - 新的Dynamsoft服务加上不同的成像模块(扫描、摄像头捕获、PDF、条形码阅读器和OCR)。
使用新版本,你可以获得更轻松的安装和升级体验。
  1. 新的Dynamsoft服务只会处理最基本和最核心的功能,并相对稳定。安装后用户将很少需要升级。
  2. 所有模块的安装和未来的升级将变得“安静”。此外,你现在可以独立使用和升级所有模块。
  3. 用户可以在一台机器上运行多个版本的DWT。

Dynamic Web TWAIN 13.0更新内容

改进

  • [仅限HTML5]使用统一的Dynamsoft服务替换Dynamic Web TWAIN服务。更多信息 >
  • [仅限HTML5]使用Dynamsoft Barcode Reader SDK和Dynamsoft Camera SDK替换条形码附件和网络摄像头附件。更多信息 >
  • [仅限HTML5]授权提示现在支持多种语言。
  • [仅限HTML5]现在可以异步调用LoadImageFromBase64Binary方法。

修改

  • [仅限HTML5]将授权提示的默认行为更改为“始终隐藏”。

修复

  • 修复了当图像滚动时裁剪图像不会使用新坐标的错误。
  • 修复了当加载多页TIFF/PDF时会看到一个不必要的错误'TypeMismatchError'的问题。

注意

  • 此次版本升级中ActiveX版本将保持不变。

点击下载Dynamic Web TWAIN 13.0版本,体验新功能>>>
未发布 多比图形控件教程:基于Flex/Javascript的网页绘图控件
by Harriet666 keys 分享 1491037615492

1.概述

多比矢量图控件是一个在Web上绘图的组件,适用于需要在网页中/编辑流程图、图表、网络图和普通矢量图形的Web应用程序组件。多比控件提供充分的编程接口,可以非常容易的和ASP.NET、JavaWeb技术集成。

最新多比图形控件(Web)v3.5点击下载>>>

1.1 技术特征

多比矢量图控件采用最新的AJAX技术,他以Flex和Javascript为基础,可以很方便的在网页中展现绚丽的矢量图形。相比传统的技术,多比矢量图控件有以下的突出优点。

  • l 只需要安装Flash播放器,不需要其他第三方插件, 不依赖任何插件供应商。很多国有企业、政府部门、军工企业,由于安全性等原因,环境往往不能安装浏览器插件。
  • l 标准的Web技术,非常容易和Java或.NET集成。
  • l 可扩展,可修改,可配置。和ActiveX控件不同,多比控件很容易修改和扩展,只需要很少的脚本代码,就可以实现和默认行为不一样的功能。

1.2 应用领域

多比图形控件是一款基于Web的矢量图形控件, 类似于网页上的Visio控件,是目前国内外最佳的基于web的工作流设计器、工作流流程监视器解决方案。 可广泛应用于包括:电力、军工、煤炭、化工、科研、能源等各种监控软件、web工作流设计器、asp.net工作流设计器、电力、化工、煤炭、工控组态软件、仿真、地理信息系统、工作流、复杂报表 工业SCADA系统、ERP流程设计系统、图形管理、图形拓扑分析、GIS地理信息系统系统、工程制图等领域。目前已经为全球20多个国家的数千家客户采用。

1.3运行一下例子

首先, 你需要到多比的官方网站上下载最新版的多比控件。你可以直接到这个链接下载 http://www.duobee.com/Page-d-key-visio_download

下载完成后,你需要将现有的包解压,并且发到IIS或者TOMCAT下的某个目录,然后通过http://localhost/download/testing这种方式打开。 请不要直接双击打开(file:///),这种方式将导致flash文件加载不正确。

未发布 微信里的 Office 365 —— Office 365 微助理打造移动办公新体验
by Harriet666 keys 分享 1514971150710
在2017微软技术暨生态大会(Microsoft Tech Summit)上, 微软宣布Office 365微助理正式商用。Office 365微助理将微软Office 365的生产力服务扩展到微信平台,能够在人们熟悉的微信操作界面中,为企业及用户带来 Office 365 的安全性、管理性和更多深层功能。这项由微软中国自主研发的全新功能能够为习惯利用微信进行日常沟通和工作的中国用户,提供一个功能强大、智能化,且简单易用的移动办公和通信解决方案。此外,Office 365 微助理还允许第三方合作伙伴开发出更多基于 Office 365 平台的商业解决方案。
 
Office 365商用客户将可以通过产品官方页面部署中文版的Office 365微助理服务。
 
Office 365 微助理
 
Office 365为微信带来全新生产力工具
作为中国影响最广的移动社交软件,微信拥有超过 9 亿活跃用户,且大部分用户每天都在频繁使用微信。人们不但将微信用于私人交流,同时也经常将其用于日常的工作沟通和相互协作。但把私人微信用于工作,常常会让人手忙脚乱,因为用户要经常在微信、电子邮件、语音通话及更多其它应用之间来回切换;与此同时,企业 IT 部门则要为如何确保这些基于聊天的交流和数据的安全、可追踪、可管理而大伤脑筋。
 
Office 365 微助理将企业级的安全性、管理性,以及统一的通信及协作工具与微信的操作体验融会贯通。通过将 Office 365 服务植入微信,用户和企业既能继续使用他们最熟悉的通信工具,同时又能得到由 Office 365 提供的更高水平的生产力、团队协作能力,以及安全性的保障。
 
实现高效沟通及信息管理
Office 365 微助理的智能通知(intelligent notifications)功能可以帮助用户更高效地管理信息,并在微信中更轻松地找到联系人和文档。用户不但能及时收到邮件和会议提醒,还能在组织内快速查找联系人、文件和邮件信息。Office 365 微助理能确保信息发布的安全性,员工也可以通过公司内网查看企业内部的政策规定或及时获取 IT 部门的支持。Office 365 微助理还能提供对最近打开的文档或常用联系人的快速访问,智能识别图片信息,并能生成可以编辑的 PowerPoint 文档。
通过“个人助理”接收工作提醒
 

 

 
通过“同事圈”了解同事动态
促进高效的团队协作
Office 365 微助理不但能帮助用户快速与同事取得联系,还提供了安全的文档共享服务、基于人工智能的智能会议调度及任务协调功能,可以显著提升团队协作的效率。用户可以通过多种方式与他人沟通,包括使用企业通讯簿快速查找特定联系人,通过身份同步(ID sync)自动将 Office 365 联系人同步到企业通讯簿中。此外,用户还能够借助 OneDrive 安全地共享文件。所有讨论交流都可以自动存档,便于以后参考使用。
通过“团队协作”查看最近联系人
确保企业级的信息安全和管理性
利用 Office 365 微助理,企业可以对数据访问权限进行更好的管理,对数据进行更周全的保护,在确保合规的同时,提供简单易用的管理性。微信将得到企业级的数据保护,静态数据和传输中的动态数据都能全程得到增强的数据保护。收到文档的用户需要具有相应的权限才能对文档进行访问和共享,对于保密文档,用户浏览文件时就会自动添加水印,同时禁止文档转发。
Office 365 微助理能确保员工进入与其身份、职责相符的聊天群组或对话中,从而有效防止信息泄露。同时,每名员工的Office 365 账户信息与其企业微信身份始终保持同步,因此 IT 管理员能够轻松地对用户身份进行统一管理。Office 365 平台与微信的集成,不但能为企业提供企业级的数据保护,同时还能确保移动设备上的数据安全。

 

 
IT 管理员能够轻松地对用户身份进行统一管理
 
即刻体验 Office 365 微助理
从今天开始,Office 365 商用客户将可以通过产品官方页面即刻部署和使用 Office 365 微助理服务。
 
(本文转自微软官网
apple
未发布 矢量图像处理控件CAD EditorX 发布v12,支持导出到G-code
by Harriet666 keys 分享 1497342935340
CADEditorX是一个ActiveX控件,在众多的环境中,如 .NET、HTML / JavaScript、VC++、Delphi、Java等等,它能查看、编辑、转换、测量和打印DWG和其他CAD文件以及3D模型和光栅图像。CADEditorX提供易用的API和大量的例子方便开发者快速集成。
 
【CADEditorX 12点击下载>>>】
 
CADEditorX 12更新内容
新版本的CADEditorX 12,可在不同的开发环境中使用DWG、DXF、HPGL、STEP和其他2D和3D文件格式。
 
CADEditorX 12的主要特点是支持最新的DWG版本 - AutoCAD®DWG 2018。在你创建基于CADEditorX的应用程序时,它们将能够打开最新的图形。
 
此外,现在CADEditorX支持导出到G-code。如果你为CNC机床开发程序,CADEditorX可以让你的应用程序从DWG和DXF图形中生成G代码。
6d1bc8e20c614de280cb456e063bcbe9ojpg

CADEditorX 12中包含的改进内容列表:
  • 导入AutoCAD®DWG 2018
  • 导出到G-code
你可以下载CADEditorX最新版来测试新功能>>>
未发布 微软C# 8.0中的四个特性
by Harriet666 keys 分享 1504687137082

可空的引用类型(Nullable Reference Types)

可空的引用类型可概括地表述为,引用类型将不再默认可空。因此,开发人员必须使用定义可空值类型的同样语法“Type?”,显式地标记一个引用类型为可空。

如果将一个空值赋值给一个非可空的引用类型,那么将会给出一个编译器警告。与之相类似,从可空类型中读取也会给出编译器警告,除非显式地提前检查了被质疑的变量是否为空值。因此从理论上讲,开发人员需要做的唯一更改就是在代码的适当位置标上问号。

该特性新加了一个语法。该语法针对开发人员明知一个可空变量x并非实际为空值却无法证明给编译器的情况。在上述情况下,开发人员现在可以定义x!.Method(),消除编译器对于潜在空值引用异常的警告。
 

异步流(Async Streams),即foreach async

异步流是IEumerable的异步等价类。C#团队自2015以来就一直在努力实现异步流。在经历了很多争议后,其语法被定为:
foreach await (string s in asyncStream)
开发人员将使用如下的函数签名定义一个异步迭代器:
async IAsyncEnumerable MethodName()
就像使用一个正常的IEnumerable方法一样,开发人员可以使用“yield return”以懒方式(Lazy)构建对象流。

相比于源自响应式扩展(Reactive Extensions)的IObservable,使用这一方法的优点在于让消费者控制流速,这被称为“Pull模式”。与之相对,IObservable是一种“Push模式”,这意味着生产者可以使用高于消费者所能处理的流速让流涌向消费者。
 

缺省接口实现(Default Interface Implementations)

缺省接口实现在本质上是一种有限形式的多重继承。它允许抽象接口像抽象类一样,对方法进行完全的定义,只是抽象接口依然不能定义构造函数和字段。

需注意,开发人员可以通过使用ConditionalWeakTable在接口上模拟字段。

默认接口实现的主要好处是,开发人员可以在不破坏向后兼容的条件下,将一个新方法添加到一个已有的接口中。但是这并非是有保证的,因为默认接口只是在可以设计出适合的默认方法时才能工作。
 

扩展(Extension)

开发人员可以编写扩展方法,但是不能扩展属性,这是长期以来对C#一直存在的一个问题。事实上,如果使用当前的模式,甚至是不能定义一个扩展属性或事件的。此外,在很多开发人员看来,在静态类中放置扩展方法是“很诡异的”。

新的设计中新给出了一种称为“扩展”(Extension)的顶层语言构件。例如,如果开发人员想要为自定义的Customer类创建一个扩展方法和属性,可编写如下代码:
extension CustomerExt extends Customer {
    //定义方法和属性的代码。
}
就接口而言,是不能在扩展中定义实例字段的,但是可以使用ConditionalWeakTable实现模拟。定义静态字段也是允许的。

除了对属性、事件和操作符重载的扩展,C#团队甚至考虑允许扩展构造函数。扩展构造函数非常适用于工厂模式(Factory)和对象池场景。

扩展接口(Extension Interfaces)C#团队还考虑了扩展接口,即在已有类中添加新接口的能力。但是扩展接口将不会成为C# 8中的特性,因为它需要更改底层的运行时。
未发布 Essential Studio for Windows Forms发布2017 v2,支持office 2016和主题定制
by Harriet666 keys 分享 1495444185640
Essential Studio for Windows Forms是一个帮您创建高性能的Windows应用程序的Windows Forms界面控件,其包含了高性能的Windows应用程序开发中所需的所有控件,如Grids、Charts、Gauges、Menus、Calendars、Editors等等。 到目前为止,我们开发Windows Forms 控件包已达十几年,所以该控件包是功能最齐全的控件集。除此之外,Essential Studio for WinForms还包含了一些特有控件,使您可以为应用程序添加Excel、Word和PDF格式文件的浏览和创建功能。
 
Essential Studio for Windows Forms更新2017 v2版本,支持office 2016和主题定制等功能。
 
【Essential Studio for Windows Forms 2017 v2点击下载>>>】

DocIO

增强Word转换PDF功能

DocIO现在支持Word到PDF转换期间的方程式字段。
add6848d47994bdab305f68a6cde13bbojpg

 

量规

支持office 2016和主题定制

Office 2016主题外观和主题定制支持数字、线性和径向量规形式。
3b283c57a47542b1bf64121743f5c834ojpg

 

网格分组控制

增强过滤功能

  • 添加以编程方式使用ExpressionMatch比较运算符来过滤记录的方式。
  • 支持在GridDynamicFilter中进行延迟筛选。

Coded-UI测试

支持在Coded-UI中的子表上执行断言和播放。
417af45fd8be46eb90f0f0bd70ddeaceojpg

 

高级消息框

从右到左视图

高级消息框控件已实现从右到左的布局。
88fa564d9cb54f50b9f24b32359d0b3bojpg

支持自定义按钮

支持加载高级消息框中的自定义按钮。
57ee06fe97bb4ff493fe91d0cfd4122eojpg

详细信息查看

详细信息视图可以引用额外的信息,并根据要求显示/隐藏高级消息框。
4e79468e4656450ab7c28d47f8b338ceojpg

 

PDF

增强PDF安全功能

现在支持PDF 2.0安全功能(AES Revision 6)。
970e39cabe194aa881edb5e11d4b7d7fojpg

 

演示

注释功能

可以在PowerPoint演示文稿中创建和修改注释。
0d9767d1ba8a4efda4624846fab1e34cojpg

 

XlsIO

Excel到PDF转换中的图标设置

Essential XlsIO支持使用“仅显示图标”和“反向图标顺序”选项进行PDF转换的自定义图标设置。
5620f60f20bc44a2b7899560ef59bd67ojpg

增强图表转换图像功能

将图表转换为PDF文件或图像时,图表元素(如标题和显示单元)现在支持富文本和具有不同标记的图表系列。
ac2a2f4da19b463cbe9a8fb3698cebefojpg

数据透视表自定义排序

数据透视表列可以通过字符串数组或设置自定义位置进行排序。
9c38b674039b4742a88d57a63376eda3ojpg

表格过滤器

可以根据文本、数值和日期过滤Excel表格行。
b9811efdbe9e416e88be65d120e6fcf1ojpg
未发布 【FAQ合集】TWAIN扫描识别工具Dynamic Web TWAIN的编程代码问题
by Harriet666 keys 分享 1510217364852
Dynamic Web TWAIN中文介绍免费下载资源教程示例DEMO
Dynamsoft

1.如何获取黑白图像?

DWObject.OpenSource();
DWObject.IfShowUI = false;
DWObject.IfDisableSourceAfterAcquire = true;
DWObject.PixelType = EnumDWT_PixelType.TWPT_BW; //Black - White 
image : EnumDWT_PixelType.TWPT_BW, GRAY image: 
EnumDWT_PixelType.TWPT_GRAY, RGB 
image: EnumDWT_PixelType.TWPT_RGB
DWObject.AcquireImage();

2.如何在没有用户界面的情况下运行?

function BeginScan(){
    DWObject.OpenSource();
    DWObject.IfShowUI = false; //set without user interface
    DWObject.IfDisableSourceAfterAcquire = true;

    DWObject.AcquireImage();
}

function DWObject_OnPostTransfer(){
    DWObject.SaveAsBMP("C:\\temp.bmp",0);
}

3.如何只扫描纸张的某一部分?

DWObject.SelectSource();
DWObject.OpenSource();
DWObject.IfShowUI = false;
//Set Image Layout
DWObject.Unit = EnumDWT_UnitType.TWUN_INCHES;
DWObject.SetImageLayout(0, 0, 5, 5);
DWObject.AcquireImage(); 

4.如何在不显示设备选择对话框的情况下选择设备?

DWObject.OpenSourceManager();

for(i = 0, i<=DWObject.SourceCount - 1,i++){
    if (DWObject.GetSourceNameItems(i) == "Specified device name")
        DWObject.SelectSourceByIndex (i);
}

//if can't find the specified source, it'll select default source
DWObject.AcquireImage(); 

5.如何在不使用UI获取图像时禁用进度指示器对话框?

DWObject.IfShowUI = false;
DWObject.IfDisableSourceAfterAcquire = true;
DWObject.OpenSource();
DWObject.IfShowIndicator = false;
DWObject.AcquireImage();

6.如何分别设置水平和垂直分辨率?

DWObject.SelectSource();
DWObject.OpenSource();

//Set XRESOLUTION current value.
DWObject.Capability = 0x1118; //ICAP_XRESOLUTION
DWObject.CapType = 5; //TWON_ONEVALUE
DWObject.CapValue = 300;
if (DWObject.CapSet == false){
    alert( "Failed to set the x-resolution. " + DWObject.ErrorString);
}

//Set YRESOLUTION current value.
DWObject.Capability = 0x1119; //ICAP_YRESOLUTION
DWObject.CapType = 5; //TWON_ONEVALUE
DWObject.CapValue = 200;
if (DWObject.CapSet == false){
   alert( "Failed to set the y-resolution." + DWObject.ErrorString);
}

DWObject.AcquireImage();

7.如何上传到Web服务器?

DWObject = document.getElementById("dwtcontrolContainer");
//dwtcontrolContainer is the id of the Dynamic Web TWAIN on the page (An object or an embed).
function btnScan_onclick() 
{
DWObject.SelectSource();
DWObject.OpenSource();
DWObject.AcquireImage();
}
function btnUpload_onclick() 
{
var strActionPage;
var strHostIP;
var CurrentPathName = unescape(location.pathname); // get current PathName in 
plain ASCII 
var CurrentPath = CurrentPathName.substring(0, CurrentPathName.lastIndexOf("/") 
+ 1); 
strActionPage = CurrentPath + "SaveToFile.aspx"; //the ActionPage's file path
strHostIP = "localhost"; //The host's IP or name 
DWObject.HTTPPort = 80; 
DWObject.HTTPUploadThroughPost(strHostIP,0,strActionPage,"imageData.tif");
if (DWObject.ErrorCode != 0)
alert(DWObject.ErrorString);
else //succeed
alert("Image Uploaded successfully");
}

8.如何使用ADF?希望将每个文档保存在一个单独的文件中。

var iDocumentCounter =0;

function BeginScan(){
    DWObject.OpenSource();

    DWObject.IfShowUI = false;
    DWObject.IfDisableSourceAfterAcquire = true;
    if(DWObject.Duplex != TWDX_NONE)
        DWObject.IfDuplexEnabled = true; //enable duplex

DWObject.IfFeederEnabled = true;
    if (DWObject.IfFeederEnabled == true){
         DWObject.XferCount = -1;

         if(DWObject.IfFeederLoaded == True)
             DWObject.AcquireImage();
    }
}

function DWObject_OnPosttransfer(){
iDocumentCounter = iDocumentCounter + 1;

if(DWObject.SaveAsBMP("C:\\Image\\" + iDocumentCounter + ".bmp", 0) == false)
    alert( DWObject.ErrorString);
}

9.我如何使用SSL?

您可以使用IfSSL属性。下面的JavaScript示例将显示如何使用IfSSL属性。
function btnUpload_onclick() 
{
   DWObject.HTTPPort = 80; 
   DWObject.IfSSL = false; // if 80 is the port number of 
non-secure port

   /* 
   DWObject.HTTPPort = 443; 
   DWObject.IfSSL = true; // if 443 is the port number of secure 
port
   */

   DWObject.HTTPUploadThroughPost("127.0.0.1", 0, 
"/SaveToFile.php", "imageData.jpg");

   if (DWObject.ErrorCode != 0)
      alert(DWObject.ErrorString);
   else //succeed
     alert("Successful");
}

10.如何将新扫描的图像添加到现有的多页TIFF文件中?

function Scan_Click(){
   DWObject.AcquireImage();
}
function DWObject_OnPostTransfer(){
   DWObject.CloseSource();
   DWObject.IfTiffMultiPage = true;
   DWObject.SaveAsTIFF("SaveAsTIFF.tif", 0);
   if (DWObject.ErrorCode != 0)
      alert (DWObject.ErrorString);
   else //succeed
      alert ("Successful");
}

11.如何在保存之前旋转图像?

您可以使用RotateLeft方法和RotateRight方法。

12.如果缓冲区中有多个图像,如何查看指定的图像?

您可以通过更新API CurrentImageIndexInBuffer的值来查看指定的图像或浏览缓冲区中的所有图像。
function NextImage_Click(){
   if (DWObject.HowManyImagesInBuffer == 0) 
   
      alert ("There is no image in buffer");

   DWObject.CurrentImageIndexInBuffer += 1;
}

13.如何进行双面扫描?
function DuplexScan_Click(){
   DWObject.SelectSource();
   DWObject.OpenSource();
   DWObject.IfShowUI = false;
   DWObject.IfDuplexEnabled = true; //enable duplex
   DWObject.AcquireImage();
} 

14.如何以反转颜色扫描图像?

您可以使用PixelFlavor属性。

2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 .NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别
by Harriet666 keys 分享 1507866121963
前段时日微软(Microsoft)正式发布了.NET Core 2.0,在很多开发社区中反响不错。但还是有一些开发者发出了疑问,.NET Core、Xamarin、.NET Standard和.NET Framework之间有哪些不同呢?本文就为大家简单描述一下这四者之间的区别。
 
.NET Core

.NET Core是免费、跨平台的,是托管框架的开源实现。它支持4种类型的应用程序:控制台、ASP.NET Core、云和通用Windows平台(UWP)。Windows Forms和Windows Presentation Foundation(WPF)并不包含在.NET Core中。

从技术上讲,.NET Core仅支持控制台应用程序。ASP.NET Core和UWP是以.NET Core为基础构建的应用程序模型。

与.NET Framework不同,.NET Core没有作为Windows组件考虑。因此,更新是以NutGet包的形式,而不是通过Windows Update。由于.NET Core运行时安装成了App-Local,而应用程序升级是通过包管理器完成的,所以应用程序可以关联特定的.NET Core版本以及单独升级。
 
.NET Standard

托管框架的每一种实现都有一套自己的基类库。基类库(BCL)包含诸如异常处理、字符串、XML、I/O、网络和集合这样的类。

.NET Standard是一项实现BCL的规范。由于.NET实现需要遵循这项规范,所以应用程序开发人员就不用担心每一种托管框架实现的BCL不同。

框架类库(FCL),如WPF、WCF、ASP.NET,不包含在BCL中,因此,也就不包含在.NET Standard中。

.NET Standard与.NET实现之间的关系就和HTML规范与浏览器之间的关系一样。后者是前者的实现。

因此,.NET Framework、Xamarin和.NET Core,每一种托管框架都实现了.NET Standard中的BCL。随着计算机工业不断推出新的硬件和操作系统,将来还会出现新的.NET托管框架。该标准让应用程序开发人员知道,他们可以依赖于一套始终如一的API。

每个.NET版本都对应一个.NET Standard版本。

API一致,将应用程序移植到不同的托管实现以及提供工具都会更简单。

.NET Standard被定义为一个单独的NuGet包,因为所有的.NET实现都必须支持它。工具变得简单了,因为对于特定的版本,它们有一套相同的API。你还可以针对多个.NET实现构建一个库项目。

你还可以构建特定平台API的.NET Standard封装器。
 
.NET Standard vs 可移植类库

可移植类库做的不是同一件事吗?

可移植类使用多个平台均都支持的通用API。因此,支持的平台越多,可用的API就越少,而且,对于特定的平台组合,很难知道到底支持哪些API。对于一个新平台,已有的PCL必须重新编译。PCL还需要微软针对每个平台创建一个新的框架实现分支。

由于.NET Standard确定了API,而不是一个实现,所以不需要重新编译应用程序。任何新发布的.NET实现都实现了必须的库。应用程序不需要重新编译就可以运行在新的硬件平台或操作系统上。从理论上讲,在调用API时可能会捕获到NotSupportedException异常,但那种情况应该很少见。
 
小结
  • .NET Standard是一项API规范,每一个特定的版本,都定义了必须实现的基类库。
  • .NET Core是一个托管框架,针对构建控制台、云、ASP.NET Core和UWP应用程序进行了优化。每一种托管实现(如Xamarin、.NET Core或.NET Framework)都必须遵循.NET Standard实现BCL。
  • .NET Framework用于构建桌面应用程序和运行在互联网信息服务器(IIS)上的ASP.NET应用程序。它是第一个托管框架。
  • Xamarin则是一个用于构建iOS、Android、macOS和桌面应用程序的框架。
【慧都十四周年庆预热开启!全场满额送七级豪礼,AppleMac笔记本电脑、iwatch、iPad等您来拿!】

活动时间:10月1日-10月31日

未发布 矢量图形引擎库VectorDraw Developer Framework更新至v7.7010.1.0丨附下载
by Harriet666 keys 分享 1489458047513
【最新版VectorDraw Developer Framework v7.7010.1.0点击下载>>>】
矢量图形引擎库VectorDraw Developer Framework更新至v7.7010.1.0。新版本针对提出的需求和bug做了大量的调整和优化。


 近期热门 - 点击最多
  1. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  2. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  3. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  4. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  5. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法
  6. Springboot+Gradle+Mysql+Jpa最简单实例教程
  7. SpringBoot+Spring6入门指南: 使用命令行快速搭建restful web api模板
  8. 如何通过 winax 的 ActiveXObject 或 Excel.Application 往 excel 中插入一张图片
  9. node.js用activex/com+自动化读写excel时查询接口、参数的调试方法
  10. TypeScript定义数字范围类型即仅包含【小时:分钟】的时间类型,每天指定时间点执行任务

  全端社区 - 最新回复
  1. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  2. Windows与Mac通过git ssh和rsync实现文件共享互传
  3. Windows与Mac通过git ssh和scp实现文件共享互传
  4. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  5. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件
  6. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  7. ReactNative获取Android/iOS的MAC/IP地址: react-native-device-info模块的安装与使用
  8. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  9. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法
  10. Springboot+Gradle+Mysql+Jpa最简单实例教程

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA