未发布 Xamarin for Visual Studio v4.6发布,重新设计属性页和Manifest编辑器 Xamarin for Visual Studio 让开发者可以在Windows上用 Visual Studio 开发原生 iOS, Android 和Windows应用程序。Xamarin for Visual Studio提供了流畅的iOS和Android的API查询,让开发者专注于应用本身。更棒的是,开发者完全可以利用一切他熟悉的开发工具进行开发,从而保证项目的高效性和持续性。 V4.6版本中包含的功能:
属性页和Manifest重新设计
在Xamarin 4.6中,我们重新设计了属性页和Manifest编辑器的重新设计,添加了一个新的编辑器:授权编辑器。
新的授权编辑器
新的编辑器现在是一个独立的编辑器。它的设计方式更加简单有效,双击你的entitlements.plist文件来启动。它的UI非常友好,用户可以轻松浏览和运用。
Bug修复
此版本包括以下问题修复:
iOS设备列表模拟器在更改iOS版本时不会更新。(4.6.0.289)
修复VS在创建主机发现时挂起Zeroconf的问题。(4.6.0.289)
SayGoodbye目标在创建iOS库时失败。(4.6.0.279)
MSBuild过程由于XMA监控而产生较高的CPU使用率。(4.6.0.279)
在某些情况下重新连接后,Mac Agent图标不会更新。(4.6.0.279)
在设置中无法手动选择Xcode路径。(4.6.0.279)
Android存档 - 向用户发出关于所需的密钥库备份的信息,并有助于将其复制到其他位置。(4.6.0.279)
无法在Visual Studio 2017中打开名为“资产”的目录。(4.6.0.279)
VS不会在新的iOS项目的.plist文件中设置MinimumOSVersion键。(4.6.0.279)
“链接器行为”下拉列表显示MtouchLink属性的“Don't Lin”默认值不正确。(4.6.0.279)
在Mac Server连接对话框上显示Xamarin.iOS兼容性错误。(4.6.0.279)
未选择数据源类时,不会禁用支持的系列和并发组。(4.6.0.279)
更改连接流程,以便在打开解决方案自动连接时不显示任何对话框。(4.6.0.279)
将UWP项目设置为启动项目时,设置正确的配置平台。(4.6.0.279)
tvOS绑定项目创建失败并出现多个错误。(4.6.0.279)
在某些情况下,Visual Studio挂起ZeroConf (4.6.0.279)
由于XMA上的进程监视器不正确,MSBuild进程会产生高CPU使用率。(4.6.0.240)
建立iOS库时,SayGoobye目标失败。(4.6.0.240)
本地静态参考(.a)源文件在构建后最终以0 Kb为单位。(4.6.0.240)
Android属性页面上的打字错误。(4.6.0.240)
F#Android项目无法构建。(4.6.0.240)
关于部署WatchOS应用程序的System.IO.FileNotFoundException异常。(4.6.0.240)
几个连接可靠性Mac代理修复。(4.6.0.240)
Android Library模板包含资源文件。(4.6.0.240)
Android项目模板不会生成mipmap图标。(4.6.0.240)
无法在调试模式下解除tvOS扩展应用[电视服务扩展]。设备下拉菜单中没有tvOS模拟器。(4.6.0.240)
Visual Studio崩溃,试图启动没有运行的Android应用程序。(4.6.0.240)
将默认模式下的watchOS设置为默认模拟器。(4.6.0.240)
已知的问题
创建会因错误取消:Project'project_name '需要在你的计算机上安装以下组件:...
构建Android应用程序可能需要安装其他组件。这几种情况下可能需要,例如使用新组件、NuGet软件包,或者是你在计算机上构建的第一个Xamarin.Forms解决方案。
Xamarin for Visual Studio检测到资源的缺失,并显示错误信息,要求下载并安装它们:
双击列表中的错误,开始下载并安装缺少的组件。
请记住,你需要在列表中看到Intellisense错误。
如果你尝试在解决方案中创建任何项目,而不安装缺少的组件,那么创建将被取消。
安装缺少组件的可选方法是从命令行中创建。
其他已知问题
如果你在使用此版本后降级为Xamarin 4.2或更低版本,则需要在Mac Server对话框中重新注册已知的Mac服务器。请使用“忘记Mac”选项,并再次配置服务器连接。
试用、下载、了解更多产品信息请点击"咨询在线客服"
未发布 MailBee.NET Objects退回邮件教程(一):SMTP部分 MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。
本文主要介绍了SMTP服务器退回邮件的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
所有退回的电子邮件都应该到达一个邮箱地址。这里将其命名为我们的退件通知栏 - bounce@domain.com。显然,你需要确保退回的邮件能有它们的方式到达退件通知栏。
让我们看看这些邮件是如何由SMTP服务器发送的。当一封邮件提交给SMTP服务器时,它将被标记返回路径。返回路径是服务器用于与邮件的原始发送方通信的路径,因此返回路径通常是发件人的电子邮件地址(“From”地址)。
返回路径记录在邮件中。“From”用于显示发件人地址。返回路径和字段“From”中的地址不必一样。因此,您可以发送一个使用字段“From”的电子邮件显示发件人(jdoe@domain.com),但返回路径将是bounce box地址(bounce@domain.com)。有了这个技巧,所有的反弹消息都将返回到一个特殊的邮箱。
那么如何使用MailBee Objects呢?smtp.Send(senderEmail,recipient)方法向指定的收件人电子邮件地址发送电子邮件。第一个参数是发件人的电子邮件地址。如果是空引用,则电子邮件地址取自“From”属性。第二个参数包含收件人电子邮件地址的分隔列表。当第二个参数为空时,收件人列表可以由To、Cc和Bcc列表组合。正如你所看到的,第一个参数是我们组织一个退件栏所需要的。如果将退件栏地址设置为第一个参数,那么所有退回邮件将被发送到特殊地址。
注意:某些SMTP服务器不允许从“From”标头中指定的地址发送电子邮件。
代码示例:
此示例使用SMTP协议发送电子邮件。为了确保所有收件人都收到该邮件,TestSend将被调用。带有传送错误的邮件将来自指定的电子邮件地址。
C#
// Create SMTP object
Smtp mailer = new Smtp();
// Set the message fields.
mailer.From.AsString = "jdoe@domain.com";
mailer.To.AsString = "bill@domain2.com";
mailer.Subject = "Hi";
mailer.BodyPlainText = "This is test message";
// Starts logging SMTP activities into a file.
mailer.Log.Enabled = true;
mailer.Log.Filename = @"C:\log.txt";
mailer.Log.Clear();
// Specify the server to use. If your server does not require authentication,
// just omit both last parameters.
mailer.SmtpServers.Add("mail.domain.com", "jdoe", "secret");
// Attempt to connect.
mailer.Connect();
// Display the host name of the server the connection was established with.
Console.WriteLine("Connected to " + mailer.SmtpServers[mailer.GetCurrentSmtpServerIndex()].Name);
// Make sure all the recipients are ok.
if (mailer.TestSend(SendFailureThreshold.AllRecipientsFailed) != TestSendResult.OK)
{
Console.WriteLine("No recipients can receive the message.");
}// Show refused recipients if any
else if (mailer.GetRefusedRecipients().Count > 0)
{
Console.WriteLine("The following recipients failed: " + mailer.GetRefusedRecipients().ToString());
}
else
{
Console.WriteLine("All recipients are ok. Will send the message now.");
// Send e-mail. If it cannot be delivered, bounce will
// arrive to bounce@domain3.com, not to joe@domain1.com
mailer.Send("bounce@domain.com", (string)null);
Console.WriteLine("Sent to: " + mailer.GetAcceptedRecipients().ToString());
}
// Disconnect from the server
mailer.Disconnect();VB.NET
' Create SMTP object
Dim mailer As New Smtp
' Set the message fields.
mailer.From.AsString = "jdoe@domain.com"
mailer.To.AsString = "bill@domain2.com"
mailer.Subject = "Hi"
mailer.BodyPlainText = "This is test message"
' Starts logging SMTP activities into a file.
mailer.Log.Enabled = True
mailer.Log.Filename = "C:\log.txt"
mailer.Log.Clear()
' Specify the server to use. If your server does not require authentication,
' just remove last 2 parameters.
mailer.SmtpServers.Add("mail.domain.com", "jdoe", "secret")
' Attempt to connect.
mailer.Connect()
' Display the host name of the server the connection was established with.
Console.WriteLine("Connected to " + mailer.SmtpServers(mailer.GetCurrentSmtpServerIndex()).Name)
' Make sure all the recipients are ok.
If mailer.TestSend(SendFailureThreshold.AllRecipientsFailed) <> TestSendResult.OK Then
Console.WriteLine("No recipients can receive the message.")
Else
' Show refused recipients if any
If mailer.GetRefusedRecipients().Count > 0 Then
Console.WriteLine("The following recipients failed: " & mailer.GetRefusedRecipients().ToString())
Else
Console.WriteLine("All recipients are ok. Will send the message now.")
' Send e-mail. If it cannot be delivered, bounce will
' arrive to bounce@domain3.com, not to joe@domain1.com
mailer.Send("bounce@domain.com", CType(Nothing, String))
Console.WriteLine("Sent to: " + mailer.GetAcceptedRecipients().ToString())
End If
End If
' Disconnect from the server
mailer.Disconnect()
未发布 扫描识别工具Dynamic Web TWAIN使用教程:建立一个“Hello World”扫描页面 Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。
本文教你Dynamic Web TWAIN中只需3个步骤在5分钟内创建一个Web扫描应用程序的方法!
步骤一:启动一个Web应用程序
1.1 将Dynamsoft的Resources文件夹复制到您的项目中
Resources文件夹通常在C:\Program Files (x86)\Dynamsoft\Dynamic Web TWAIN SDK {Version Number} {Trial}\
1.2 创建一个空的HTML页面
请将空的html页面与Resources文件夹放在一起,如下所示:
步骤二:将Dynamic Web TWAIN添加到HTML页面
2.1 包含两个Dynamsoft JS文件
2.2 添加一个Dynamic Web TWAIN容器
1 | <div id="dwtcontrolContainer"></div>
|
注意: “dwtcontrolContainer”是div的默认ID。如有必要,您可以在文件dynamsoft.webtwain.config.js中更改它。
步骤三:使用Dynamic Web TWAIN
3.1 添加一个扫描按钮和最小的脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <input type="button" value="Scan" onclick="AcquireImage();">
<script type="text/javascript" data-filtered="filtered">
var DWObject;
function Dynamsoft_OnReady(){
DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
}
function AcquireImage(){
if(DWObject) {
DWObject.IfDisableSourceAfterAcquire = true;
DWObject.SelectSource();
DWObject.OpenSource();
DWObject.AcquireImage();
}
}
</script>
|
3.2 查看完成的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <title data-filtered="filtered">Hello World</title>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.initiate.js" data-filtered="filtered"> </script>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.config.js" data-filtered="filtered"> </script>
<input type="button" value="Scan" onclick="AcquireImage();">
<div id="dwtcontrolContainer"> </div>
<script type="text/javascript" data-filtered="filtered">
var DWObject;
function Dynamsoft_OnReady(){
DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
}
function AcquireImage(){
if(DWObject) {
DWObject.IfDisableSourceAfterAcquire = true;
DWObject.SelectSource();
DWObject.OpenSource();
DWObject.AcquireImage();
}
}
</script>
|
3.3 查看正在运行的扫描页面
如果你打开项目中的Hello World页面,它应该是这样的:
现在,您可以点击“扫描”按钮选择一个设备,如下所示:
注意:
- 选择来源对话框中只列出了TWAIN兼容设备。如果连接的扫描仪没有显示在列表中,请按照这篇文章排除故障。
- 如果您手边没有扫描仪,则可以安装虚拟扫描仪 - 由TWAIN工作组开发的扫描仪模拟器 - 用于测试目的。
扫描完成后,图像将显示在内置的Dynamic Web TWAIN查看器中:
如果您安装了Dynamic Web TWAIN的30天试用版,您可以在C:\Program Files (x86)\Dynamsoft\Dynamic Web TWAIN SDK {Version Number} {Trial}\Samples\Getting Started\获取完整的Hello World应用程序。
本次教程到此结束,希望能对Dynamic Web TWAIN的用户带来帮助,接下来还会有更多的相关教程,敬请期待!
未发布 MySQL的查询优化方法及原理详解丨附下载 关于MySQL的查询优化方法大家应该都知道一些:不使用NULL字段、为字段选择合适的数据类型、合理创建索引、不能使用SELECT *等等,但是你真的理解了这些优化方法了吗?它们的工作原理是什么?在实际运用中性能可以得到提升吗?其实未必。如何合理运用这些优化方法的前提是理解其中原理,希望本文能给你一定的帮助。
MySQL逻辑架构
如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。
MySQL逻辑架构
MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。
MySQL大多数核心服务均在中间这一层,包括查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现:存储过程、触发器、视图等。
最下层为存储引擎,其负责MySQL中的数据存储和提取。和Linux下的文件系统类似,每种存储引擎都有其优势和劣势。中间的服务层通过API与存储引擎通信,这些API接口屏蔽了不同存储引擎间的差异。
点击查看完整文章>>>
未发布 【百厂约惠】Dynamsoft全线产品6.7折!倒计时最后1周!
Dynamsoft全线产品低至6.7折!全年仅此一次,最后1周倒计时开启!活动结束立即涨价!
截止时间:2017.12.31
应用于Web应用程序的TWAIN扫描识别工具 支持所有主流浏览器。 |
更快速、更安全的远程获取 和跨平台VSS插件 兼容所有的网络技术,平台和设备 | 为桌面应用程序设计的.NET控件 适用于C#和VB.NET 能让你从任何TWAIN设备中获取图像的托管代码SDK |
一款多功能的条码读取控件 只需要几行代码就可以将条码读取功能 嵌入到Web或桌面应用程序 | 快速、轻松地为您的web应用程序 启用图像和视频捕捉 |
一个用以替代VSS的独立版本控制软件 | 一款基于SQL Server的本地/网络版本控制软件 |

