2012-04-12 11 views
3

私はデバッガだけを出したい。 C#スクリプトのシャープコードからjavascriptへ Script.Literal( "debugger")と書くことができます。 絶対に必要でない限り、私はScript.Literalを使いたくないでしょう。 私はDebugger.Break()のようなものを書くことを好むでしょう。 C#で、デバッガだけである出力されたjavascriptを使用します。 インポートされたライブラリを作成する場合、これを行うための属性がありますか?Emit javascriptデバッガ。スクリプトシャープより

答えて

3

これはかなりハックですが、機能します。あなたがしたいことが正式にサポートされていないときに創造しなければなりません、そうですか?

Script.Alertの仕組みに基づいており、[ScriptAlias]属性を使用してJavaScriptコメントを挿入します。幸いにもScriptAliasAttributeは提供された値を正確に渡し、決してそれをサニタイズしません。

namespace MyNamespace 
{ 

    [GlobalMethods] 
    [IgnoreNamespace] 
    [Imported] 
    public static class Debugger 
    { 
     [ScriptAlias("debugger;//")]//must comment out(); 
     public static void Break() 
     { 
      //this outputs - debugger;//(); 
     } 
    } 
} 

ので、上記のコードを使用して、あなたのC#コードでDebugger.Break();を書くことができ、そしてあなたは、放出されたJavaScriptでdebugger;//();を取得します。少し醜いですが、それは動作します。

+1

私はこれまでにボックスの外で思考する方法を見たことがある場合、これはハックです!ありがとう! – DTig

+1

非デバッグスクリプトを使用する場合は、コメントタグを使用して問題に取り組んでください。デバッガを発行するメソッド[ScriptAlias( "debugger; new Date")]を呼び出す;新しいDate(); – DTig

+0

ああ、私はそれについて考えなかった。賢い! 'debugger; console.log'のようなものもおそらく動作します。 – jamauss

0

Debug.Failを使用しないでください...これはC#コードの標準となるものです。

+0

クラスの名前をDebugとし、メソッドが失敗するか、 'Debug.Fail();'というコードで呼び出すことができるScript#に何かを入れることを意味しますか? – jamauss

関連する問題