记录一次VS2022无法附加到Unity3D2022的情况

目前【暂时】解决了问题,整个过程扑朔迷离到以至于我不知道如何去形容这次遇见的情况。
搜遍全网,国内目前没有可以解决这个问题的博客。有可能仅使用于我自己的情况。
外网unity社区也有相关的问题
遗憾的是,这个问题提出一年多了,仍然没有确切的解决方法。也许只在少数人的电脑上会出现这样的情况。

版本

Visual Studio Community 2022,
Unity 2022.1.18f1c1(事实上2021版本也出现了这样的情况)

出现的问题

这里可以确保环境和组件没有任何问题。
点击VS中的附加到Unity,经过短暂的等待后,没有发生任何事情。下面出现这样的提示
在这里插入图片描述
目标计算机积极拒绝,无法连接。(VS2019甚至不会出现这样的提示。升级到2022后我才排除了VS的问题)
理论上,56800端口应该是Unity进程应该开启监听的端口,我使用netstat查找后并没有发现有这个端口
在这里插入图片描述

最诡异的事情是,这种情况是概率事件。在我几十上百次的尝试中,在外部条件相同的情况下,有时候仅仅是重启了unity,就能成功附加。这是最让人摸不着头脑的情况。
目前暂时得出结论,是Unity开启监听端口时出现了问题。理应开启的端口没有开启。

此外,偶尔会出现“操作无法完成。未指定的错误”的弹窗,原因不明

尝试过的办法

  1. 重启电脑——并不奏效
  2. 重启VS——经过数十次的重启后,事实证明对该问题没有任何的解决
  3. 重启Unity——重复打开同一个工程文件
    在我多达几十次的尝试中,只有在某次刚开机的两次重启中能够成功让VS附加到unity,后面均失效。只有在极少数重启中(大概几十次出现一次吧),可以成功附加
  4. 重新安装VS——我曾重装过VS2019两次,并不奏效
  5. 升级VS——我将VS2019升级到VS2022,在第一次附加时成功附加,之后重试时仍然失败
  6. 重装Unity——从Unity2021升级到2022,并不奏效
  7. 关闭防火墙——检查了防火墙所有规则并关闭了所有防火墙,并不奏效
  8. 删除项目文件中的.vsconfig文件和.vs文件夹——完全不奏效
  9. 在Extern tool选项中重新定向VS,包括手动将其指向 devenv.exe——自欺欺人的做法,完全不奏效
  10. 关闭杀毒软件——不奏效
  11. 关闭其他应用程序——很难完全关闭所有应用程序,不能确定是不是这里出现了问题,但至少我关闭了很多程序,并不会解决问题。
  12. 重新创建一个Unity项目——仍然不能附加,因此排除了乱设置Unity项目配置的情况
  13. 重新构建VS解决方案——不奏效,目前基本排除VS出的问题
  14. 寻找所谓的Preference -> External Tools -> Editor Attaching选项,实际上这只有在unity2019以下的版本才有这个选项
  15. 删除我所有的 Unity Library/obj/log/temp 文件夹并重建整个项目——重建项目并不奏效

并没有选择重装系统或者重买电脑,这是我最后的倔强。

暂时解决的办法

提前说明一下,该方法并不能完全解决问题,只是将附加失败的概率从99%降低到了30%,仍然会出现一些我无法掌握的情况。很有可能在某次重启后,这个方法也不再奏效了。
这个方法来自于unity3D外网社区的一个帖子。
在这里插入图片描述

如图所示,将Edit->Preferences->External Tool 中的Generate .csproj files for中的复选框仅保留Player project,然后点击Regenerrate project files 重新构建文件,之后重启Unity即可。
另外,外网也有点击Regenerrate project files以重新构建项目就能解决的情况。在这里我的建议是,不管复选框 里你选了哪些选项,这个按钮你都得点击,并多次尝试。
在这里插入图片描述

值得一提的是,当允许VS附加到Unity时,我的Unity往往会发出如下警告

在这里插入图片描述
至今没有查找到该警告的相关资料,但通常出现这个警告后我的VS才能附加到Unity中。
PS:后面又出现了一次没有警告也能附加的情况。我实在晕了。

接下来在VS中查看一下Unity实例。点击 调试->附加Unity调试程序:
在这里插入图片描述

可以看到Unity开放了56276端口.
使用端口查询指令,发现Unity开放了56276的TCP监听端口,现在一个VS实例与该端口建立通信,现在是正常的情况。
在这里插入图片描述
该方法有一定失败的可能性。如果附加仍然失败,将之前取消勾选的Generate .csproj files for中的选项选上,再次重新构建项目,重启unity,反复尝试即可。

总结&猜测

寻找解决方法至今寻找了三天,目前我也不敢说自己成功解决了问题。在写这篇博客的同时我仍在反复尝试,但仍然经常出现附加失败的情况。
这里仅做一个猜测:Unity在启动的时候会从56000往上的端口随机选取一个端口作为监听其他IDE调试的端口,有时候会遇到一些不可抗拒的因素导致端口开放失败,也许是进程占用,也许是操作系统的问题,也许是Unity内部的一些BUG。总之,Unity尝试打开一个端口失败,却把这个端口号传递给了VS,VS试图与这个端口进行连接,最后以失败告终。
重新构建项目和反复重启Unity的目的也许是让Unity反复尝试寻找到一个真正能打开的端口。
最后,在真正解决这个问题之前,如果某次VS成功附加上了Unity,那就尽量不要关掉Unity了,万一再也成功不了呢。

在使用Visual Studio 2022配置软件GAMP时,如果在生成解决方案时出现了LNK2019无法解析的外部符号"_imp_timeGetTime@0",可以按照以下方法解决: 1. 打开项目属性:右键点击项目,选择“属性”。 2. 进入链接器设置:在属性窗口中选择“链接器”选项。 3. 添加附加依赖项:在链接器设置中选择“输入”,找到“附加依赖项”。 4. 添加winmm.lib:在附加依赖项中输入“winmm.lib”。 5. 保存更改:点击“确定”按钮保存更改。 通过添加winmm.lib作为附加依赖项,可以解决LNK2019无法解析的外部符号的问题。 在解决该问题时,还可以检查一些其他可能导致无法解析外部命令的原因,例如: - 检查代码文件的匹配性:确保.h和.cpp文件之间的匹配正确。 - 检查库文件的位数:确保链接的静态库.lib的位数和编译的位数一致。比如,如果是32位编译,则需要链接32位的库文件。 总结来说,解决vs2022无法解析外部命令的问题,可以通过添加附加依赖项和检查代码文件匹配性以及库文件位数等方法进行处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Visual Studio 2022配置GAMP出现 LNK2019无法解析外部符号_imp_timeGetTime@0](https://blog.csdn.net/qq_43314095/article/details/126725663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [2022年下半年系统集成项目管理工程师真题卷及解析(案例分析).pdf](https://download.csdn.net/download/weixin_53072519/88269800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [VS无法解析的外部命令的解决办法](https://blog.csdn.net/a1920993165/article/details/123392164)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值