未发布 JMS消息平台FioranoMQ更新v10.3.0,改进共享HA功能 FioranoMQ是世界上第一个基于网格、点对点JMS消息平台,具有强大且独特的功能,包括动态路由、消息流的分布式调试、JMS客户端应用程序的动态部署、无限的可扩展性、直接援引标准的JCA组件以及无与伦比的JMX标准易管理功能。在封闭的基准测试中超过每秒50,000条的消息,FioranoMQ还是世界上最快的独立的标准消息服务器。
v10.3.0新增
改进FioranoMQ共享HA(高可用性)功能
共享HA功能已得到增强,使其对活动代理和共享数据库以及锁定文件之间的网络中断更敏感。通过检查锁定文件是通过NFS共享创建还是使用本地文件,增加了更多安全检测来检查锁定文件上代理的真实性。
新增的共享HA代理解决了以下问题:
当活动代理和共享数据库之间的网络连接断开时更改状态。
数据库和锁定文件运行状况检查:如果活动代理与共享数据库的断开连接,代理将自动进行故障切换。
HA状态线程不会在任何情况下退出。
切换到被动状态后,活动代理必须释放锁,让待机代理获取锁并变为活动状态。
共享HA部署必须满足以下条件:
CSP磁盘使用通知
当启用生产者故障快速功能时,“客户端持久性”(CSP)的磁盘使用率可能非常频繁,具体取决于将消息发送到队列或主题目标时设置的超时值。因此,引入了CSP磁盘使用警报机制。客户端应用程序通过在客户端进行日志记录并在特定生产应用程序的CSP的使用违反配置的阈值时发出提醒。
注意:此功能现在可在Java和C/C++ RTL中使用。
优化加载管理对象
在代理启动期间或通过JMX API调用时,通过XML文件加载管理对象已被优化,以处理更多数量的目标配置。优化确保使用某些常用目的地的客户端应用程序不会受到影响,从而避免长时间停顿。
MQTT安全和认证
支持创建与MQTT代理程序的安全连接。
CSharp RTL(JMS 2.0)的异步发送功能
新的发送方法已添加到MessageProducer中,允许消息异步发送。这些方法立即返回并在单独的线程中执行发送,而不阻塞调用线程。
JMX API
添加以下JMX API:
Connection MBean中的API来获取客户端版本信息和构建号。
主题会话MBean下的API'getPersistentQueueSize()'和'getPSQAvailableMessageCount()'。
'listAllSessionsInfo()',所有主题会话的列表及其PSQ度量。
'getClientID(TopicSessionToken)'获取与主题会话令牌相关联的客户机ID。
'get(set)LockFileValidationTimeout()',在共享HA中锁定文件验证超时。
资源管理器mbean下的'getResourceCount()'分别获取由资源名称和实例计数组成的地图作为关键值。
CSharp RTL
在CSharp RTL中添加了新的管理API,用于限制基于IP地址的FioranoMQ代理。
“未接来电”,当代理人关机时调用的方法将在代理程序启动时存储和执行。此功能现在可在C#RTL中使用。
改变
FioranoMQ 10.3.0代理和Java RTL需要Java 8或更高版本。
基于net beans的Studio工具将不再与FioranoMQ安装程序一起发送,与安装程序一起提供的基于eclipse的Studio将针对64位平台。
共享HA条件:
HA对(Primary-Secondary)通信和网关服务器通信必须共享相同的网络接口卡。
锁定文件和共享数据库必须共享相同的装载点。
HA中的代理不得与HAManager属性“Primary”共享相同的值。
最新的C/C++ RTL库现在使用VS 2015构建。
未发布 Essential Studio for UWP发布2017 v2,新增甘特图控件 【Essential Studio for UWP最新版点击下载>>>】
图表
区段颜色设置
图表中的每个段现已支持颜色贴图。

