Pergunta

Eu estou trabalhando em um projeto que combina .NET com algum código ASP legado através de interoperabilidade. O legado ASP é escrito em JScript -. Arquivos semelhante a este exemplo helloworld.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>

Eu realmente gostaria de usar VS2008 para editar o código ASP legado junto com o resto do projeto, mas o Intellisense está se comportando muito estranhamente. Um minuto ele estará dando-me as palavras-chave e métodos corretos JScript:

JS Intellisense no VS2008 - trabalhando http://www.dylanbeattie.net/vs_js_working.jpg

... então eu vou escrever uma linha, pressione Enter, começar a digitar a linha seguinte, e exatamente as mesmas combinações de teclas vai me dar o que parece ser VBScript intellisense em vez disso:

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

Existe alguma maneira eu posso dizer VS que arquivos.asp são códigos SEMPRE Javascript, e nunca usar o código VB em tudo? Ter o IDE turn "var" em "VARRAY" quando você pressionar Enter está provando ser um pouco frustrante ...

Ajuda-me, Stackoverflow. Você é minha única esperança.

Foi útil?

Solução

ASP clássico intellisense é, como você observou, quebrado em VS2008. Microsoft suporte realmente completamente corte para Classic ASP coloração de sintaxe e IntelliSense no VS2008 RTM, então restaurou em SP1 devido ao clamor dos clientes. Dê uma olhada na este relatório de bug no Microsoft Site connect para obter mais informações sobre como ele foi restaurado.

De qualquer forma, deixe-me detalhes exatamente como ele está quebrado. O que você está vendo não é realmente VB intellisense-- em vez disso, você está vendo métodos e objetos que estão presentes em qualquer um dos seguintes:

  • objeto de resposta do lado do servidor às vezes outro servidor -side objetos como Session ou Request, como se houvesse um javascript "com" declaração para estes objetos antes de qualquer do seu código. isso não faz sense-- é um bug no VS.
  • do lado do cliente janela objeto (!!!!). Isso não faz sentido uma vez que este é um script do lado do servidor. é um bug no VS.
  • palavras-chave javascript e objetos globais como string. Isto é esperado (embora se você definir seu script usando runat = servidor, ele funciona mais reliably-- se eu definir o script com <%%> Eu muitas vezes não recebem adequada intellisense palavra-chave.

Note que nenhum destes são VB Intellisense-- que você está vendo são simplesmente métodos de validade built-in métodos do pedido, Response, etc. objetos embutido no modelo de objeto de script do lado do servidor do ASP clássico PascalCased.

Curiosamente, eu encontrei intellisense para trabalho muito mais naturalmente em runat = blocos de script servidor de <%%> blocos. Pelo menos com runat = servidor, recebo intellisense para digitação "Request.", "Resposta"., Etc, e também intellisense chave jscript parece funcionar melhor naqueles blocos também.

Existem outras peculiaridades em intellisense, como quando você tem um <%%> bloco de script, quando você digitar um caractere, o caractere é ignorado na lista de opções do IntelliSense você voltar. (Isso também funciona melhor em runat = blocos de servidor)

Em outras palavras, tudo isso é muito quebrado. Eu não tenho nenhuma informação privilegiada sobre por que ele é tão preso, que não seja este é um recurso que foi reprovado no VS2008, trouxe de volta em um service pack, e provavelmente tem muito menos testar do que outras partes VS-- então não é surpreendente que está quebrado. Especialmente quando você considerar que ele está apoiando um recurso, clássico ASP, que a Microsoft provavelmente quer ir embora. Isso não significa que os Redmontonians estão activamente a tentar sabotar isso, mas em uma equipe com recursos limitados, tornando clássico ASP grande trabalho provavelmente não vai atrair o mesmo nível de atenção como, por exemplo, ASP.NET MVC.

Dito isso, IMHO mesmo este suporte limitado é melhor do que o que estava lá no VS2008 RTM, quando ASP clássico arquivos parecia bloco de notas, econômicos com nenhum intellisense ou coloração de sintaxe em tudo.

Se você está irritado com este triste estado de coisas, eu sugiro a apresentação de um relatório de bug em https: //connect.microsoft.com/VisualStudio . Assim como um relatório de bug tenho Microsoft para restaurar intellisense ASP clássico no VS2008 SP1, que pode levá-los a corrigi-lo para SP2 e / ou VS2010. Você também pode querer verificar as últimas VS2010 beta para ver se o problema seja corrigido ou pior.

Desculpe se isso não é a resposta que você estava esperando. : - (

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top