C# 如何在使用dotnet运行时调试.NET核心控制台应用程序

C# 如何在使用dotnet运行时调试.NET核心控制台应用程序,c#,asp.net-core,debugging,C#,Asp.net Core,Debugging,因此,我正在开发一个自定义的dotnetcli工具,如上所述。我刚开始使用它,可以使用dotnet run运行我的控制台应用程序,但在尝试调试时,它正好超过了我的断点。当从VS运行时,它确实可以工作,但我希望能够传递各种参数,而从应用程序参数框中这样做并不实际。有什么想法吗?您有多种选择: Debugger.Launch 此函数将弹出一个窗口,您可以在其中附加Visual Studio调试器。请参阅:。这在理论上有一个缺点(不适用于您),它仅在Visual Studio中可用,例如在Rider中

因此,我正在开发一个自定义的dotnetcli工具,如上所述。我刚开始使用它,可以使用
dotnet run
运行我的控制台应用程序,但在尝试调试时,它正好超过了我的断点。当从VS运行时,它确实可以工作,但我希望能够传递各种参数,而从应用程序参数框中这样做并不实际。有什么想法吗?

您有多种选择:

  • Debugger.Launch
    此函数将弹出一个窗口,您可以在其中附加Visual Studio调试器。请参阅:。这在理论上有一个缺点(不适用于您),它仅在Visual Studio中可用,例如在Rider中不可用,因为API未打开。(但当此窗口弹出时,您可以将附加程序附加到流程)

  • “等待”程序中的第一秒 您可以只向cli传递一个参数,该参数指示它应该等待x秒,以便可以附加调试器


  • 然后按如下方式调用程序:
    dotnet run--waitfordebugger

    您有多个选项:

  • Debugger.Launch
    此函数将弹出一个窗口,您可以在其中附加Visual Studio调试器。请参阅:。这在理论上有一个缺点(不适用于您),它仅在Visual Studio中可用,例如在Rider中不可用,因为API未打开。(但当此窗口弹出时,您可以将附加程序附加到流程)

  • “等待”程序中的第一秒 您可以只向cli传递一个参数,该参数指示它应该等待x秒,以便可以附加调试器


  • 然后按如下方式调用程序:
    dotnet run--waitfordebugger

    不管怎样,最好的方法似乎是将它们作为参数传入

    您可以通过单击Visual Studio中“运行”按钮旁边的箭头并选择“项目调试属性”来执行此操作。从那里,您可以转到“应用程序参数”并输入所需的参数。例如,类似于
    --list all
    的内容将在一个长度为2的数组中传递,其中索引0是
    --list
    ,索引1是
    all

    如果有人想出一种侵入性较小的方法,请告诉我


    编辑:您也可以在命令提示符/powershell中执行此操作,方法是使用
    dotnet run
    并附加到VS(调试>附加到进程)

    中的关联进程。很遗憾,最好的方法似乎是将它们作为参数传入

    您可以通过单击Visual Studio中“运行”按钮旁边的箭头并选择“项目调试属性”来执行此操作。从那里,您可以转到“应用程序参数”并输入所需的参数。例如,类似于
    --list all
    的内容将在一个长度为2的数组中传递,其中索引0是
    --list
    ,索引1是
    all

    如果有人想出一种侵入性较小的方法,请告诉我


    编辑:您也可以在命令提示符/powershell中执行此操作,方法是使用
    dotnet run
    并附加到VS(Debug>Attach to process)中的关联进程。

    您应该能够将调试器附加到现有的.net进程,或者,如果存在计时问题,您可以使用
    调试器。启动
    您的工具仍然是一个控制台应用程序。您可以像调试任何其他控制台应用程序一样,直接从IDE(VS、VS代码、Rider)调试它。您可以在
    Debug
    项目属性页中传递所需的任何参数。从调试器(即Visual Studio)启动调试器对其进行调试仍然是调试应用程序的最佳方式。是的,通过项目属性更改参数有点烦人,但这仍然是如何做到的。您还可以查看通过项目属性修改的
    launchSettings.json
    ,如果这对您来说更方便的话,可以直接更改那里的参数。您应该能够将调试器附加到现有的.net进程,或者,如果时间有问题,您可以使用
    调试器。启动
    您的工具仍然是一个控制台应用程序。您可以像调试任何其他控制台应用程序一样,直接从IDE(VS、VS代码、Rider)调试它。您可以在
    Debug
    项目属性页中传递所需的任何参数。从调试器(即Visual Studio)启动调试器对其进行调试仍然是调试应用程序的最佳方式。是的,通过项目属性更改参数有点烦人,但这仍然是如何做到的。您还可以查看通过项目属性修改的
    launchSettings.json
    ,如果这对您来说更方便的话,可以直接更改其中的参数。这两种方法都意味着更改正在调试的应用程序,但这可能会产生不必要的副作用。这两种方法都意味着更改应用程序这是正在调试,所以这可能会有不必要的副作用。
    public static void Main(string[] args)
    {
        if(args[0] == "waitfordebugger")
        {
            Thread.Sleep(10000); // Wait 10 Seconds
        }
    
        // Do stuff here