多个样条曲线类型
图表控件现在支持样条区域的多个样条类型。

图表
片段装饰
连接器中添加了一种新的装饰元素,以指示连接在另一个连接器或片段上的流动。

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

数据透视图表
快速图表类型
在透视图控件中实现了以下快速图表类型:快速列位图、快速条形图、快速行、快速位图、快速步进位图、快速分散位图和快速堆叠列位图。
修饰
添加数据透视图修饰以显示与图表细分元素相关的值。

注释
数据透视图注释显示有关绘图区域中特定目标点的图表或系列的元数据。

Pivot客户端
标签和值过滤器
Pivot客户端支持按标签和值进行过滤。

延迟更新
Pivot客户端可以仅在需要时更新,而不是在每次UI交互期间更新。
Pivot网格
Pivot行
Pivot网格可以定制为平面网格。

分组栏
Pivot网格提供了一个UI选项来拖动字段、过滤,并在运行时通过分组栏创建Pivot视图。

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

富文本框
支持打印
富文本框控件现在支持从桌面和移动应用程序中打印文档内容。

页面布局
富文本框控件支持在移动设备上逐页查看文档内容。

甘特图
甘特图控件用于可视化和编辑项目进度,并跟踪项目进度。它可以帮助你组织和安排项目。你还可以通过编辑、拖动和调整大小等操作来更新项目进度。

主要特征
树型网格
过滤
树状网格控件现在支持使用各种过滤器选项,用编程方的式过滤节点。
