【问题标题】:Classic ASP Intellisense ADODB Visual Studio 2010经典 ASP 智能感知 ADODB Visual Studio 2010
【发布时间】:2016-02-25 01:16:26
【问题描述】:

我正在使用 Visual Studio 编辑我的经典 asp 网站,并且智能感知和颜色编码在大多数情况下都有效,即如果我键入“响应”。然后它会弹出一个选项列表。

但是,当我使用声明的对象类型时,例如; 设置 DB = Server.CreateObject("ADODB.Connection")

当我键入“DB”时,我不再获得智能感知选项。

我曾经在使用 MicroSoft Interdev(过去的爆款)编辑 ASP 文件时获得智能感知,并且将其取回会很方便。

因此,我的问题是,有没有人知道 VS2010(或更高版本)的一种方法,我可以在其中为服务器创建的对象重新启用智能感知?

非常感谢

马特

【问题讨论】:

  • 是所有 COM 对象还是 ADODB 的问题?例如,试试set msg = Server.CreateObject("CDO.Message"),看看你在输入“msg.”时是否得到了智能感知。我有一台双启动机器。在 Windows 7 上,我没有得到 ADODB 对象的智能感知,但是当我在 Win 8 中运行它时,我得到了。我怀疑答案在于注册了哪个 dll。大约三年前我问过一个关于这个的问题,它没有得到答复,最终被删除。我还在 msdn 上找到了这个帖子,但没有给出令人满意的答案。
  • MSDN 上的这个线程可能很有趣,尽管没有令人满意的答案。 social.msdn.microsoft.com/Forums/en-US/…

标签: visual-studio-2010 asp-classic intellisense adodb


【解决方案1】:

我使用的是 VS2015,它适用于我,但文件必须具有 ASP 扩展名。而且它只适用于 Created 对象的直接作用域。

例如:

  set command = CreateCommandWithParameters(Me.conn, parameterizedQuery, values)
   Command.... 'no intellisense here because Server.CreateObject was called in a Function elsewhere

但我在下面得到智能感知就好了。

Private Function CreateCommand(connection, query, commandType)
    if (commandType <> adCmdText AND commandType <> adCmdTable AND commandType <> adCmdStoredProc AND commandType <> adCmdFile AND commandType <> adCmdTableDirect) then Err.Raise 16001, "Invalid Command Type", "Must be, adCmdText, adCmdTable, adCmdStoredProc, adCmdFile, adCmdTableDirect"
    Set CreateCommand = Server.CreateObject("ADODB.Command")
    Set CreateCommand.ActiveConnection = connection
    CreateCommand.ActiveConnection = connection     
    CreateCommand.NamedParameters = true   
    CreateCommand.CommandText = query
    CreateCommand.CommandType = commandType
    CreateCommand.CommandTimeout = 120 '2 minutes....        
    CreateCommand.Prepared = true     
End Function

也可能是因为我在 Global.asa 中导入了 TypeLib

<!--METADATA TYPE="TypeLib" file="C:\Program Files (x86)\Common Files\System\ado\msado15.dll" -->

最后一点,虽然它在某些情况下确实适用于 Server.CreateObject ......但它不适用于用户定义的子类、类和函数......

我基本上已经习惯了没有智能感知。 VBScript 不区分大小写,所以并没有给我带来太多困扰。

【讨论】:

  • 好的,想出了另一件事。 Intellisense 也适用于用户定义的函数、类等,但前提是它们是在正在编辑的页面中定义的。 Visual Studio 编辑器不够聪明,无法在服务器端提供 Intellisense 包括.....
  • 非常感谢您的回复。我尝试在 global.asa 中使用 TypeLib(检查了 dll 的路径),但我仍然无法让智能感知工作。是的,我也注意到 VS 没有大脑来计算服务器端包含并从包含文件中获取函数/子名称。我将围绕 global.asa 选项进行更多挖掘,因为这似乎是最有可能取得成功的途径。
  • @RyanMann - 我不知道你是否还在使用 SO,如果你是的话,你能说出你正在使用哪个 Windows 版本。我的理论是这个错误是特定于 ADODB 对象和特定于 Windows 7。这可能会缩小到 Win7 SP1
  • Windows 10,我的意思是,回到 XP 和 32 位操作系统并不是一个真正的选择。不过,我真的不再使用 Classic ASP。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多