レガシーJScript ASPファイルを編集するためのVisual Studio 2008の構成
-
04-07-2019 - |
質問
.NETをCOM相互運用機能を介していくつかのレガシー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-http://www.dylanbeattie.net/vs_js_working.jpgの作業
...そのため、行を入力してEnterキーを押し、次の行の入力を開始します。まったく同じキーストロークで、代わりにVBScriptインテリセンスが表示されます。
VS2008のASPインテリセンス-破損したhttp://www.dylanbeattie.net/vs_js_wrong.jpg
.aspファイルは常にJavascriptコードであり、VBコードをまったく使用しないことをVSに伝える方法はありますか? IDEで<!> quot; var <!> quotを有効にします。 into <!> quot; vArray <!> quot; Enterキーを押すと、少しイライラすることがわかります...
助けてください、Stackoverflow。あなたは私の唯一の希望です。
解決
クラシックASPインテリセンスは、ご存じのとおり、VS2008で壊れています。 Microsoftは、VS2008 RTMでClassic ASP構文の色付けとインテリセンスのサポートを実際に完全に削減し、顧客からの抗議によりSP1でそれを復元しました。 Microsoftのこのバグレポートをご覧ください。復元方法の詳細については、サイトに接続してください。
とにかく、それがどのように壊れているかを詳しく説明させてください。表示されているのは、実際にはVBインテリセンスではありません。代わりに、次のいずれかに存在するメソッドとオブジェクトが表示されています。
- サーバー側の応答オブジェクト他のサーバーjavascript <!> quot; with <!> quotが存在するかのように、SessionやRequestなどのサイドオブジェクト。コードの前にこれらのオブジェクトのステートメント。これは意味がありません。VSのバグです。
- クライアント側ウィンドウオブジェクト (!!!!)。これはサーバー側のスクリプトであるため、これは意味がありません。 VSのバグです。
- javascriptキーワードとStringなどのグローバルオブジェクト。これは期待されています(ただし、runat = serverを使用してスクリプトを定義する場合、より確実に動作します-<!> lt;%%<!> gt;でスクリプトを定義すると、適切なキーワードインテリセンスが得られないことがよくあります。
これらはいずれもVB Intellisenseではないことに注意してください。表示されているのは、クラシックASPのサーバー側スクリプトオブジェクトモデルに組み込まれたRequest、Responseなどのオブジェクトの有効な組み込みメソッドのPascalCasedメソッドです。
逸話的に、私はインテリセンスが<!> lt;%%<!> gt;よりもrunat = serverスクリプトブロックでより自然に動作することを発見しました。ブロック。少なくともrunat = serverでは、<!> quot; Request。<!> quot;、<!> quot; Response。<!> quot;などと入力するとインテリセンスが得られ、jscriptキーワードのインテリセンスはそれらのブロックも。
<!> lt;%%<!> gt;がある場合など、インテリセンスには他にも癖があります。スクリプトブロックでは、文字を入力すると、取得したインテリセンスの選択肢のリストでその文字は無視されます。 (これはrunat = serverブロックでも有効です)
つまり、これはすべて非常に壊れています。なぜこれが破壊されたのかについての内部情報はありませんが、これはVS2008で廃止され、サービスパックに持ち込まれた機能であり、おそらくVSの他の部分よりもはるかに少ないテストです-それが壊れていることは驚くべきことではありません。特に、Microsoftが廃止したいと考えている機能であるクラシックASPをサポートしていると考える場合。これは、レドモントン人が積極的にこれを妨害しようとしているという意味ではありませんが、リソースが限られているチームでは、ASP.NET MVCなどと同じレベルの注目を集めないでしょう。
とは言っても、この限定的なサポートでさえ、VS2008 RTMにあったものよりも優れています。クラシックASPファイルはメモ帳のように見え、インテリセンスや構文の色付けはまったくありませんでした。
この残念な状況に悩まされている場合は、 httpsにバグレポートを提出することをお勧めします。 //connect.microsoft.com/VisualStudio 。バグレポートがマイクロソフトにVS2008 SP1で古典的なASPインテリセンスを復元するようにしたように、SP2および/またはVS2010のためにそれを修正するかもしれません。また、最新のVS2010ベータ版をチェックして、問題が修正されているか、さらに悪いかどうかを確認することもできます。
これが望んでいた答えではない場合はごめんなさい。 :-(