64

有没有办法在没有安装 Visual Studio 的机器上设置远程调试 (Msvscom.exe)?

我想附加到 VM 上运行的服务,以便调试代码中的问题。我以前做过,但两台机器都安装了 VS。

开发框运行 Visual Studio 2010/Windows 7。VM 运行没有 Visual Studio 的 Windows 7。

4

6 回答 6

120

我将恢复它,因为任何尝试这样做的人都知道每次都非常痛苦,并且它会随着主机/远程系统的每一种可能组合而略有变化。

Visual Studio 远程工具链接:

  1. Visual Studio 2010 远程调试器。(截至 2016 年 10 月 21 日工作)
  2. Visual Studio 2013 远程工具(截至 2016 年 10 月 21 日工作)
  3. Visual Studio 2015 远程工具 x86 - 直接下载链接
  4. Visual Studio 2015 远程工具 x64 - 直接下载链接
  5. Visual Studio 工具(感谢 Robo Burned)
  6. Visual Studio 2017 Remote Tools x64 - 直接下载链接感谢 Isaac Baker
  7. Visual Studio 2017 Remote Tools x86 - 直接下载链接感谢 Isaac Baker
  8. Visual Studio 2019 远程工具 - 下载链接

这是我今天成功的设置:

主机(开发)机器:
Windows 7 Ultimate SP1 x64。运行 Visual Studio 2010、.NET Framework 4。

远程机器:
运行 Windows Embedded Standard 32 位的工业/工厂车间 PC。它看起来/感觉完全像 Windows 7。运行 SP1。未安装 Visual Studio。具有 .NET 框架 4。

网络:
两台机器在同一个子网上。我通过 RDP 访问远程机器并以这种方式运行我的应用程序。

Microsoft-Proprietary Follicle-Deterioration Implementation:
记下您的开发机器的用户名和密码。出于某种原因,您必须在远程计算机上创建完全相同的用户名和密码。因为微软。

我是如何做到的:
我从@sJhonny 提供的链接下载了 Visual Studio 2010 远程调试器。我不得不在那篇文章中关闭 Visual Studio 2013 并切换到 2010。如果你想用细齿梳子浏览 2010 年的文章以找到下载,链接就在“没有人找到这个”旁边有用的”链接在顶部。如果没有,请按照我上面的链接。

在远程机器上安装它并运行配置向导。我为向导保留了默认值:

  • “运行'Visual Studio .....”被选中
  • 用户名为 LocalSystem,密码为空
  • 只允许本地网络上的计算机....

在远程系统上运行远程调试器,你会看到

Msvsmon 启动了一个名为 'username@machinename...' 的新服务器

在界面中。到现在为止还挺好。在远程机器上运行应用程序。在开发机器上,Visual Studio 中的 Ctrl+Alt+P 将打开“附加到进程”(它也在工具菜单下)。我收到一个关于我的开发机器的防火墙配置不正确的弹出窗口,并被问到我是否要允许连接等......显然说是。

在限定符框中输入“用户名@机器名”组合...按刷新并祈祷一下。更加努力地祈祷,您应该会看到远程机器上运行的进程列表。选择您的进程并附加到它。

但是我的断点不起作用!?他们当然不会……因为在与远程计算机上的应用程序相同的目录中使用断点会很有意义。如果你足够幸运,你会收到有关断点缓存的警告并显示一个带有路径的对话框。

该对话框提到它相对于远程机器是正确的。它在撒谎。它与远程计算机无关,只是它迫使您在那里创建一个与您当前用户同名的全新用户,因为 Microsoft. 要让断点工作,请按照开发机器上的路径(可在工具>选项>调试>符号中自定义:在此目录中缓存符号)并将应用程序的 .pdb 文件复制到该目录。您必须在每个新版本中复制它们,除非有自动执行的选项;我还没有检查,因为我还没有停止庆祝我的远程调试成功。

现在一切都应该正常了。

我希望这可以帮助某人节省多年来我一直试图让它在不同机器上工作的令人眼花缭乱的愤怒时间。

于 2014-07-21T18:11:12.010 回答
19

当然有。
您可以在不安装 Visual Studio 的情况下安装 msvsmon。
我自己在几台机器上做过这个。
棘手的部分在于授权——在本地机器上运行 VS 的用户需要远程机器上的特殊权限。
ms有一些解释细节的文章-http : //msdn.microsoft.com/en-us/library/bt727f1t.aspx

于 2012-07-20T20:32:23.557 回答
10

更新:这里是 2017 年的链接,它们也不明显。

Visual Studio 远程工具链接 x64 直接链接

Visual Studio 远程工具链接 x86 直接链接

于 2017-05-25T16:26:08.833 回答
3

取自: how-to-implement-remote-debugging-in-visual-studio-2005

让我们考虑一个例子来清楚地理解这种情况。莫莉克拉克和亚当巴尔都是 Adventure Works 的员工。Adventure Works 有一个名为 Adventure-works.com 的 Microsoft Windows NT 域。Adam 在使用 Molly 编写的一些软件时遇到了问题。Molly 想在 Adam 的计算机上调试此软件。Molly 和 Adam 遵循以下步骤:

  • Adam 的计算机上没有远程调试器。为了设置远程调试器,Molly 决定共享她计算机上的 Program Files\Microsoft Visual Studio 8\Common7\IDE\Remote Debugger 目录。她创建了一个名为 Remote 的文件共享。
  • Adam 运行 \MollyComputerName\Remote\x86\Msvsmon.exe。
  • 远程调试器启动后,Adam 单击“工具”菜单上的“权限”以使用“权限”对话框配置远程调试器。他允许 Molly 进行调试。
    注意Adam 还可以通过在远程调试器启动时传递 /allow 选项来配置远程调试器。
  • Molly 启动 Visual Studio 2005。
  • 要打开“附加到进程”对话框,Molly 单击“工具”菜单上的“附加到进程”。
  • Molly 通过在 Qualifier 框中输入 Adventure-works.com\Adam@AdamComputerName 连接到 Adam 的计算机。
  • 在可用进程下,Molly 选择她的应用程序正在使用的工作进程,然后单击附加。
  • Molly 打开浏览器并向远程应用程序提供 URL。执行停止在应用程序中放置断点的位置。
于 2017-03-07T14:18:40.637 回答
2

还有另一种我更喜欢的方式(如果你有快速的互联网连接)。

您不必在远程桌面连接上下载或安装任何东西。

  1. C:您可以在通过远程桌面连接进行连接时共享您的磁盘。

    远程桌面 - 共享本地资源

  2. 在远程桌面上转到位置(取决于您的本地位置)

    \\tsclient\C\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Remote Debugger\x64
    
  3. (可选)在桌面上创建文件夹或 msvsmon.exe 的快捷方式

  4. 通过共享磁盘从本地磁盘远程运行它。(启动可能需要几秒钟,具体取决于您的连接质量)

选项 2:将 Remote Debugger\x64 或 x86 文件夹复制到远程位置并使用它。

于 2020-02-06T07:14:14.190 回答
0

我能够让它与 asp.net core 2.1 一起使用,与上述答案的唯一区别是您附加到的进程是 dotnet.exe。

于 2020-01-13T21:18:25.417 回答