关于VBC.EXE的问题:

lsqlxq 2002-07-09 05:30:45
我在用VBC编程VB.NET 时总有一些错误 请大家指教

如下列代码(书上例子)
Module module1
Private WithEvents ad As AppDomain
Public Sub main()
Dim x As Int16
Dim y As Int16
ad = AppDomain.CurrentDomain
End Sub
Public Sub ad_unhandleexception(ByVal sender As Object, ByVal
e As System.UnhandledExceptionEventArgs) Handles
ad.UnhandledException
MessageBox.Show(e.ExceptionObject.VbString)
End Sub
End Module

在DOS下输入 VBC MYPRO.VB 它提示"Int16","MessageBox" type is not defined
另外 AppDomain是什么?

...全文
268 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sumtec 2002-07-22
  • 打赏
  • 举报
回复
首先感谢您看Sumtec的贴子。

VBC.EXE 是VB.NET 的命令行编译程序。以Windows 2000为例,该程序应该存放在:
C:\WINNT\Microsoft.NET\Framework\v1.0.3705\VBC.EXE

由于在继承环境里面,系统会自动帮我们引入System、System.Data、System.Drawing、System.Windows.Forms、System.XML等命名空间,或者说等效的在我们代码开头增加了如下几行:
Imports System
Imports System.Data
Imports System.Drawing
Imports System.Windows.Forms
Imports System.XML

而在您的代码里面Int16、AppDomain属于System命名控件,MessageBox 属于 System.Windows.Forms。而命令行编译其实不会给我们自动添加上述代码的,因此就会出现找不到Int16的定以,或者说由于没有Imports System,所以Int16应该写成System.Int16。同例MessageBox应该写成System.Windows.Forms.MessageBox。
当然,这样太麻烦了,您可以如下修改您的代码:
Imports System, System.Windows.Forms
Module module1
Private WithEvents ad As AppDomain
Public Sub main()
Dim x As Int16
Dim y As Int16
ad = AppDomain.CurrentDomain
End Sub
Public Sub ad_unhandleexception(ByVal sender As Object, ByVal e As System.UnhandledExceptionEventArgs) Handles ad.UnhandledException
MessageBox.Show(e.ExceptionObject.VbString)
End Sub
End Module

但是这样该还是不行,因为系统集成环境里面可以看到有“引用”这一项,也就是说,在继承环境里面编译时,系统会根据“引用”项中的内容告诉编译部件需要导入哪些Dll。但是在命令行编译时,就必须通过命令行参数给出需要引用的DLL,其中mscorlib是不需要指出的,这个是自动添加的。也就是说,编译时命令行应该这么写:
vbc /r:system.windows.forms.dll Module1.vb

————————————————————————————————————————
Sumtec宇宙技术中心 VB技术支持
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利,并保持和微软所提供的条款一致。具体事项可参考微软公司的使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
(因为比较紧急,没有制作自己的网页,敬请见谅。谢谢使用!)
ketao_78 2002-07-22
  • 打赏
  • 举报
回复
我是低手,请问什么是vbc?
好像觉得是个什么编译文件
Muf 2002-07-21
  • 打赏
  • 举报
回复
MessageBox请改为MsgBox
Int16请改为Short或Integer,
VB控件“许可证信息没有找到”问题解决方案 到微软主页上下载如下文件:http://download.microsoft.com/download/vb60ent/sample30/1/w9xnt4/en-us/vb6cli.exe 或下载本文件 解压目录下点击运行VBC6.EXE 即可 对于VFP来说同样适用,前提是安装过VB才行 附: VB6Cli.exe 是一种实用工具,它用于修复随 Microsoft Visual Basic 6.0 一起发行的 ActiveX 控件中的设计阶段许可证问题。此工具不会修复第三方控件以及 Microsoft Visual Basic 6.0 通常情况下不予安装的控件,也不允许使用 Visual Basic 6.0 专业版中的远程数据对象 (RDO) 对象。 下面是 VB6Cli.exe 可以修复的 ActiveX 控件的列表: ActiveX 控件 文件名 版本号 版本类型 ----------------------------------------------------------- ADO Data Control 6.0 MSADODC.OCX 6.00.8171 L,P,E Chart Control 6.0 MSCHRT20.OCX 6.00.8177 P,E Comm Control 6.0 MSCOMM32.OCX 6.00.8169 P,E Common Dialog Control 6.0 COMDLG32.OCX 6.00.8169 L,P,E Data Bound List Controls 6.0 DBLIST32.OCX 6.00.8169 L,P,E DataGrid Control 6.0 MSDATGRD.OCX 6.00.8169 L,P,E DataList Controls 6.0 MSDATLST.OCX 6.00.8169 L,P,E DataRepeater Control 6.0 MSDATREP.OCX 6.00.8169 P,E FlexGrid Control 6.0 MSFLXGRD.OCX 6.00.8169 L,P,E Hierarchical FlexGrid Control 6.0 MSHFLXGD.OCX 6.00.3005 L,P,E Internet Transfer Control 6.0 MSINET.OCX 6.00.8169 P,E MAPI Controls 6.0 MSMAPI32.OCX 6.00.8169 P,E Masked Edit Control 6.0 MSMASK32.OCX 6.00.8169 P,E Multimedia Control 6.0 MCI32.OCX 6.00.8169 P,E PictureClip Control 6.0 PICCLP32.OCX 6.00.8169 P,E RemoteData Control 6.0 MSRDC20.OCX 6.00.8169 E Rich Textbox Control 6.0 RICHTX32.OCX 6.00.8169 L,P,E SysInfo Control 6.0 SYSINFO.OCX 6.00.8169 P,E Tabbed Dialog Control 6.0 TABCTL32.OCX 6.00.8169 L,P,E Windows Common Controls-3 6.0 COMCT332.OCX 6.00.8169 P,E Windows Common Controls 5.0 (SP2) COMCTL32.OCX 6.00.8022 L,P,E Windows Common Controls 6.0 MSCOMCTL.OCX 6.00.8177 L,P,E Windows Common Controls-2 5.0 (SP2) COMCT232.OCX 6.00.8022 L,P,E Windows Common Controls-2 6.0 MSCOMCT2.OCX 6.00.8177 L,P,E Winsock Control 6.0 MSWINSCK.OCX 6.00.8169 P,E L = 标准版

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