配置Visual Studio 2008以编辑旧版JScript ASP文件

配置Visual Studio 2008以编辑旧版JScript ASP文件

问题描述:

我正在开发一个项目,该项目通过COM interop将.NET与一些旧版ASP代码结合在一起。传统的ASP是用JScript编写的 - 文件看起来像这个helloworld.asp例子。配置Visual Studio 2008以编辑旧版JScript ASP文件

<%@Language="JScript"%> 
<html> 
<head> 
    <title>Jscript ASP Page</title> 
</head> 
<body> 
    <h1>JScript ASP</h1> 
    <p>This is JScript ASP at <%=new Date()%></p> 
    <% 
    var helloWorld = Server.CreateObject("Interop.HelloWorld") 
    helloWorld.Name = "Dylan" 
    %> 
    <%=helloWorld.SayHello() %> 
    </body> 
</html> 

我真的想用VS2008与项目的其余部分一起编辑遗留的ASP代码,但智能感知表现非常奇怪。一分钟它会被给我正确的JScript关键字和方法:

JS Intellisense in VS2008 - working http://www.dylanbeattie.net/vs_js_working.jpg

...所以我会键入一条线,然后按Enter键,开始输入下一行,完全一样的按键会给我似乎是VBScript的智能感知,而不是:

ASP intellisense in VS2008 - broken http://www.dylanbeattie.net/vs_js_wrong.jpg

有什么办法,我可以告诉VS是.asp文件总是Javascript代码,并从未在所有使用VB代码?当你按下回车键时,IDE将“var”变成“vArray”,这证明有点令人沮丧...

帮我,Stackoverflow。你是我唯一的希望。

正如你所看到的,经典的ASP intellisense在VS2008中被打破了。微软实际上完全减少了对VS2008 RTM中经典ASP语法着色和智能感知的支持,然后由于客户的反对而在SP1中将其恢复。请查看Microsoft Connect网站上的this bug report以获取有关如何恢复的更多信息。

无论如何,让我详细说明它是如何被破坏的。你看到的其实不是VB intellisense--相反,你看到的方法和它存在于以下任何对象:

  • server-side Response object有时其他服务器端如会话或请求对象,如果在任何代码之前有这些对象的javascript“with”语句。这没有任何意义 - 这是VS中的一个错误。
  • the client-side window object(!!!!)。这是没有意义的,因为这是服务器端脚本。这是VS中的一个错误。
  • javascript关键字和像String这样的全局对象。这是预期(但如果你定义使用RUNAT =服务器脚本,它的工作原理更reliably--如果我定义的脚本<%%>我经常没有得到适当的关键词智能提示。

注意,无这些都是VB Intellisense--你看到的只是PascalCased方法的经典ASP的服务器端脚本对象模型中内置的Request,Response等对象的有效内置方法

有趣的是,我发现intellisense在runat = server脚本块中的工作要比<%\ >块更自然。至少在runat = server的情况下,我输入“Request”,“Response”等来获得智能感知。而且jscript关键词intellisense在这些模块中似乎也能更好地工作。

intellisense中还有其他的怪癖,比如当你有一个脚本块时,当你键入一个字符时,该字符在你回来的智能感知选择列表中被忽略。 (这在runat =服务器块中也可以更好地工作)

换句话说,这是非常糟糕的。我没有内部消息说明它为什么如此糟糕,除了这是一个在VS2008中弃用的功能,它被带回到一个服务包中,并且可能比VS的其他部分测试的少得多 - 所以它不会被打破。特别是当你认为它支持一个功能,传统的ASP,微软可能想要消失。这并不意味着Redmontonians正在积极试图破坏这一点,但是在一个资源有限的团队中,让经典的ASP工作得很好可能不会像ASP.NET MVC那样引起同样的关注。

也就是说,恕我直言,即使这种有限的支持比在VS2008 RTM中有什么更好,当传统的ASP文件看起来像记事本,而没有任何intellisense或语法着色。

如果您对这种不幸的事态感到恼火,我会建议在https://connect.microsoft.com/VisualStudio处提交一份错误报告。就像一个错误报告让微软在VS2008 SP1中恢复传统的ASP intellisense,它可能让他们修复SP2和/或VS2010。您可能还想查看最新的VS2010测试版以查看问题是否得到解决或更糟。

对不起,如果这不是你希望的答案。 :-(