Visual Studio失去了与Unity连接的能力,为什么?

32

我正在使用带有Unity的Visual Studio。通常情况下,在VS中,我可以简单地点击“附加到Unity”,它将构建解决方案并确实附加到Unity。

然而,有时候,项目会失去这个“能力”,这意味着突然点击按钮只会构建解决方案而不会附加到Unity。

我真的很想知道那里发生了什么,因为我没有意识到做任何可能导致这种行为的事情。
有一些可能会产生影响的参数:

  • 它只发生在某些Unity项目中:一个项目要么“被感染”,要么从未发生过(在我的观察下)
  • 如果它开始发生,它将始终发生,直到我重新启动PC(关闭VS和Unity是不够的)

你说的感染是指受到恶意软件的影响吗?当你这么说时,我开始怀疑我的项目了。 - MamiBe
我在这里使用“感染”的术语并非指恶意软件的意义,因此要加上引号。我只是想表达如果其中一个项目出现问题,它将保持不变,因此不能自行正确地重新运作。 - Benjamin Zach
15个回答

37

对于我来说(Unity 2020.x 和 VS19),这经常发生。只需关闭 VS,然后在 Unity > 编辑 > 首选项 > 外部工具

点击“重新生成项目文件”(你不需要检查其他任何内容,只需单击该按钮)。

再次启动 VS,它应该像平常一样工作。


2
很遗憾,这对我没有起作用。使用的是Unity 2019.4.x和VS 2019。 - André Gasser
我注意到我正在运行VS 2019版本16.8.2。更新到16.8.4并重新启动Visual Studio后,它又可以工作了。真是个有趣的混乱。 - André Gasser
1
我不得不在之后重新启动Unity,然后它就可以工作了(Unity v2022.2.1f1,VS2019)。 - icepicker

27

在我的工具栏中,“附加到Unity”选项消失了。

在此输入图片描述

但是我还有一个按钮在“调试 -> 附加Unity调试器”中。

在此输入图片描述

希望对某些人有所帮助。

Visual Studio Community 2019 16.7

Unity 2020.1.2f1


对我来说是一样的,但Attach to Unity按钮在哪里? - Jovan
非常有用,谢谢。@Jovan 菜单项就是我需要的东西。一旦它被附加,只需从Unity编辑器内运行您的应用程序,VS就会执行其断点功能。 - orion elenzil

10
为了避免这种情况发生: 当您的代码中有编译错误时,请不要双击Unity Debug Log行,因为它会在抛出错误的行处打开VS,但这会干扰项目文件。
在Unity > Preferences > External Tools > Regenerate Project Files下重新生成项目文件。还要确保Visual Studio在外部工具下设置正确,并且所有Unity依赖项都通过Visual Studio安装程序正确安装。

enter image description here

Visual Studio会提示您重新加载项目,可在VS中选择重新构建整个解决方案并重启Unity和VS。


尝试了许多不同的方法后,对我起作用了。谢谢! - Zimano
谢谢,它为我解决了问题!=D - Ariel Yust
没问题,这是许多项目可能出现的常见修复方法。 - Pfinnn

4
从项目文件夹中删除所有与Visual Studio相关的文件。sln,csproj,vs(隐藏)文件夹。使用Unity Hub重新打开项目,编辑其中一个脚本,所有文件将被生成,并且您将再次看到“Attach to Unity”按钮。

1
这是对我有用的一个!虽然现在没有“vs”文件夹了。删除.sln和.csproj文件解决了问题。 - Matheus Rocha
@MatheusRocha vs 是一个隐藏文件夹。 - Mustafa Ekici
不需要删除csproj文件。只需在Unity编辑器中添加一个新组件(脚本),它就会重新编写项目。 - kor_
@MustafaEkici 我已经打开了显示隐藏文件和文件夹的选项,但是我没有看到vs文件夹。不过这个解决方案还是有效的。 - Matheus Rocha
这就是帮助了我的东西。 - gladimdim
是的,这对我也解决了问题。一旦sln文件被删除,我重新启动了VS和Unity项目,就像魔法般地工作了。 - Alex Moreno

