准备工作
.NET Framework >= 4.6 Visual Studio >= 2015 DevExpress >= 19.1.3
安装DevExpress控件
客户端项目基于DevExpress控件进行开发,所以在搭建之前先安装DevExpress控件,具体安装步骤如下:
- 打开公司共享文件夹:
\\192.168.1.199\lyy\西安交通信息业务软件开发框架\DevExpress-19.1.3 - 打开安装文件:
DevExpressNETComponents-19.1.3.exe进行安装,选择组件时,只需要选择第一项即可,其他组件并不需要,按照提示完成安装即可。
- 目前下面的
zh-Hans.rar文件是组件汉化文件,客户端发布时需要把此文件解压后的文件夹复制到发布目录,以支持组件的汉化。 - 破解DevExpress组件。解压文件
DevExpressPatch 8.0 for Visual Studio 2019.rar,以管理员方式运行DevExpress.Patch.8.exe,点击按钮Apply patch,等待执行完成即可破解。
NuGet私服
项目中引用了公司自定义类库,此类库目前发布在公司内部的NuGet私服,所以在创建项目之前在Visual Studio中对NuGet私服进行配置,具体配置步骤如下:
- 打开Visual Studio中的菜单
工具→选项→NuGet包管理器→程序包源。 - 右上角绿色的加号,在下面输入名称:
192.168.1.226.nuget,源地址:http://192.168.1.226:9998/nuget,点击确定完成配置。

开发前的注意事项
由于WinForm的界面缩放机制的原因,需要在开发之前注意一下几点:
- 由于WinForm的界面缩放机制跟操作系统的设置有密切的关系,所以在进行WinForm开发时,Visual Studio必须是
100%缩放模式,否则在Visual Studio中设计的WinForm界面在其他非缩放的操作系统中会变形。为了解决这个问题有两种方案。- 关闭操作系统的缩放行为,使用100%显示模式。由于操作系统的缩放关闭,所以Visual Studio也将以100%模式显示。
- 不关闭操作系统的缩放行为,导入
\\192.168.1.199\lyy\西安交通信息业务软件开发框架\Visual Studio DPI目录下面的文件DevEnv Not DPI Aware.reg,作用是使Visual Studio不缩放,以100%的模式显示。缺点是整个Visual Studio会变模糊。另一个文件DevEnv DPI Aware.reg标识恢复Visual Studio缩放。导入时请注意:必须要把此注册表文件复制到本机再导入,否则可能导入失败
- 新建Form后,在拖拽界面之前先修改父类,使其继承类
FrmBase,或者继承了此类的自定义类,修改完成后再对界面进行拖拽,如果不按照此步骤操作的话,设计时界面可能与运行时界面不一致。 - 新建UserControl后,在拖拽界面之前先修改父类,使其继承类
BaseXtraUserControl。 - 项目中不用使用系统原生控件。
新建项目
1. 新建项目向导
打开Visual Studio,点击新建项目向导,选择Windows 窗体应用,点击下一步。

输入项目名称、位置,设置框架版本为.NET Framework 4.6,点击创建完成。

完成后,删除系统自动创建的Form1.cs。
2. 修改app.config文件
<?xml version="1.0" encoding="utf-8"?><configuration><runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><probing privatePath="devexpress;lib"/></assemblyBinding></runtime><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/></startup></configuration>
3. 新建app.json文件
添加新的配置文件app.json,右键设置app.json文件的属性复制到输出目录为如果较新则复制

