【问题标题】:How to debug a .exe launched from Full​Trust​Process​Launcher如何调试从 FullTrustProcessLauncher 启动的 .exe
【发布时间】:2021-02-01 17:45:48
【问题描述】:

我在同一个解决方案中构建了一个 UWP 应用和一个 WPF 应用。我正在使用 Full​Trust​Process​Launcher 类从 UWP 应用程序启动 WPF 应用程序。我还使用 App​Service​Connection 类来允许两个应用程序相互通信。这一切在基本场景中都可以正常工作。但是,一旦我开始真正开发超出示例的 WPF 应用程序,我将需要在 Visual Studio 中开始调试。

我尝试了以下方法:

  1. 在 WPF 代码中设置断点。

结果:我没想到这会奏效,它没有。

  1. 在 UWP 启动后附加到正在运行的 WPF 进程。

结果:选择正在运行的 WPF 进程时的“附加”按钮灰显。

  1. 我开始研究新的 VS 扩展“桌面桥调试项目”,并提供示例和文档。

结果:我能找到的所有示例似乎都围绕着将现有 WPF 应用程序转换为 UWP。因此,我认为这不是解决方案。我可能是错的......

以下是从 UWP 应用启动我的 WPF 应用的相关代码:

int messageNumber;
    private async void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
    {
        if (this.messageNumber == 0)
        {
            await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
        }
        this.messageNumber++;

        await AppServiceManager.SendMessageAsync(
          $"Message number {this.messageNumber}");
    }

正如我上面提到的,现在我只是按照微软的例子。我最终希望添加更复杂的代码并能够进行调试。

我还能如何获得从 UWP 应用启动的 WPF 应用的调试功能?

谢谢

【问题讨论】:

    标签: debugging uwp desktop-bridge


    【解决方案1】:

    为了调试 UWP 项目中的完全信任进程,您必须在不调试的情况下启动 UWP 进程(或从中分离调试器)。然后将调试器附加到完全信任进程,您的断点将被命中。

    我意识到这不是一个理想的工作流程,我们正在努力在未来的 VS 更新中改进这一点。

    【讨论】:

    • 谢谢!我意识到这是一项新技术,您的解决方案对我来说已经足够好了,至少现在是这样。你摇滚!
    • 如果我想调试桌面桥应用初始化代码怎么办?值得注意的是,在我的情况下,桌面桥是一个控制台应用程序......
    • 您是在问如何对桌面桥接控制台应用程序进行“F5 调试”吗?
    • 我们已发布 Visual Studio 15.5 Preview 4,支持从 Win32 和 UWP 项目创建桌面桥包。但是您仍然需要手动附加到 Win32 进程。
    【解决方案2】:

    Advanced Installer (a MSFT partner) 现在为 Visual Studio 2015 和 2017 提供了一个扩展,它可以从单个项目构建 AppX(连同您的 MSI/EXE)包,还可以为您的应用程序启用调试几次点击 - 比当前的解决方案简单得多。

    - watch video demo -

    【讨论】:

      猜你喜欢
      • 2017-10-24
      • 1970-01-01
      • 2010-10-29
      • 2019-03-22
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多