我如何使用Powershell的IDE在Powershell中调试C#代码

时间:2016-11-15 05:33:04

标签: c# powershell ide powershell-v4.0 powershell-ise

我如何逐行调试PowerShell中的源代码?

我在powershell中使用c#代码,如下例所示:

$Assem = (
    “Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c” ,
    “Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”
    )

$Source = @”
using Microsoft.SharePoint.Publishing.Administration;
using System;

namespace StefanG.Tools
{
    public static class CDRemoteTimeout 
    {
        public static void Get()
        {
            ContentDeploymentConfiguration cdconfig = ContentDeploymentConfiguration.GetInstance();
            Console.WriteLine(“Remote Timeout: “+cdconfig.RemoteTimeout);
        } 

        public static void Set(int seconds)
        {
            ContentDeploymentConfiguration cdconfig = ContentDeploymentConfiguration.GetInstance();
            cdconfig.RemoteTimeout = seconds;
            cdconfig.Update();
        }
    }
}
“@

Add-Type -ReferencedAssemblies $Assem -TypeDefinition $Source -Language CSharp 

[StefanG.Tools.CDRemoteTimeout]::Get()

[StefanG.Tools.CDRemoteTimeout]::Set(600)

当我开始调试powershell时,我无法看到源代码中发生的任何事情。我使用powershell_ise。如果有人可以请给我好的powershell IDE调试它很容易。谢谢你的帮助。

$source是一个字符串,因为调试器只是在导入源的第一行调试add-type。

1 个答案:

答案 0 :(得分:2)

  1. 在要调试的方法中设置断点。
  2. 构建项目。
  3. 启动一个新的PowerShell窗口。
  4. 在Visual Studio中,从“调试”菜单中选择“附加到进程”。
  5. 选择PowerShell.exe进程,然后单击“附加”。调试器现已启动,并附加到已打开的PowerShell窗口。
  6. 在PowerShell窗口中,导入模块并运行PowerShell Cmdlet。
  7. 当您的代码遇到断点时,它将允许您像在任何其他Visual Studio解决方案中一样在Visual Studio调试器中单步执行它。
  8. 参考http://www.johnchapman.net/technology/coding/powershell-debug-custom-csharp-powershell-cmdlet/

                       (OR)
    

    您可以在PowerShell窗口中安装PowerShell编辑器进行调试 http://dalexandrov.github.io/PowershellEditor/