有没有一种方法可以在未安装Visual Studio的计算机上设置远程调试(Msvscom.exe)?
我想附加到在VM上运行的服务,以便我可以调试代码中的问题。我以前做过这个,但两台计算机都安装了VS。
开发框架正在运行Visual Studio 2010/Windows 7。虚拟机正在运行没有Visual Studio的Windows 7。
有没有一种方法可以在未安装Visual Studio的计算机上设置远程调试(Msvscom.exe)?
我想附加到在VM上运行的服务,以便我可以调试代码中的问题。我以前做过这个,但两台计算机都安装了VS。
开发框架正在运行Visual Studio 2010/Windows 7。虚拟机正在运行没有Visual Studio的Windows 7。
我要重新提出这个问题,因为任何尝试做到这一点的人都知道这是一件非常痛苦和麻烦的事情,并且每次都会随着您所拥有的每种可能的主机/远程系统组合而略有不同。
这是我今天成功的设置:
主机(开发)计算机:
Windows 7 Ultimate SP1 x64。运行Visual Studio 2010,.NET Framework 4。
远程计算机:
在工业/工厂现场上运行Windows Embedded Standard 32位的PC。它看起来/感觉就像Windows 7一样。运行SP1。未安装Visual Studio。拥有.NET Framework 4。
网络:
两台计算机都在同一个子网中。我通过RDP访问远程计算机并以此方式运行我的应用程序。
Microsoft专有毛囊退化实现:
记下您的开发计算机的用户名和密码。由于某种原因,必须在远程计算机上创建完全相同的用户名和密码。因为微软。
我是如何做到的:
我从@sJhonny提供的链接中下载了Visual Studio 2010远程调试器。我不得不从该文章中的Visual Studio 2013切换到2010。如果您想仔细研究2010年的文章以查找下载链接,则该链接位于页面顶部的“没有人会发现这有用”的旁边。如果不是,请按照我的链接操作。
在远程计算机上安装并运行配置向导。我保留了向导的默认设置:
在远程系统上运行远程调试器,您将看到:
Msvsmon started a new server named 'username@machinename...'
在接口中,一切都很顺利。在远程机器上运行应用程序。在开发机器上,在Visual Studio中按Ctrl+Alt+P会打开“附加到进程”(也可以在工具菜单下找到)。我收到一个关于我的开发机器防火墙未正确配置并被问及是否允许连接等的弹出窗口... 当然要选择允许。
在限定符框中输入“用户名@机器名”组合... 点击“刷新”并祈祷一下。再多祈祷一点,你应该能看到远程机器上运行的进程列表。选择你的进程并附加它。
但我的断点不起作用!?当然不起作用...因为在与应用程序相同目录的断点上使用太有意义了。如果你足够幸运,你会收到有关断点缓存的警告并显示一个路径对话框。
对话框提到的是相对于远程机器而言是正确的。这是不正确的。除了迫使您在远程机器上创建与当前用户相同名称的全新用户之外,它与远程机器没有任何关系,因为这是Microsoft的问题。要让断点起作用,请按照开发机器上的路径(可在“工具”>“选项”>“调试”>“符号”中自定义:“在此目录中缓存符号”)复制应用程序的.pdb文件到该目录。每次新版本都必须将它们复制过去,除非有自动执行此操作的选项;我还没有检查过,因为我还没有停止庆祝远程调试成功。
现在应该可以一切正常了。
当然可以。
您可以在不安装Visual Studio的情况下安装msvsmon。
我自己在几台机器上都这么做过。
棘手的部分在于授权-在本地计算机上运行VS的用户需要在远程计算机上拥有特殊权限。
微软有一些文章详细解释了这些细节- http://msdn.microsoft.com/en-us/library/bt727f1t.aspx.
还有一种方式,我更喜欢(如果您有快速的互联网连接)。
在远程桌面连接中,您不需要下载或安装任何东西。
You can share your disk C:
while connecting via Remote Desktop Connection.
On the remote desktop go to location (depending on your local location)
\\tsclient\C\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Remote Debugger\x64
(optional) Create shortcut to folder or msvsmon.exe on desktop
我能够通过asp.net core 2.1使其工作,与上面的答案唯一的区别是你所连接的进程是dotnet.exe。