dotnet core 2.0 - 以编程方式将VS2017调试器连接到进程

时间:2018-02-06 09:39:16

标签: c# .net-core asp.net-core-2.0 .net-standard

在我的dotnet core 2.0应用程序中,我在某个点上以不同的进程(具有一些不同的参数)重新启动相同的应用程序。我希望能够以编程方式将当前的Visual Studio(2017)调试器附加到新进程。

Here is an example of how it is done in full framework但对于初学者来说,Marshal.GetActiveObject方法似乎不存在。

在dotnet core 2.0中有没有不同的方法来实现这一目标?或者这是不可能的?

1 个答案:

答案 0 :(得分:0)

尽管这种情况正在发生变化,但是.Net Core的构想是尽可能地跨平台,并且最初遗漏了许多“仅Windows”方法。也就是说,您仍然可以使用P / Invoke调用基础Windows函数:

[DllImport("oleaut32.dll", PreserveSig = false)]
static extern void GetActiveObject(ref Guid rclsid, IntPtr pvReserved,
    [MarshalAs(UnmanagedType.IUnknown)] out object ppunk);

[DllImport("ole32.dll")]
static extern int CLSIDFromProgID(
    [MarshalAs(UnmanagedType.LPWStr)] string lpszProgID, out Guid pclsid);
....

// Replace XX with the correct version
CLSIDFromProgID($"VisualStudio.DTE.XX.0", out var classId); 
GetActiveObject(ref classId, default, out dte);