修改app.json文件内容:
{"WinForm": {//应用程序标识"Id": "1117664844619845632",//服务器地址"ApiUrl": "http://192.168.1.227:6070",//服务器连接超时,单位毫秒"ApiTimeout": 10000,//系统标题"Title": "西交投业务管理系统",//开发商名称"CompanyName": "西安交通信息投资营运有限公司",//版权信息"Copyright": "西安交通信息 版权所有",//软件版本"Version": "1.0",//软件网站或者公司网站"WebSite": "http://www.xci96716.com",//售后服务电话"Telephone": "029-88233366",//调试模式"IsDebugMode": true,//是否只允许运行一个实例"IsSingleton": true,//是否启用系统更新"EnableUpdate": false,//是否同步日期"EnableSyncDate": false,//是否允许自动锁定主界面"AllowAutoLockMain": false,//在指定分钟之内无任何操作,主界面将自动锁定,AllowAutoLockMain参数启用时生效"AutoLockInterval": 2,//在任务栏通知区域显示图标"ShowNotification": false,//关闭主窗口时程序行为:true退出;false隐藏"CloseMainIsExit": true,//主页面是否显示标题"MainPageShowCaption": false,//菜单是否使用大图标"NavMenuLargeIcons": true,//主页面工具栏图标是否使用大图标"MainPageToolbarLargeIcons": false,//分页控件每页显示数量"PageSize": 20,//分页控件每页显示数量快捷选择,多个之间用半角英文逗号隔开"PageSizeList": "10,20,50,100,200",//是否允许用户配置表格"AllowGridSetting": true,//表格配置存储模式:true本地模式;false服务器模式"GridSettingLocalMode": false}}
4. 添加XCI.Sys引用
从私服中添加自定义类库,点击项目下的引用→ 管理NuGet程序包,打开后右上角程序包源选择192.168.1.226.nuget,左上角点击浏览显示出私服上目前发布的程序包。
Oracle.ManagedDataAccess程序包是C#连接Oracle数据库的驱动,该类库本身并不需要引用到项目中,只需要在程序发布时拷贝到exe所在目录即可。XCI.Sys程序包是框架核心类库,必须引用,点击此程序包,点击右侧的安装按钮。
图片6.1
图片6.2

图片6.3

5. 新建目录结构
在项目中新建以下文件夹,用来将不同的代码放到不同的位置,具体含义如下:
- Controls 存放系统全局自定义控件
- UserControls 存放系统业务相关的用户控件
- Core 存放系统基础代码
- Forms 存放界面表单类,此目录下面可以按照业务模块建子文件夹
- Filter 存放业务过滤模型
- Model 存放业务模型类
- Service 存放业务服务类
6. 新建Application.cs
新建应用程序启动类:应用名称Application.cs,内容如下:
/// <summary>/// 应用程序类/// </summary>public class WindowsFormsAppApplication : XCI.Sys.BaseApplication{}
7. 修改Program.cs启动类
static class Program{/// <summary>/// 应用程序的主入口点。/// </summary>[STAThread]static void Main(string[] args){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);XCI.Sys.Helper.AppHelper.Run<WindowsFormsAppApplication>(args);}}
其中WindowsFormsAppApplication指的是用户自定义的应用程序对象。此对象实现IApp接口,针对IApp对象的具体介绍,请参考应用程序类章节。
8. 自定义exe文件图标
- 找一个有效的
.ico图片,复制到项目根目录,修改图标名称为app.ico - 在项目根目录上点击右键→属性→应用程序→资源→图标和清单,在图标处选择
app.ico,设置完成后重新生成项目。

9. 防止DevExpress提示试用期
在Properties目录下新建文件licenses.licx,设置此文件的生成操作为无,防止DevExpress组件有试用期的提示。

10. 内置工具
在解决方案目录上点右键 → 在文件资源管理器中打开文件夹,进入目录packages\XCI.Sys.1.0.2\config,目录下面有以下文件,根据自身需求把相关文件复制到exe输出目录即可使用,复制时把exe对应的config文件也一起复制。
- configure.exe 对
app.json配置文件进行可视化配置 - designer.exe 报表设计器
- startup.exe 系统默认的启动器
11. DevExpress组件汉化
从DevExpress组件安装包目录中拷贝文件zh-Hans.rar,解压到exe输出目录,完成DevExpress组件汉化。
12. 移除输出目录DevExpress相关dll
默认情况下,系统编译完成后,项目输出目录下面会包含大量的DevExpress组件相关的DLL,由于开发机器都已经安装了DevExpress组件,所以输出目录不需要这些文件。解决方法,项目目录点右键→打开属性页→生成事件→生成后事件命令行 输入下面的命令行:
del DevExpress.*.dll DevExpress.*.xml Newtonsoft.Json.xmlrd /s/q de es ja ru
重新生成项目。
恭喜,此时应用程序已配置完成,后续根据业务情况,把相应的应用程序添加到对应的位置,编译后启动应用程序开始调试吧!
**
客户端调试工具
采用Fiddler作为客户端调试工具,下载地址:https://www.telerik.com/fiddler,属于免费软件。
