문제

COM Interop을 통해 .NET을 일부 레거시 ASP 코드와 결합하는 프로젝트를 진행하고 있습니다. 레거시 ASP는 jscript로 작성됩니다 - 파일은이 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>

VS2008을 사용하여 나머지 프로젝트와 함께 레거시 ASP 코드를 편집하고 싶지만 Intellisense는 매우 이상하게 행동하고 있습니다. 1 분은 올바른 jscript 키워드와 방법을 제공합니다.

vs2008의 JS Intellisense -Working http://www.dylanbeattie.net/vs_js_working.jpg

... 그래서 나는 라인을 입력하고, Enter를 누르고, 다음 줄을 입력하기 시작하면, 정확히 동일한 키 스트로크는 대신 vbscript intellisense로 보이는 것을 줄 것입니다.

vs2008의 ASP Intellisense -Broken http://www.dylanbeattie.net/vs_js_wrong.jpg

.asp 파일이 항상 JavaScript 코드이며 VB 코드를 전혀 사용하지 않는다고 말할 수있는 방법이 있습니까? Enter를 누르면 IDE를 "var"로 바꾸는 것은 "Varray"로 가면 약간 실망 스럽습니다 ...

도와주세요, stackoverflow. 당신은 나의 유일한 희망입니다.

도움이 되었습니까?

해결책

당신이 관찰 한 바와 같이, 클래식 ASP Intellisense는 VS2008에서 깨졌습니다. Microsoft는 실제로 VS2008 RTM의 클래식 ASP 구문 색칠과 Intellisense에 대한 지원을 완전히 줄인 다음 고객의 외침으로 인해 SP1에서 복원했습니다. 보세요 이 버그 보고서 복원 방법에 대한 자세한 내용은 Microsoft Connect 사이트에서.

어쨌든, 그것이 어떻게 깨진 지 정확히 자세히 설명하겠습니다. 당신이보고있는 것은 실제로 VB Intellisense가 아닙니다. 대신 다음 중 하나에 존재하는 방법과 객체를보고 있습니다.

  • 그만큼 서버 측 응답 객체 때로는 세션이나 요청과 같은 다른 서버 측 객체가 마치 코드 전에 이러한 개체에 대한 "명령문이있는 JavaScript가있는 것처럼. 이것은 말이되지 않습니다- 그것은 Vs의 버그입니다.
  • 그만큼 클라이언트 측 창 개체 (!!!!). 이것은 서버 측 스크립트이기 때문에 의미가 없습니다. 그것은 Vs의 버그입니다.
  • JavaScript 키워드 및 String과 같은 글로벌 개체. 이것은 예상됩니다 (runat = server를 사용하여 스크립트를 정의하면 더 안정적으로 작동합니다. < % %>로 스크립트를 정의하면 종종 적절한 키워드 Intellisense를 얻지 못합니다.

이들 중 어느 것도 VB Intellisense가 아닙니다. 당신이보고있는 것은 단순히 요청, 응답 등의 유효한 내장 메소드의 단순히 구축 된 방법입니다. 클래식 ASP의 서버 측 스크립트 객체 모델에 내장 된 개체.

일화 적으로, 나는 Intellisense가 < % %> 블록보다 runat = 서버 스크립트 블록에서 훨씬 더 자연스럽게 작동하는 것을 발견했습니다. 적어도 runat = server를 사용하면 "요청", "응답"등을 입력 할 수있는 IntelliSense를 얻습니다. 또한 JScript 키워드 IntellISense도 해당 블록에서도 더 잘 작동하는 것 같습니다.

Intellisense에는 < % %> 스크립트 블록이있을 때 캐릭터를 입력 할 때 캐릭터가 다시 돌아 오는 Intellisense 선택 목록에서 캐릭터가 무시됩니다. (이것은 또한 runat = 서버 블록에서 더 잘 작동합니다)

다시 말해, 이것은 모두 매우 깨졌습니다. 나는 그것이 왜 그렇게 파열 된 지에 대한 내부 정보가 없습니다. 이것 외에는 VS2008에서 더 이상 사용되지 않은 기능이며 서비스 팩으로 다시 가져 왔으며 VS의 다른 부분보다 테스트가 훨씬 적을 가능성이 높기 때문에 깨진 것은 놀라운 일이 아닙니다. 특히 Microsoft가 떠나고 싶어하는 기능인 Classic ASP를 지원한다고 생각할 때. 그렇다고 Redmontonians가 적극적으로 파괴하려고한다는 것을 의미하지는 않지만 자원이 제한된 팀에서는 클래식 ASP를 훌륭하게 만드는 것이 ASP.NET MVC와 같은 수준의 관심을 끌지 않을 것입니다.

즉, IMHO는이 제한된 지원조차도 VS2008 RTM에있는 것보다 더 낫습니다. 클래식 ASP 파일이 메모장처럼 보였을 때, wtih는 지능 또는 구문 색칠이 전혀 없습니다.

이 미안한 상황에 짜증이 나면 버그 보고서를 제출하는 것이 좋습니다. https://connect.microsoft.com/visualstudio. 버그 보고서와 마찬가지로 Microsoft가 VS2008 SP1에서 클래식 ASP Intellisense를 복원하도록 한 것처럼 SP2 및/또는 VS2010 용으로 수정할 수 있습니다. 또한 문제가 고정되었는지 또는 악화되는지 확인하기 위해 최신 VS2010 베타를 확인할 수도 있습니다.

이것이 당신이 바라는 대답이 아니라면 죄송합니다. :-(

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top