【发布时间】:2017-02-21 04:59:06
【问题描述】:
我需要调试构成 HTA 应用程序的几个 VBS 文件。
我在网上搜索过,但找不到确切的 QA。这是关于How to run multiple batch files with single External Tool in Visual Studio 和How to debug IE9 HTA? 的没有找到灵丹妙药。
这是我卡住的地方,我调试 main.vbs,它引用了文件 utils.vbs 中的class cutils。当我跨过这条线来实例化 cutils 时,我得到一个错误:
Microsoft VBScript 运行时错误:变量未定义:'cutil'
所以我尝试了一些External Tool Arguments 之类的逗号分隔文件:
//nologo //X "$(ItemPath), $(ItemDir)utils.vbs"
但这不起作用。可以指定多个文件吗?
除了将所有类复制到一个文件之外,我如何在 Visual Studio 中调试 VBS 文件?我尝试将 VS 调试器附加到 mshta.exe,但它不会进入调试模式,即使使用标准的 debugger 关键字也不会停止代码控制:
function clickButton()
debugger
所以我正在寻找一种使用 cscript.exe 调试多个 VBA 文件的方法,或者甚至更好地附加到 mshta 进程以逐步执行带有调试器的代码。
更新 1:
按照这个答案 https://stackoverflow.com/a/316491/495455 我尝试创建一个包含所有引用的 wsf 文件并使用 cscript.exe 进行调试:
<job id="IncludeExample">
<script language="VBScript" src="main.vbs"/>
<script language="VBScript" src="utils.vbs"/>
</job>
这从 main.vbs 开始,但仍然无法在 utils.vbs 中找到 cutils 类:
更新 2:
所以我将 .hta 文件扩展名重命名为 .html,这样我就可以打开 IE 的开发工具。由于某种原因,在 HTA 应用程序中按 F12 不允许您使用开发工具。
当我这样做时,调试很痛苦,调试器可以似乎找到 utils.vbs 但是,当我在 main.vbs 中调用激活函数时,它说找不到。或者更具体地说, main 没有定义。
【问题讨论】:
-
在更新 1 中,您是否使用
wsf文件运行调试器? IE。cscript.exe //nologo "test.wsf". -
在更新 1 中,我打开了 vbsDebugging.wsf 文件并单击工具菜单 > cscript 进行调试,然后 VS 根据屏幕截图打开“VBScript - 脚本块”
-
您是否尝试过仅在调试器外部的命令提示符下运行
cscript.exe //nologo "test.wsf"是否有效或仍然出错? -
我会确保您按使用顺序定义“包含”,例如,在您在
utils.vbs之前定义main.vbs但您尝试调用cutil类在main.vbs。重新排序utils.vbs,使其在脚本列表中的main.vbs之前定义,然后重试。我不认为调试器是问题所在,我敢打赌脚本在调试器外部调用时仍然会失败。 -
@Lankymart 您能否将您的评论作为答案定义“包含”,以便它们在 WSF 文件中使用 - 这成功了,谢谢。
标签: c# visual-studio debugging vbscript hta