Tom*_*Tom 5 c# .net-core asp.net-core-2.0 .net-standard
在我的 dotnet core 2.0 应用程序中,我在某个时间点在不同的进程中(使用一些不同的参数)重新启动相同的应用程序。我希望能够以编程方式将当前的 Visual Studio (2017) 调试器附加到新进程。
这是一个如何在完整框架中完成的示例,但对于初学者来说,该Marshal.GetActiveObject
方法似乎不存在。
在 dotnet core 2.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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
666 次 |
最近记录: |