【问题标题】:What is the usage of Debug -> Start external program in Visual StudioDebug -> 在 Visual Studio 中启动外部程序有什么用
【发布时间】:2018-10-29 14:33:46
【问题描述】:

我在 Visual Studio 2017 中创建了两个解决方案:

  • 第一个带有控制台应用程序Example1
  • 第二个类库ClassLibrary1

ClassLibrary1 只包含一个文件MyLib.cs:

namespace ClassLibrary1
{
    public class MyLib
    {
        public string Foo()
        {
            return "Bla";
        }
    }
}

在第一个解决方案(带有 Example1 控制台应用程序的那个)中,我添加了 existing project -> ClassLibrary1

我将ClassLibrary1配置为Startup项目,并设置Debug -> Start external program 如图:

所以现在您只需启动项目(在我的情况下为 ClassLibrary1)并且调试工作(我在返回“Bla”中设置断点;)。发生的情况是 Example1.exe 调用 ClassLibrary.MyLib 文件。

我是否正确理解了Debug -> Start external program 的用法或者还有其他用法?

【问题讨论】:

  • 当您需要执行的程序不是您正在开发的程序时,您可以使用它。可能是您正在开发一个插件,或者它是用 Visual Studio 不支持的编程语言编写的,例如 Delphi 或类似的语言。
  • @LasseVågsætherKarlsen 例如,Delphi 调用您的 DLL,然后您可以在 Visual Studio 中调试您的 DLL。
  • @broadband 您也可以打开您的 dll 项目并启动其他应用程序,然后单击 Visual Studio Debug\Attach to process 并选择正在运行的应用程序并在您的代码中放置一个断点,它将中断当方法被调用时。
  • @broadband 没错,我们在工作中这样做,我们还开发了一个 Delphi 应用程序,以及 Delphi 应用程序通过托管 .NET 运行时加载的大量 .NET 代码。通过配置Visual Studio启动Delphi生成的.exe文件,我们可以正常设置断点,调试.NET代码。我们无法从 Visual Studio 调试到 Delphi 代码,但我们可以随时切换到 Delphi IDE 进行该部分。

标签: c# debugging visual-studio-debugging


【解决方案1】:

如果你有一些外部的东西来启动你的代码,你通常会使用它。比如,如果你正在开发一个 DLL,而你的项目之外的一些其他进程会启动它。

例如,您可以为Thingy.exe 开发插件ThingyPlugin。然后,您将在此处指定 Thingy.exe 作为加载插件的一种方式。

如果没有外部进程,不妨使用Start Project

【讨论】:

    【解决方案2】:

    我了解Debug -> Start external program正确用法还是有其他用法?

    没有。通常你会使用Start Project,除非你有一个需要启动的外部程序来调试你的项目。

    我自己在很多情况下都使用过它,主要是在为其他软件开发插件时,例如实际上是 Autodesk Revit 插件的类库、不受支持的 Microsoft Office 版本等。

    【讨论】:

    • 是的,Revit 和 Solidworks 插件就是很好的例子。我经常使用它们。它们在启动时加载,您无法调试软件本身。您必须附加以处理或设置外部程序命令
    • @Franck 所以附加到现有进程与设置外部程序相同。唯一的区别是Visual Studio在使用设置的外部程序时启动程序
    • @broadband 不同之处在于启动外部将启动假设使用 dll 的 EXE,然后会找到进程并自动附加到它。如果你按下停止它应该停止EXE(一些不稳定的程序很挑剔,不会关闭,但这不是重点)。如果您确实需要运行 3 次使用您的 DLL 的 EXE,您将需要附加到其中一个您对调试感兴趣的文件,并且当您想要切换时分离并附加到另一个。这不会阻止应用程序运行。所以这将是两种模式的要点。
    猜你喜欢
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2014-07-11
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    相关资源
    最近更新 更多