如何调试由FullTrustProcessLauncher启动的.exe文件

3

我已经构建了一个UWP应用程序和一个WPF应用程序,在同一个解决方案中。我正在使用FullTrustProcessLauncher类从UWP应用程序启动WPF应用程序。我还使用AppServiceConnection类允许这两个应用程序相互通信。在基本场景下,这一切都很正常。但一旦我开始开发超出我可以找到的示例的WPF应用程序,我就需要在Visual Studio中开始调试。

我尝试了以下方法:

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

结果: 我没有期望它能够工作,并且它确实没有工作。

  1. 在UWP启动WPF进程后附加到正在运行的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应用程序的调试功能呢?

谢谢!

2个回答

8
为了调试您的UWP项目中的完全信任进程,您需要在不使用调试器的情况下启动UWP进程(或从中分离调试器)。然后将调试器附加到完全信任的进程,断点将被触发。
我知道这不是理想的工作流程,我们正在努力改进VS的未来更新。

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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接