DOORS 9.5启动时执行带GUI功能的DXL脚本遇阻求助
DOORS 9.5启动时执行带GUI的DXL脚本问题解决方案
问题1:命令行-D参数执行脚本报重复声明错误
原因
命令行启动DOORS时,程序会优先加载内置插件与脚本文件,其中已包含parastyl.inc并声明了AParaStyle_。而交互窗口运行脚本时,DOORS初始化加载已完成,不会重复引入该文件,因此无报错。
解决方案
在test.dxl中添加条件编译判断,避免重复包含头文件:
// 检查AParaStyle_是否已声明,未声明才包含头文件 #ifdef AParaStyle_ #else #include <parastyl.inc> #endif // 将GUI逻辑封装为函数 void runGUIScript() { // 编写GUI相关代码,例如创建对话框 Dialog d = createDialog("启动GUI") // ... 其他GUI操作逻辑 } // 命令行调用时直接执行函数 runGUIScript()
修改命令行参数为:
doors.exe -D "runGUIScript()"
问题2:C#无法找到DOORSCOMLib
原因
DOORS的COM库不会自动关联到C#项目,需手动添加对应类型库,且默认命名空间并非DOORSCOMLib,而是IBM.Rational.Doors。
解决方案
添加COM引用
- 打开Visual Studio,右键C#项目 → 「添加」→「引用」
- 切换到「COM」标签页,找到并勾选「IBM Rational DOORS 9.5 Object Library」(版本与你的DOORS对应)
- 若找不到该选项,点击「浏览」,导航至DOORS安装目录的
bin文件夹(默认路径:C:\Program Files\IBM\Rational\DOORS\9.5\bin),选择doors.tlb文件添加引用
正确C#代码示例
using IBM.Rational.Doors; class DOORSStartupRunner { static void Main() { // 初始化DOORS实例 DOORS doorsApp = new DOORS(); // 设置DOORS界面可见 doorsApp.Visible = true; // 执行带GUI的DXL脚本 string dxlContent = @" #ifdef AParaStyle_ #else #include <parastyl.inc> #endif void showStartupGUI() { Dialog mainDialog = createDialog(""启动界面"") button(mainDialog, ""确认"", cancelDialog) show(mainDialog) } showStartupGUI() "; doorsApp.RunDxlScript(dxlContent); } }
- 额外注意事项
- 需以管理员权限运行Visual Studio,避免权限不足导致COM组件无法注册
- 若COM组件未注册,打开管理员命令提示符,导航至DOORS安装目录
bin文件夹,执行:regsvr32 doors.dll完成注册
内容的提问来源于stack exchange,提问作者cdallagnola
相关产品推荐
相关产品推荐

