相关疑难解决方法(0)

在调试期间在Visual Studio中自动附加到子进程

在为媒体中心编写插件时,你的插件会被托管在ehexthost.exe这个exe中ehshell.exe,你无法直接启动它,而是你传递了一个特殊的参数ehshell.exe,它将在一个单独的进程中启动插件.

当我们调试媒体浏览器时,我发现附加到第二个进程的过程有点笨重,我知道Debugger.Attach以及我可以使用的一些特殊注册表项.

这两种方法都不符合我的法案.我想要的是按F5并让我当前的visual studio实例自动附加到子进程.可以这样做吗?

如果有一个VS的插件允许我实现这个功能,我会很高兴.

编辑

我最终使用以下宏:

Public Sub CompileRunAndAttachToEhExtHost()

    DTE.Solution.SolutionBuild.Build(True)
    DTE.Solution.SolutionBuild.Debug()

    Dim trd As System.Threading.Thread = New System.Threading.Thread(AddressOf AttachToEhExtHost)
    trd.Start()

End Sub

Public Sub AttachToEhExtHost()
    Dim i As Integer = 0
    Do Until i = 50
        i = i + 1
        Try

            For Each proc As EnvDTE.Process In DTE.Debugger.LocalProcesses
                If (proc.Name.IndexOf("ehexthost.exe") <> -1) Then
                    proc.Attach()
                    Exit Sub
                End If
            Next
        Catch e As Exception
            ' dont care - stuff …
Run Code Online (Sandbox Code Playgroud)

.net c# debugging visual-studio visual-studio-debugging

36
推荐指数
3
解决办法
2万
查看次数

如何使用Visual Studio"命令行参数"选项将C#项目的stdout重定向到文件

我试图将C#程序的输出重定向到文件.使用"cmd.exe"时,我可以简单地运行它myprogram.exe arg1 arg2 > out.txt,但我想使用Visual Studio 启动选项完成相同的操作.

我创建了一个C#Empty Project并添加了以下代码:

using System;
class Test
{
    public static void Main(string[] args)
    {
        foreach (var arg in args) Console.WriteLine(arg);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我在项目设置中编辑了命令行参数: 项目属性

使用Ctrl + F5运行项目不能按预期工作.我得到控制台中打印的命令行参数,而不是输出文件:

arg1
arg2
>
output.txt
Run Code Online (Sandbox Code Playgroud)

如果我将命令行参数更改为:arg1 arg2 "> output.txt"我得到以下输出:

arg1
arg2
^> output.txt
Run Code Online (Sandbox Code Playgroud)

我注意到output.txt在Output文件夹中创建了一个空文件.

这件事有可能完成,还是我被迫继续使用cmd.exe来启动我的程序?

c# visual-studio visual-studio-2012

19
推荐指数
2
解决办法
1万
查看次数

我可以创建一个Visual Studio宏来在调试器中启动特定项目吗?

我的项目在同一解决方案文件中同时包含客户端和服务器组件.我通常将调试器设置为在调试时将它们一起启动,但通常情况下我在调试器外部启动服务器,因此我可以根据需要在客户端工作时启动和停止客户端.(这要快得多).

我正试图在解决方案资源管理器中解决问题,以便启动单个项目,而只是在工具栏上粘贴一个按钮,调用宏来启动单个项目的调试器(同时将"F5"类型的调试单独保留到启动两个进程).

我试过录音,但这并没有真正带来任何有用的东西.

到目前为止,我所要做的就是在解决方案资源管理器中找到项目项:

 Dim projItem As UIHierarchyItem

 projItem = DTE.ToolWindows.SolutionExplorer.GetItem("SolutionName\ProjectFolder\ProjectName").Select(vsUISelectionType.vsUISelectionTypeSelect)
Run Code Online (Sandbox Code Playgroud)

(这基于宏记录器如何尝试这样做.我不确定导航UI对象模型是否是正确的方法,或者我是否应该考虑通过解决方案/项目对象模型).

macros visual-studio-2008 visual-studio

5
推荐指数
1
解决办法
1679
查看次数

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

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

这是一个如何在完整框架中完成的示例,但对于初学者来说,该Marshal.GetActiveObject方法似乎不存在。

在 dotnet core 2.0 中是否有不同的方法来实现这一点?或者只是不可能?

c# .net-core asp.net-core-2.0 .net-standard

5
推荐指数
1
解决办法
666
查看次数

在同一解决方案中针对服务器运行集成测试

我使用 NUnit/MSTest 编写集成测试,只是因为它更容易。测试需要与同一解决方案中的 TCP 服务器通信,并且需要调试测试和 TCP 服务器。有没有办法在调试模式下从解决方案启动项目(控制台应用程序)并同时调试测试方法?无论我尝试什么,VS 都不会让我这么做。

c# integration-testing visual-studio

4
推荐指数
1
解决办法
2314
查看次数