3

在使用Unity时,这是一个相当常见的问题。我和我的同事每个月都会遇到几次。通常情况下,在重启VS / Unity或在最坏的情况下重新启动计算机后,它通常会自动“修复”。

现在,我又遇到了最新的VS2019问题。我尝试过:

  • 生成新的干净项目
  • 重新启动
  • 重新生成所有Visual Studio文件
  • 重新安装VS 2019(干净)
  • 重新安装Unity(它很干净-我只使用一个!编辑器版本)
  • 所有上述建议

这是否与网络有关,或者附加到Unity如何工作?我可以检查一些与此相关的日志文件吗?

上一次发生这种情况时,我需要重新安装Windows。我可能再次处于这种情况。

输入图像描述


你使用的Unity版本是哪个? - Benjamin Zach
1
我已经测试了至少5个不同的Unity版本,从2019.3.26到2020.3.27。我尝试完全卸载软件(包括Unity/Unity hub/VS2019),但它无法与最新的VS2022 beta版配合使用。我怀疑这是一个与网络相关的问题,但我已在wf.msc中解除了阻止,包括入站和出站规则。 - Fam Wired
我可以检查任何日志文件或将调试器附加到devenv.exe吗? - Fam Wired
2
我需要重新安装Windows才能调试我的应用程序,这似乎有些极端。 - Fam Wired

2
我遇到了类似的问题,在文件选项卡下面,是否显示杂项文件?为了解决这个问题,我在解决方案浏览器中右键单击“Assembly C-Sharp”,并按照图片所示重新构建项目。希望这可以帮到你。

Hope this helps.


3
重建解决方案或项目并不能解决这个问题。 - Benjamin Zach

2

通常只需重新启动Visual Studio即可解决此问题。微软在去年12月初左右已经修复了这个问题。之前每次创建新的脚本文件时都会出现这个问题。

请确保您已安装了最新的Visual Studio补丁以及“Visual Studio Tools for Unity”。

注:Original Answer翻译成"最初的回答"


2
很不幸,即使是最新的VS补丁和“Visual Studio Tools for Unity”,这仍然会发生,并且重新启动VS对我来说是不够的。 - Benjamin Zach
这个问题在其他地方似乎已经消失了,你使用的是哪个版本的VS和Unity? - BugFinder
VS 15.9.17 和 Unity 2019.1.11 - Benjamin Zach
它可能意味着您的计算机有些奇怪,或者您安装了某种插件导致它出现问题。 - BugFinder

1
我曾经遇到过这个问题,解决方法是重新连接Visual Studio和Unity 编辑 > 首选项 > 外部工具 > 外部脚本编辑器 还要检查是否列出了正确的Visual Studio版本。

1

对于Unity 2020.1.1及以上版本
在VisualStudio19中:
进入"Build" -> "Rebuild Solution"

enter image description here


请在回答中更加详细地描述。很多人将长时间阅读这个答案。 - mugume david

1

很遗憾,我还没有答案,但我可以准确地识别症状。如果您运行Unity,然后运行Microsoft的TCPView,它将向您显示Unity.exe正在侦听的UDP端口。有时候Visual Studio连接时会有一些偏差,当然,如果它试图连接到错误的端口,它永远不会起作用。请参见此图像:Wrong ports being used.

根据Unity开发人员之一的说法,Unity.exe会在特定端口上通过多播广告宣传调试器端口,但显然存在一个错误。有时候Unity会说无法使用特定端口,责怪其他进程或防火墙规则。我在TCPView中观察,没有人使用该端口,我的防火墙已禁用。它只是有缺陷并且得到了一些无法正确处理的错误。这里没有答案,只有数据。多年来它只是半工作状态。


非常有见地,谢谢。我认为那确实是重点。 - Benjamin Zach
自从Windows更新以来,过去四天中只有一个连接起作用。这破坏了我的生产力。因此,我从Visual Studio集成包中获取了代码,并将调试打印添加到控制台中。在我的情况下,确切的错误是SocketException“Permission denied. An attempt was made to access a socket in a way forbidden by its access permissions.” - Jason Hughes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接