2008-10-24 5 views
2

저는 COM interop을 통해 .NET과 레거시 ASP 코드를 결합하는 프로젝트를 진행하고 있습니다. 레거시 ASP는 JScript로 작성됩니다. 파일은 helloworld.asp 예제와 같습니다.레거시 JScript ASP 파일을 편집하기 위해 Visual Studio 2008을 구성합니다.

<%@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> 

정말 프로젝트의 나머지와 함께 기존 ASP 코드를 편집 할 수 VS2008를 사용하고 싶습니다,하지만 인텔리 매우 이상한 행동을한다. 동일한 키 입력합니다 다음 줄을 입력하기 시작하면, Enter 키를 누릅니다, 그래서이 줄을 입력 한거야 ...

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

과 : 한 분은 나에게 올바른 JScript의 키워드 및 방법을 제공 할 수 있습니다 대신 VBScript를 인텔리로 보이는 내게 줄 :

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

난 그 VS 파일을 .ASP 알 수있는 방법이 있나요 항상 자바 스크립트 코드이며, 모든 VB 코드를 사용하지 않겠다고? Enter 키를 누를 때 IDE가 "vArray"로 "var"로 바뀌면 약간의 실망스러운 결과가됩니다 ...

Help me, Stackoverflow. 너는 내 유일한 희망이야.

답변

4

기존 ASP intellisense는 이전에 보았 듯이 VS2008에서 손상되었습니다. Microsoft는 실제로 VS2008 RTM에서 Classic ASP 구문 색 지정 및 Intellisense에 대한 지원을 완전히 중단 한 다음 고객의 부끄러움 때문에 SP1에서 복원했습니다. 복원 방법에 대한 자세한 내용은 Microsoft Connect 사이트의 this bug report을 참조하십시오.

어쨌든, 어떻게 깨 졌는지 정확하게 설명해 드리겠습니다. 로, 세션 또는 요청과 같은

  • server-side Response object 때로는 다른 서버 측 객체 : 당신이보고있는 것은 아니다 실제로 VB는 방법과 다음 중 하나에 존재하는 물체를보고있는 대신 intellisense-- 코드 앞에 이러한 객체에 대한 javascript "with"문이있는 경우 이건 말이 안된다. VS의 버그 다.
  • client-side window object (!!!!). 이것은 서버 측 스크립트이기 때문에 이해가되지 않습니다. 그것은 VS의 버그입니다.
  • 자바 스크립트 키워드 및 String과 같은 전역 개체. 당신이 RUNAT = 서버를 사용하여 스크립트를 정의하면 나는 종종 적절한 키워드 인텔리을하지 않는 <% % >로 스크립트를 정의하면, 더 reliably-- 작동하지만 이것은 (예상된다.

참고 없음 이것들은 VB Intellisense입니다. Classic ASP의 서버 측 스크립트 객체 모델에 내장 된 요청, 응답 등의 유효한 내장 메소드의 PascalCased 메소드입니다.

예를 들어, runat = server 스크립트 블록에서 intelisense가보다 자연스럽게 작동한다는 것을 발견했습니다. 적어도 runat = server에서는 "Request.", "Response."등의 입력에 인텔리 센스가 있습니다. 또한 jscript 키워드 인 intellisense도 이러한 블록에서 더 잘 작동하는 것으로 보입니다.

< %% > 스크립트 블록이있는 경우와 같이 intellisense의 다른 단점이 있습니다. 문자를 입력하면 문자가 intellisense 선택 목록에서 무시됩니다. (이것도 runat = server 블록에서 더 잘 작동합니다)

즉, 이것은 모두 매우 깨졌습니다.VS2008에서 더 이상 사용되지 않으며 서비스 팩으로 가져온 기능이며 VS의 다른 부분보다 테스트가 훨씬 적기 때문에 내부 부품에 대한 내부 정보가 없습니다. 고장이났다는 것은 놀라운 일이 아닙니다. 특히 Microsoft가 아마도 사라지고 싶어하는 고전적인 ASP 기능을 지원한다고 생각할 때. 그렇다고해서 Redmonton이 적극적으로이 작업을 방해하려고하는 것은 아니지만 리소스가 제한되어있는 팀에서 고전적인 ASP 작업을 훌륭하게 만드는 것은 아마도 ASP.NET MVC와 같은 관심 수준을 끌어 내지 못할 것입니다.

그런데이 IMHO는 고전적인 ASP 파일이 메모장처럼 보이거나 intellisense 또는 구문 색칠이 전혀되지 않을 때 VS2008 RTM에있는 것보다 낫습니다.

불편을 끼쳐 드려 죄송합니다. https://connect.microsoft.com/VisualStudio에 버그 신고를 제출하는 것이 좋습니다. VS2008 SP1에서 고전적인 ASP 인텔리 센스를 복원 할 수있는 버그 보고서와 마찬가지로 SP2 및/또는 VS2010 용으로 수정할 수 있습니다. 또한 최신 VS2010 베타를 확인하여 문제가 해결되었는지 여부를 확인할 수도 있습니다.

죄송합니다. 원하지 않는 답변 일 경우 죄송합니다. :-(

관련 문제