8

私は(Windowsアプリケーション開発のバックグラウンドから)Web開発を始めたばかりですが、WebMatrixは、その単純さ、および完全なASP.NET MVC開発への有用な足がかりのように見えるため、開始するのに適した場所のようです。

ただし、デバッグツールがないことは、特にWeb環境での開発の基礎を学ぼうとしているときに、少し痛いです。

実行の流れを追跡し、トレースデータをページに表示することは、最小限のデバッグエクスペリエンスを実現するためのかなり基本的な機能のように見えますが、それでもWebMatrixに組み込まれていないようです(または、まだ見つけていない可能性があります)。 )。

1つのページ内でトレース変数を設定し、その変数をページレイアウトに表示するのは簡単です。しかし、フロー内の他のページ(たとえば、レイアウトページ、_PageStartページなど)間、およびページ構築プロセス中に使用されるC#クラス内でさえ、実行をトレースする必要がある場合、これはどのように役立ちますか。

まだ見つけていないWebMatrix内のトレース機能はありますか?または、単一のページだけでなく、アプリケーション全体で機能するトレース機能を実装する方法はありますか?サードパーティ製品($)でさえ、何もないよりはましでしょう。

4

3 に答える 3

5

WebMatrixのシンプルさの一部(そして一部の人にとっては魅力的です)は、デバッガーやトレースツールなどの肥大化がないことです!そうは言っても、(Intellisenseと共に)将来のリリースで登場するデバッガーには賭けません。

WebMatrix内には、フロントエンドへの生の情報のダンプに役立つオブジェクトServerInfoとオブジェクトを使用した基本的な「ページへの変数の出力」機能があります。ObjectInfoこれらのオブジェクトを使用するための簡単なチュートリアルは、asp.netサイト:デバッグの概要にあります。

実際のIDEレベルのデバッグとトレースをさらに詳しく知りたい場合は、Visual Studioを使用することをお勧めします(無料のExpressエディションを含め、どのバージョンでも問題なく動作します)。

ここでも、asp.netサイトでこれを行うための優れた紹介があります:VisualStudioでASP.NETWebページをプログラムします。

重要なポイントは、Visual Web Developer2010ExpressASP.NETMVC3RTMのインストールです。これにより、WebMatrixでも便利な[VisualStudioの起動]ボタンが表示されます。まだRazorWebページサイトを作成しているので心配しないでください。たまたまVisualStudioにあるだけです。

于 2011-02-25T04:59:39.857 に答える
4

WebMatrix内のパッケージ(Nuget)領域にRazorデバッガー(現在はバージョン0.1)があります

于 2011-02-25T05:59:14.703 に答える
1

WebMatrixは、アラート/印刷を介したデバッグの古典的な時代を思い起こさせます。理想的ではありませんが、それには特定のシンプルさと芸術があります。ただし、コードに問題がある場合は、変数を取得するのが難しい場合があります。Debug単純なクラスを使用して、デバッグの問題のほとんどを解決しました。

次のコードを使用して、App_CodeディレクトリにDebug.csというファイルを作成します。

using System;
using System.Collections.Generic;
using System.Web;
using System.Text;

public class TextWrittenEventArgs : EventArgs {
    public string Text { get; private set; }
    public TextWrittenEventArgs(string text) {
        this.Text = text;
    }
}

public class DebugMessages {
  StringBuilder _debugBuffer = new StringBuilder();

  public DebugMessages() {
    Debug.OnWrite += delegate(object sender, TextWrittenEventArgs e) { _debugBuffer.Append(e.Text); };
  }

  public override string ToString() {
    return _debugBuffer.ToString();
  }
}

public static class Debug {
  public delegate void OnWriteEventHandler(object sender, TextWrittenEventArgs e);
  public static event OnWriteEventHandler OnWrite;

  public static void Write(string text) {
    TextWritten(text);
  }

  public static void WriteLine(string text) {
    TextWritten(text + System.Environment.NewLine);
  }

  public static void Write(string text, params object[] args) {
    text = (args != null ? String.Format(text, args) : text);
    TextWritten(text);
  }

  public static void WriteLine(string text, params object[] args) {
    text = (args != null ? String.Format(text, args) : text) + System.Environment.NewLine;
    TextWritten(text);
  }

  private static void TextWritten(string text) {
    if (OnWrite != null) OnWrite(null, new TextWrittenEventArgs(text));
  }
}

これにより、典型的なWriteLineメソッドを持つDebugという静的クラスが提供されます。次に、CSHTMLページで、DebugMessagesオブジェクトを新しくすることができます。.ToString()デバッグメッセージを出すことができます。

 var debugMsg = new DebugMessages();
 try {
    // code that's failing, but calls Debug.WriteLine() with key debug info
 }
 catch (Exception ex) {
   <p>@debugMsg.ToString()</p>
 }
于 2013-01-04T15:30:55.303 に答える