文件编码 文件密级 最新发布日期 当前版本 DotNET 项目编译指南 郑重声明: XX 软件股份有限公司版权所有。本文檔中任何部分未经 XX 软件股份有限公 司书面授权,不得将材料泄露给第三方,不得以任何手段、任何形式进行复制与传播 变更履历 版 本 日期 变更位置 1.0 1.1 变更理由/变更内容 变更人 备注 新建 根据研发项目管理流程问题巡检检查 出的问题进行更新:增加变更履历 一、名词解释 编译管理软件:公司内部开发的、用于编译管理系统。可以对不同权限的用户 提供不同项目的编译服务。 Helper 工具:公司内部开发的编译辅助工具。可修改每个程序集的版本信息 等。 二、编译分类 .net 编译主要有两种编译选项: Debug:用于调试。保存了状态信息,方便调试。开发人员一般使用此设置。 Release:用于生成最终的发布代码。给测试和实施人员发布程序时使用此设 置。 三、编译选项 编译选择需重点关注如下几项,其它选项使用默认设置即可。 应用程序项(图 1) 图 1 编译选项--应用程序 程序集名称(N):生成的 EXE 或 DLL 文件名称。 默认命名空间(L):程序级的命名空间,其它应用调用时使用。 输出类型(U): Windows 应用程序、控制台应用程序、类库。 程序集信息(I):包含了标题、说明、公司、产品、版权、商标、程序集版本、 文件版本、GUID 等信息(如图 2)。 图2 程 序集合信息 图 标 (C):应用 程序图标。 生 成 (图 3): 条件编译 符号(Y): 如果程序中需 要条件编译则 再次设置。如 下编译指令 #if NET20 private List<Driver> m_inUsePool; private Queue<Driver> m_idlePool; #else private ArrayList m_inUsePool; private Queue m_idlePool; #endif 如果在编译符号编辑框输入 NET20,则实际编译时使用如下定义 private List<Driver> m_inUsePool; private Queue<Driver> m_idlePool; 否则使用另一种定义。 将警告视为错误:无表示处理警告;特定警告表示对指定的警告视为错误,不能 通过编译;所有则表示编译时不允许有警告,否则编译不通过。 输出路径(O):程序集生成的路径,可以是相对路径(默认 bin\Debug\)也 可以是绝对路径。 XML 文档文件(X):选中该复选框生成时将同时生成程序的 XML 说明文档, 该文档可以通过其它工具生成 html 格式的技术文档。 图 3 编译选项--生成 生成事件:使用默认设置 调试:使用默认设置 资源:使用默认设置 设置:使用默认设置 应用路径:使用默认设置 签名: 为程序集签名( A):选中该复选框后,可以选择强名称密钥文件(如图 4)。 如果强名称密钥文件不存在时可以新建(如图 5)。 图 4 编译选项--签名 图 5 编译选 项--签名- -创建强名称 密钥 代码分 析:使用默认 设置 OCX 使用: 注册 OCX:在开始/运行窗口输入“regsvr32 + OCX 路径”注册 OCX 控件。如 regsvr32 E:\DEV\CI_GOV_YKT\04 源 代 码 \05 表 格 打 印 组 件 \ JQPrintXControl.ocx 将 OCX 添加到.net 开发环境中: 启动 Microsoft Visual Studio2005 开发环境,从菜单栏选择工具 /选择工具箱项 (如图 6),在选择工具箱项窗口切换标签页到 COM 组件,在 COM 组件列表找到 已注册的 OCX 控件并选中,点击确定即可(如图 7)。如果列表中不存在可通过“浏 览”按钮从文件中选择。 图 6 选择工具箱项 图 7 添加 COM 组件 四、手动编译 添加引用 在编译前应确保该项目说引用的程序集引用都已添加。添加引用的方式为,展开 项目找到引用节点,右键单击引用并选择“添加引用”菜单(如图 8)。打开添加引用 窗口(如图 9),选择要引用的文件包括 .net 自带的程序集、COM 组件、项目和自 定义程序集等。如果选择了项目,则编译该项目前系统会先编译其所依赖的其它项目。 图 8 添加引用 图 9 添加 引用窗 口 生 成 生 成当个 项目: 选择要 编译的项目,单击右键选择“生成”或“重新生成”菜单 图 10 生成单个项目 生成整个解决方案: 在开发界面菜单中选择生成/生成解决方案菜单即可。 图 10 生成解 决方案 注 意事项 如 果 OCX 重 新 注 册 , 则 需要先对清理再生成,或者选择重新编译菜单。 五、自动编译 原理 自动编译就是将编译过程做成批处理文件,通过执行批处理文件便可完成更个编 译过程。编译过程需要解决如下几个问题。 1、 版本自动生成(生成规则见附录 A):每个程序集( EXE 或 DLL)文 件都可以有自己的版本,版本信息存放在每个项目中的 AssemblyInfo.cs 文件中, 因此编译时只需要修改 AssemblyInfo.cs 文件中相应的信息即生成所需的版本。我 们是通过公司内部的 helper 小程序实现。 2、 OCX 控件自动注册:可使用 regsvr32 实现。参数“-s”表示注册 OCX 控件,参数“-u –s”表示取消注册。 3、 编译:利用.net 自带的 devenv 工具可以实现用命令的方式编译。 4、 错误处理:当发生编译错误时应将错误信息写入日志文件。 步骤 1、设置环境变量 PATH=C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\ IDE;C:\Program StarTeam Files (x86)\WinRAR;C:\Program Cross-Platform Client Files (x86)\Borland\ 2008;D:\Projects\ci_gov_ykt1.0\build; %PATH%; 2、设置目标文件夹路径 set DestDir=D:\Projects\ci_gov_ykt_client1.0\out\ 3、获取源文件到文件编译目录(如果文件编译目录中已存在源文件则应先删 除) stcmd co -p " 用 户 名 : 密 码@10.2.9.250:49201/CI_GOV_YKT/CI_GOV_YKT/04 源代码/02 客户端/" -o -is -fp "D:\Projects\ci_gov_ykt_client1.0\source\" 4、获取 OCX 文件 stcmd co -p "sun:zhangxuewen@10.2.9.250:49201/CI_GOV_YKT/CI_GOV_YKT/04 源 代 码/05 表格打印组件/" -o -is -fp "D:\Projects\ci_gov_ykt_client1.0\source\ocx" 5、注册 OCX 控件 regsvr32 -u -s D:\Projects\ci_gov_ykt_client1.0\source\ocx\JQGrid.ocx regsvr32 -s D:\Projects\ci_gov_ykt_client1.0\source\ocx\JQGrid.ocx regsvr32-u-s D:\Projects\ci_gov_ykt_client1.0\source\ocx\JQPrintXControl.ocx regsvr32-s D:\Projects\ci_gov_ykt_client1.0\source\ocx\JQPrintXControl.ocx regsvr32-u-s D:\Projects\ci_gov_ykt_client1.0\source\ocx\JQImportXControl.ocx regsvr32-s D:\Projects\ci_gov_ykt_client1.0\source\ocx\JQImportXControl.ocx 6、设置年、月、日、时、分变量,这些变量的值有外部程序 helper 提供 helper get -y if not errorlevel 0 goto direrror set Year=%errorlevel% 7、设置生成目标文件夹名称。(文件夹名称格式:yyyy-mm-dd-hh.mm) set DestDir=%DestDir%%year%-%month%-%day%-%hour%.%minute %\ 8、创建 Release 路径 set ReleaseDir=%DestDir%release\ 9、创建日志路径 set LogDir=%DestDir%log\ 10、修改程序集版本号(如果一个项目有多个程序集是需分别改写)。改写版本 号的功能有外部程序 helper 提供 if exist D:\Projects\ci_gov_ykt_client1.0\source\Jiuqi\YKT\ mkdir D:\Projects\ci_gov_ykt_client1.0\source\Jiuqi\YKT\ helper write.netver D:\Projects\ci_gov_ykt_client1.0\source\Jiuqi\YKT\AssemblyInfo.cs 11、编译 devenv D:\Projects\ci_gov_ykt_client1.0\source\JIuqi\YKT\JQYKT.sln /rebuild "Release" >%LogDir%build.log 12、错误处理 if not exist D:\Projects\ci_gov_ykt_client1.0\source\Jiuqi\YKT\bin\Release\ JQYKT.exe goto builderror copy D:\Projects\ci_gov_ykt_client1.0\source\Jiuqi\YKT\bin\Release\*.* %ReleaseDir% goto over :direrror echo 创建目标文件夹失败 :builderror echo 编译失败,应该与研发负责人联系,解决编译错误的问题 :over 使用方法 编译过程 1、 中的①。 测试人员使用编译管理软件向编译服务器
13-DotNET项目编译指南
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
本文于
2022-07-22上传分享