点击获取工具>>
早在今年7月,官方技术团队宣布对DevExpress控件进行功能增强,使其支持最新的.NET 5 Preview。 但是尽管技术团队一直在努力确保WinForms控件与.NET 5兼容但在Visual Studio中对设计器的支持却是另一回事。 现在.NET 5已与Visual Studio 2019 v16.8一起正式发布,现在该讨论如何使用DevExpress WinForms v20.2的设计时工具了。
尽管WinForms平台尚未完全解决重要的设计时问题,但Microsoft在考虑.NET 5的开发人员方面取得了较好的进展,例如,您可以调用控件的智能标记菜单...
使用控件的设计器
并利用独立的设计器对话框来设置复杂的属性,例如技术团队最近全面修改的编辑器输入标记的Mask Settings对话框。
基本操作
为了开发一个新的WinForms应用程序,该应用程序以DevExpress控件为目标面向.NET 5,您应该执行以下操作:
使用VS Installer中选中的“.NET Core development tools”选项来安装Visual Studio 2019 version 16.9 Preview 1。 按照本帮助文章中的说明注册特殊的抢先体验NuGet feed:安装Visual Studio的NuGet Package Manager。通过单独的Feed分发.NET 5控件,Microsoft仍必须实施一些细节,这些细节对于完整设计时支持至关重要。注意:目前,NuGet feed是获取针对.NET 5优化的最新DevExpress WinForms控件的唯一方法。通过Download Manager中提供的经典.NET Core安装程序分发的DevExpress WinForms v20.2控件,也可以在.NET Core下运行.NET 5,但缺乏设计时支持。
在Visual Studio中,确保您的应用程序面向.NET 5.0。跳转到“Project | Manage NuGet Packages...”,选择您在步骤2中注册的Feed,然后安装具有所需本地化区域性的预发布软件包,每个软件包都包含所有可用的DevExpress WinForms控件。 安装选定的程序包后,您可以从Visual Studio工具箱中添加DevExpress控件。已知问题
尽管上面提到的设计时功能似乎表明.NET 5已准备就绪且可用(实际上可用于Visual Studio中的基本WinForms控件),但标准WinForms设计器界面仍然存在重要的局限性/问题,这些问题意味着设计器目前尚不完全支持我们复杂的WinForms控件。当然,Microsoft将在未来的Visual Studio构建中增强这些接口,随后将提供DevExpress WinForms设计时支持。 目前,我们尚无有关何时准备好进行此类更改的指导,因此我们无法为用户提供确切的发布时间表。一些尚未为.NET 5提供最佳的设计时体验示例:
接受自定义结构(例如DevExpress.Utils.Padding)作为值的属性可以显示在Visual Studio Properties面板中,但任何尝试编辑此类属性的操作都可能导致IDE崩溃。 Visual Studio Toolbox中显示的控件不支持图标。 自定义字形无法在设计时渲染,针对常规.NET Framework的WinForms控件利用此类字形来指示绑定的UI元素,显示调用Data Source Configuration Wizard的按钮等。 设计器不支持数据源和绑定,只能在代码中指定。 不支持某些交互功能,例如拖动控件元素。 托管WinForms Designer的进程容易挂起。 在性能方面还存在其他一些问题。DevExpress是最早发布商业WinForms UI控件的组件供应商,多年来为复杂的WinForms UI控件创建了一些非常复杂的设计器。 我们将资源集中在设计时体验上,出色的设计时经验可提高生产率并降低开发成本。
在WinForms的设计时经验并不取决于Visual Studio的标准设计器界面,因此要为.NET 5提供与在早期版本的.NET Framework中相同的设计时体验,将需要艰巨的尝试:
为单个控件元素(网格列,图块等)添加智能标签菜单。 创建自定义向导,例如模板库、数据源配置向导、Scaffolding向导等。 扩展的智能标签。 处理不允许您创建事件处理程序的设计器对话框。 找出解决缺少的Visual Studio查找面板属性的方法。 解决DevExpress编辑器的类型转换问题。 找出如何处理非操作助手组件。最后,还有一些功能和控件在当前版本中不可用:XPO, reporting和XtraDialogs,这些功能缺失的原因与主要的技术困难无关,将在以后的DevExpress版本中解决。