2012-04-12 45 views
3

我想发出只是调试器;从C#脚本清晰的代码到JavaScript。 我意识到我可以写Script.Literal(“调试器”)。 我宁可不使用Script.Literal,除非绝对需要。 我宁愿写一些类似Debugger.Break();在C#中发射的JavaScript只是调试器; 如果我创建一个导入的库,是否有某种属性可以让我这样做?发送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 2012-04-12 23:27:13

+1

使用非调试脚本时,使用注释标签会遇到问题。调用一个方法,而不是[ScriptAlias(“debugger; new Date”)],它将发射调试器; new Date(); – DTig 2012-04-24 18:25:13

+0

哦,我没有想到这一点。聪明!像'debugger; console.log'这样的东西可能也会起作用。 – jamauss 2012-04-24 21:22:07

0

为什么不使用Debug.Fail ...这是c#代码的常态。

+0

您的意思是命名类调试和方法失败或者你的意思是你把脚本#中的东西,可以调用代码'Debug.Fail();'? – jamauss 2012-06-20 23:10:54