2

COM 相互運用機能を介して .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 - 動作中 http://www.dylanbeattie.net/vs_js_working.jpg

...行を入力して Enter キーを押し、次の行を入力し始めると、まったく同じキーストロークで、代わりに VBScript インテリセンスのように見えるものが表示されます。

VS2008 の ASP インテリセンス - 壊れた http://www.dylanbeattie.net/vs_js_wrong.jpg

.asp ファイルが常に Javascript コードであり、VB コードをまったく使用しないことを VS に伝える方法はありますか? Enter キーを押したときに IDE が「var」を「vArray」に変えると、少しイライラします...

助けて、スタックオーバーフロー。あなたは私の唯一の希望です。

4

1 に答える 1

4

ご覧のとおり、クラシックASPインテリセンスはVS2008で壊れています。Microsoftは、実際にはVS2008RTMでClassicASP構文の色付けとインテリセンスのサポートを完全に廃止し、顧客からの抗議のためにSP1で復元しました。復元方法の詳細については、MicrosoftConnectサイトのこのバグレポートを参照してください。

とにかく、それがどのように壊れているかを正確に詳しく説明させてください。表示されているのは、実際にはVBインテリセンスではありません。代わりに、次のいずれかに存在するメソッドとオブジェクトが表示されています。

  • サーバー側のResponseオブジェクトは、SessionやRequestなどの他のサーバー側のオブジェクトである場合があります。これは、コードの前にこれらのオブジェクトのjavascript"with"ステートメントがあるかのようです。これは意味がありません-VSのバグです。
  • クライアント側のウィンドウオブジェクト(!!!!)。これはサーバー側のスクリプトであるため、これは意味がありません。VSのバグです。
  • javascriptキーワードとStringのようなグローバルオブジェクト。これは予想されることです(ただし、runat = serverを使用してスクリプトを定義すると、より確実に機能します。<%%>を使用してスクリプトを定義すると、適切なキーワードインテリセンスが得られないことがよくあります。

これらはいずれもVBIntellisenseではないことに注意してください。表示されているのは、Classic ASPのサーバー側スクリプトオブジェクトモデルに組み込まれているRequest、Responseなどのオブジェクトの有効な組み込みメソッドのPascalCasedメソッドです。

ちなみに、私はintellisenseが<%%>ブロックよりもrunat=serverスクリプトブロックではるかに自然に機能することを発見しました。少なくともrunat=serverを使用すると、「Request。」、「Response。」などを入力するためのインテリセンスが得られます。また、jscriptキーワードインテリセンスはこれらのブロックでもうまく機能するようです。

インテリセンスには他にも癖があります。たとえば、<%%>スクリプトブロックがある場合、文字を入力すると、返されるインテリセンスの選択肢のリストでその文字が無視されます。(これはrunat = serverブロックでもうまく機能します)

言い換えれば、これはすべて非常に壊れています。これがVS2008で非推奨になり、サービスパックに戻され、VSの他の部分よりもテストがはるかに少ない機能である以外は、なぜこのように破壊されたのかについての内部情報はありません。特に、Microsoftがおそらく廃止したいと考えている機能であるクラシックASPをサポートしていることを考えると。これは、Redmontoniansが積極的にこれを妨害しようとしていることを意味するわけではありませんが、リソースが限られているチームでは、従来のASPを優れたものにすることは、たとえばASP.NETMVCと同じレベルの注目を集めることはおそらくないでしょう。

とは言うものの、IMHOでさえ、この限定されたサポートでさえ、従来のASPファイルがメモ帳のように見え、インテリセンスや構文の色付けがまったくなかったVS2008RTMにあったものよりも優れています。

この申し訳ない状況に悩まされている場合は、https://connect.microsoft.com/VisualStudioでバグレポートを提出することをお勧めします。バグレポートにより、MicrosoftがVS2008 SP1で従来のASPインテリセンスを復元したように、SP2やVS2010用に修正される可能性があります。また、最新のVS2010ベータ版をチェックして、問題が修正されたか、さらに悪化したかどうかを確認することもできます。

これがあなたが望んでいた答えではない場合は申し訳ありません。:-(

于 2009-10-29T21:23:59.947 に答える