2

私は試してみましたが、(XslCompiledTransform.Load() メソッドに URI を渡すことによって) ディスクからスタイルシートをロードすることなく、XslCompiledTransform にステップインすることはできません。

XslCompiledTransform.Transform() メソッドにステップ インできるのは、前述のように URI を介してディスクからスタイルシートをロードした場合、または IXmlLineInfo インターフェイスを実装する XmlReader からスタイルシートをロードした場合のみであることを十分承知しています。

次のようにスタイルシートをロードしました。

XslCompiledTransform xslt = new XslCompiledTransform(true);
//grab string from textbox
XmlReader reader = XmlReader.Create(new StringReader(XsltBox.Text));

// Compile the style sheet.
xslt.Load(reader);

これは、私が読んださまざまな文献から、デバッグを有効にする方法のようです。ただし、XslCompiledTransform.Transform() メソッドにステップインしようとすると、「現在の場所で使用できるソース コードがありません」というメッセージが表示されます。

前述のように、次の手順を実行すると、変換に入ることができます。

string stylesheet = @"C:\PathToMy\Stylesheet.xsl";

// Enable XSLT debugging.
XslCompiledTransform xslt = new XslCompiledTransform(true);
//compile stylesheet
xslt.Load(stylesheet);

ディスクとの間で常に読み取りを行いたくないため、上記の方法は不可能です。


その有用なコメントをありがとう、私はマイクロソフトがこれを行ったことに気づいていませんでした.これは将来的に非常に役立つと確信しています.

しかし、私は自分の質問で自分自身を完全に明確にしていないと思います. xsl 変換で何が起こっているかを確認できるように、変換メソッドにステップインしたかったのです。渡すパラメーターによって、変換メソッドをデバッグできるかどうかが決まるため、load メソッドを強調しました (そうするには、IXmlLineInfo インターフェイスを実装する XmlReader を渡す必要があります)。

強調表示した手法を使用して変換メソッドにステップインすることはできますが、コードをステップ実行するだけです。コードを観察することで、変換で何が起こっているのかを突き止めることができたかもしれませんが、xsl デバッガーは、実際のスタイルシート自体を 1 行ずつ (変換の各行を実行するコードとは対照的に) ステップスルーして表示します。

4

2 に答える 2

1

最近、Microsoftは、このようなシナリオでのデバッグを可能にするために、.NetFrameworkのシンボルとソースコードをリリースしました。セットアップには数秒かかりますが、セットアップが完了すると、XslCompiledTransformの構築方法に関係なく、Loadメソッドにステップインできるようになります。

SOの答えに入るには詳細すぎますが、このテーマに関する優れたブログ投稿があります。

http://codebetter.com/blogs/james.kovacs/archive/2008/01/17/debugging-into-the-net-framework-source.aspx

于 2009-01-16T17:57:45.973 に答える
1

を使用しようとしている間、私は同じ問題を抱えていましたXmlReader.Create(new StringReader(String))。デバッグが機能するには、デバッガーがディスク ファイルを検出できる必要があるようですが、これは、StringReaderまたはストリーム バージョンのXmlReader.Createが使用できないという意味ではありません。このバージョンを試してください:

XmlReader.Create(new StringReader(String), New XmlReaderSettings(), baseURI)

私の場合、ファイル リソースを使用して xslt 文字列を保存しているので、参照できるファイルがあります。実際、Solution/Properties/Debugger Source code で指定されたフォルダー内のソース コードを検索するために、デバッガーが認識する絶対パスを指定する必要はありません。

のドキュメントは誤解を招くものです。なぜなら、必要なのはインターフェイスをサポートするXslCompiledTransformことだけだと暗示しているからです。XmlReaderIXmlLineInfo

于 2009-06-10T13:47:53.487 に答える