VS 2010 Beta 2をインストールしたばかりで、ASP.NET MVC 2プロジェクトでプレイしたかった。スクリプト(alert('hello');
)をHomeコントローラーのindex.aspxビューに追加しただけで、実行を確認できます。ただし、ブレークポイントを設定しようとすると、ヒットしません。また、「debugger」キーワードを使用しようとしましたが、使用すると、「現在の場所に使用できるソースコードがありません」という残念なメッセージが表示されます。また、アプリが実行されているIEプロセスに独立して接続しようとすると、このメッセージが表示されます。
使いやすいスクリプトデバッグエクスペリエンスを得るために何をする必要がありますか? (Firebugを使用してこれをデバッグすることに成功しましたが、何らかの理由でVSデバッガーを好みます。)
ここに私の設定のいくつかの詳細があります:
デバッガーは、Silverlightデバッガーが選択されている場合、Silverlightコードとスクリプトコードの両方を同時にデバッグできません。JavaScriptデバッグがオフになっています。
私は同じ問題を抱えていました。 IDEを取得できませんでした。スクリプトタグ内に設定されたブレークポイントでさえブレークします。ただし、スクリプトタグの最初の行として「デバッガー」を追加すると、 IDEが応答するが、その場合は、逆境は利用可能ではなかったとのみ言う。
ただし、「ステップイン」や「ステップオーバー」などのデバッグツールをクリックすることはできました。これを行ったとき、IDEは私が使用している外部スクリプト(JQueryおよびGoogleマップ)の一部に進みました。したがって、JavaScriptコードブロックをビューから取り出して、 「Content」フォルダー内の.jsファイルを分離し、この新しい.jsファイルを参照するスクリプトタグを追加しました(url = "/Content/Test.js")。
それはうまくいきました...この努力をしなければならないことは少し面倒ですが、JavaScriptがビューに直接含まれていないことについて言うべきことがあるかもしれません。これが彼らが修正しようとしているバグであることを願っています。
IEでデバッグすると、VSはソリューションエクスプローラーに「Script Documents」というフォルダーを追加するようです。このフォルダー内には「Windows Internet Explorer」と呼ばれる別のフォルダーがあり、その中にはロードされたすべてのjsスクリプトとIEで現在表示されている(コンパイルされた)HTMLファイルがあります。このHTMLファイルのスクリプトタグにブレークポイントを設定すると、うまくいきます。
これを解決するには、プロジェクトのプロパティに移動し、「開始オプション」を選択します。次に、[ネイティブコード]チェックボックスをオンにします。両方のオプションが連動しないため、Silverlightチェックボックスをオフにします。
Ctrl + Alt + P(プロセスにアタッチ)、IEを選択、デバッグタイプに「スクリプト」を選択します。
ライアンが上記のように、スクリプトをScriptsフォルダーの下の別のファイルに移動しました。また、スクリプトの名前にデバッグを追加して、MyTestScriptになりました。debug。js。スクリプトタグを介してスクリプトを含めると、デバッガーがヒットしたスクリプトファイルにブレークポイントを設定できます。
Google Chrome devloperツールはJavaScriptを完全に表示します。私の場合、通常はjQueryのgetScript関数を使用してスクリプトを読み込み、コードの実行は通常jQueryを使用します。ページの読み込み時またはイベントの処理時のコールバック。VisualStudio 2010では、「ソースなし」バグに頻繁に遭遇しました。悲しいことに、Visual Studioプロジェクトの一部であるJavaScriptをデバッグするためにChrome.
別のjsファイルを使用すると、欠点があります。たとえば、MVCヘルパーは使用できません。マイクロソフトは本当にこれを理解する必要があります。
Intellisenseは、次のような参照コメントを含めても、ビューのスクリプトブロックでは正しく機能しません。
/// <reference path="/Scripts/jquery-1.6-vsdoc.js" />
/// <reference path="/Scripts/jquery-1.6.js" />
ただし、Intellisenseは、このアプローチを使用してjsファイルで正常に機能します。