Domanda

Sto lavorando a un progetto che combina .NET con codice ASP legacy tramite interoperabilità COM.L'ASP legacy è scritto in JScript: i file assomigliano a questo esempio 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>

Mi piacerebbe davvero utilizzare VS2008 per modificare il codice ASP legacy insieme al resto del progetto, ma Intellisense si comporta in modo estremamente strano.Un minuto mi darà le parole chiave e i metodi JScript corretti:

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

...quindi digiterò una riga, premerò Invio, inizierò a digitare la riga successiva e gli stessi identici tasti mi daranno invece quello che sembra essere VBScript intellisense:

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

Esiste un modo per dire a VS che i file .asp sono SEMPRE codice Javascript e non utilizzare mai il codice VB?Avere l'IDE che trasforma "var" in "vArray" quando si preme Invio si sta rivelando un po' frustrante...

Aiutami, StackOverflow.Sei la mia unica speranza.

È stato utile?

Soluzione

L'intellisense ASP classico è, come hai osservato, interrotto in VS2008.Microsoft ha effettivamente tagliato completamente il supporto per la colorazione della sintassi ASP classica e IntelliSense in VS2008 RTM, quindi lo ha ripristinato in SP1 a causa delle proteste dei clienti.Dare un'occhiata a questa segnalazione di bug sul sito Microsoft Connect per ulteriori informazioni su come è stato ripristinato.

Ad ogni modo, lasciami dettagliare esattamente come è rotto.Ciò che vedi non è in realtà VB Intellisense, invece vedi metodi e oggetti presenti in uno dei seguenti:

  • IL oggetto di risposta lato server a volte altri oggetti lato server come Session o Request, come se ci fosse un'istruzione javascript "with" per questi oggetti prima di qualsiasi codice.questo non ha senso: è un bug in VS.
  • IL oggetto finestra lato client (!!!!).Questo non ha senso poiché si tratta di script lato server.è un bug in VS.
  • parole chiave JavaScript e oggetti globali come String.Questo è previsto (anche se se definisci il tuo script utilizzando runat=server, funziona in modo più affidabile-- se definisco lo script con <% %> spesso non ottengo la parola chiave intellisense corretta.

Tieni presente che nessuno di questi è VB Intellisense: ciò che vedi sono semplicemente metodi PascalCased di metodi integrati validi di Request, Response, ecc.oggetti integrati nel modello di oggetti script lato server di ASP classico.

Aneddoticamente, ho scoperto che intellisense funziona in modo molto più naturale nei blocchi di script runat=server rispetto ai blocchi <% %>.Almeno con runat=server, ottengo intellisense digitando "Richiesta.", "Risposta.", ecc.e anche la parola chiave jscript intellisense sembra funzionare meglio anche in quei blocchi.

Ci sono altre peculiarità in IntelliSense, come quando hai un blocco di script <% %>, quando digiti un carattere, il carattere viene ignorato nell'elenco delle scelte IntelliSense che ottieni.(funziona meglio anche nei blocchi runat=server)

In altre parole, tutto questo è molto rotto.Non ho informazioni privilegiate sul motivo per cui è così difettoso, a parte il fatto che questa è una funzionalità deprecata in VS2008, riportata in un service pack e probabilmente ha molti meno test rispetto ad altre parti di VS, quindi non sorprende che sia rotta.Soprattutto se si considera che supporta una funzionalità, l'ASP classico, che Microsoft probabilmente vorrebbe eliminare.Ciò non significa che i Redmontoniani stiano cercando attivamente di sabotare questo, ma in un team con risorse limitate, far funzionare perfettamente l'ASP classico probabilmente non attirerà lo stesso livello di attenzione di, ad esempio, ASP.NET MVC.

Detto questo, IMHO anche questo supporto limitato è migliore di quello che c'era in VS2008 RTM, quando i classici file ASP sembravano un blocco note, senza alcuna colorazione IntelliSense o sintassi.

Se sei infastidito da questo triste stato di cose, ti suggerisco di inviare una segnalazione di bug a https://connect.microsoft.com/VisualStudio.Proprio come una segnalazione di bug ha portato Microsoft a ripristinare il classico ASP Intellisense in VS2008 SP1, potrebbe indurli a risolverlo per SP2 e/o VS2010.Potresti anche voler controllare l'ultima beta di VS2010 per vedere se il problema è stato risolto o peggio.

Scusa se questa non è la risposta che speravi.:-(

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top