自动补全在Visual Studio中不起作用


150

我对脚本有一点问题。当我使用Visual Studio编写Unity的C#脚本时,似乎在记事本中工作,没有自动补全功能(对吗?),我必须写得很慢。

请观看视频。开始时是正常情况(来自教程),第二部分显示了我的问题。

视频有问题

例如,该transform课程不显示建议或自动完成。

有问题的图片:

在此处输入图片说明

Unity版本:5.5.2f1 已安装Visual Studio
2015
Visual Studio Tools for Unity


1
translate.google.com :)制作视频并将其上传到YouTube,以描述错误+1 xd
Timon发布时间

好的,ll try... I have a Little problem with scripts. When I我正在用Visual Studio编写Unity的C#脚本,似乎我在记事本中工作,没有“提示”(对吗?),我必须写得很慢。请观看视频。开始时是正常情况(来自教程),第二部分是我的问题。
CorbenDalas

1
我想说的是您要问的是“自动完成”,而不是工具提示。
马丁·彼得斯

什么Visual Studio版本和什么Unity版本?
程序员

Unity版本:5.5.2f1 / Visual Studio 2015 /安装了Visual Studio Tools for Unity
CorbenDalas

Answers:


339

由于脚本显示的是“ 杂项文件 ”而不是项目名称的名称,因此没有自动完成功能。请看下面的视频,该视频来自您所提问的视频:

在此处输入图片说明

出现“ 其他文件 ”消息的原因有很多:

1。当您从另一个文件夹中打开Unity C#文件而不是从Unity Editor中打开它时,可能会发生这种情况。

2。这也可能发生,因为在Visual Studio仍处于打开状态时Unity崩溃了,从而损坏了一些文件。

3。之所以会发生,是因为先关闭Unity再打开,但不再连接到Visual Studio。打开Visual Studio时,将显示“ 其他文件 ”,并且没有自动完成功能。

4。这可能在未安装Visual Studio Tools for unity时发生。

5。当您从Unity创建脚本时,请在Unity完成处理之前或圆形图标动画素材完成动画制作之前快速将其打开。


大多数情况下,重新启动Unity和Visual Studio应该可以解决此问题。

我无法确定是哪个引起了问题,但是我将介绍解决此问题的最有可能的解决方案。

修复第1部分

1。下载并安装了统一的Visual Studio工具这个链接。在Unity和Visual Studio都关闭时执行此操作。

2。从Unity Editor中,转到编辑 -> 首选项 ...- > 外部工具。在“ 外部脚本编辑器”下拉菜单上,将其更改为Visual Studio 2015

在此处输入图片说明


修复第2部分

如果新创建的C#文件杂类出现,请按照以下说明进行操作:

1。从Visual Studio中,转到“ 工具 -> 选项...- > Unity工具 -> 其他”。在“ 显示连接性图标”下,将其设置为true重新启动Visual Studio。

在此处输入图片说明

2。重新启动后,连接图标现在在Visual Studio中应该可用。单击它,然后选择要连接的Unity实例。现在,红色的“ x”图标应变为棕色的选中标记图标。现在,当您在Unity中创建新的C#文件时,它应该打开而不会说Miscellaneous

在此处输入图片说明


修复第3部分

还是不固定?

重新导入项目,然后打开C#项目。

1。关闭Visual Studio。

2。从团结,通过将重新导入项目资产 - > 重新导入所有

在此处输入图片说明

3。现在,通过转到Assets- > Open C#Project在Visual Studio中打开该项目。这将重新加载项目并修复可能的解决方案文件问题。

在此处输入图片说明


修复第4部分

还是不固定?

分别修复每个C#文件。

1。单击显示所有文件图标。

在此处输入图片说明

2。选择不会自动完成的脚本,然后右键单击并选择“ 包括在项目中”

在此处输入图片说明


修复第5部分

还没有固定?

幸得chrisvarnz对于这似乎已经工作了多人这种特定的解决方案。

1。关闭Visual Studio

2。转到项目目录,然后删除所有生成的Visual Studio文件。

这些是要删除的文件扩展名:

  • .csproj
  • 。用户
  • .sln

例:

假设您的项目名称称为“ Target Shoot”,这些就是要删除的文件的样子:

  • 目标Shoot.csproj
  • 目标Shoot.Editor.csproj
  • 目标Shoot.Editor.csproj.user
  • 目标Shoot.Player.csproj
  • 目标Shoot.Player.csproj.user
  • 目标射击

不要删除其他任何内容。

3。再次从Unity双击脚本这将生成新的Visual Studio文件,然后打开Visual Studio。这样可以解决您的问题。


修复第6部分

如果不起作用,请检查是否有错误:

找不到“ GetReferenceNearestTargetFrameworkTask”任务

1 .Install 的NuGet PackageManager这里

2。重新启动Visual Visual。

有关更多信息,请参见此答案。


4
感谢其他文件指针!关闭VS,删除VS项目和sln,然后在Unity中双击脚本(因此重新生成项目文件并重新打开VS),这对我来说是固定的。我建议您在“全部重新导入”按钮之前尝试一下,因为对于非平凡的项目而言,这是午餐/过夜。
chrisvarnz

2
这是一个很好的建议。希望任何阅读此内容的人都能看到此评论
程序员

多数情况下,这是由于创建新脚本或将其移动到Unity中的其他文件夹而引起的。每当重启Unity而VS无法解决问题时,我也会删除*.csproj*.sln文件,然后启动Unity than。这通常有效
derHugo

1
在尝试了所有其他建议之后,@ chrisvarnz解决方案为我工作。
gollumullog

1
@gollumullog很好。由于该方法适用于多个人,因此我更新了答案,也将其包括在内。
程序员

37

试试这个,

在Unity Editor中,转到菜单,单击编辑->首选项->外部工具->外部脚本编辑器。将其设置为Visual Studio(您已安装的VS版本)。

现在,在菜单栏中,转到“编辑”->“项目设置”->“播放器设置”->“其他设置”->“配置”下->“检查API兼容性级别”->将其更改为已安装的.Net版本。就我而言,我将其设置为.Net 4.x

现在,如果Visual Studio已在运行,请转到Visual Studio,它将要求重新加载项目。重新加载项目。如果无法关闭Visual Studio,请检查它是否有效。现在从Unity Editor中打开cs文件,现在它应该可以工作了。


我也一样,谢谢!尝试了所有方法,但只有此操作才能解决。
Shadowmak

1
这是真正的答案。这需要在顶部!
Mark Purnell

这也对我有用。另外,我在Unity 2020.2.0a13中所做的另一件事是取消选中并再次检查“编辑/项目设置/播放器/其他设置:自动图形API”中的标记。重新启动Visual Studio之后,自动完成功能又恢复了:D
Ant100

14

我找到了另一种更方便地解决此问题的方法:

  1. 在解决方案资源管理器中选择损坏的文件。
  2. 打开其属性。
  3. 将“构建操作”字段从“编译”切换为“无”。
  4. 然后将其切换回“编译”。

这将以某种方式终止Unity和Visual Studio之间的同步。

下次Visual Studio重新加载项目时,它将提示警告。只需单击“放弃”。


7

在Visual Studio中卸载并重新加载项目:

  • 解决方案资源管理器中右键单击您的项目
  • 选择卸载项目
  • 选择重新加载项目

固定!

我发现此解决方案在多次遇到问题后,效果最佳(最简单)。

资料来源:https : //alexdunn.org/2017/04/26/xamarin-tips-fixing-the-highlighting-drop-in-your-xamarin-android-projects/


谢谢您的帮助!这个工作,但我觉得我们又回到了20世纪90年代,我们需要重新启动Windows,只是这一次是2017年VS
user3053247

4
  1. 在Visual Studio中选择项目
  2. 点击“刷新”按钮

在此处输入图片说明


1
哇!没有其他对我有帮助;重新安装VS,甚至重新安装Unity,以便重新安装VS,删除.sln和.cjsproj文件,以便重新生成它们。什么都没有帮助..但是最后,在解决方案资源管理器中单击一个简单的按钮以显示文件夹似乎可以做到:o
anantt

3

如果您已完成上述所有操作但仍无法正常工作,请尝试以下操作:注意:您应该已经更新了VS。 视觉工作室的屏幕截图

转到Unity>编辑>首选项>外部工具>外部脚本编辑器。 Unity截图 对于我来说,我没有为外部脚本编辑器选择“ Visual Studio”,它不起作用。一旦我选择了这个,并从一开始双击c#文件,它就开始工作。

希望对您有帮助。


2

我今天在使用Visual Studio 2017 15.4.5和Unity 2017时遇到了同样的问题。

我可以通过右键单击Visual Studio中的项目并将目标框架从3.5更改为4.5来解决此问题。

希望这对其他在类似情况下的人有所帮助。


2

两种选择:

修复1

@singleton向我指出了这个方向。由于项目是自动生成的,因此您不应在Visual Studio中更改目标,而应在Unity中进行更改。

首先删除自动生成的Visual Studio文件:.csproj .user .sln

然后从Unity内转到PlayerSettings,然后在“其他设置”下,将“脚本运行时版本”从稳定版3.5更改为实验版4.6。

但是,这并不能解决我的问题。

修复2

我注意到所有对Unity相关代码的引用都标有黄色警告。检查您的错误日志,看看是否是这种情况。特别要看是否收到以下错误:getreferenceNearestTargetframeworkworkTask

如果是这样,请尝试:重新启动Visual Studio安装程序。

在Build Tools 2017上,单击Modify,

确保选中“ Nuget目标和构建任务”。如果您单击“通用Windows平台”开发,则应打勾。


1

我通过从Visual Studio本身而不是统一编辑器创建.cs文件找到了解决方案

  • 右键单击解决方案资源管理器中的项目文件夹
  • 添加>新项目
  • 在右上方的搜索字段中输入“ unity”
  • 选择“ CSharp MonoBehaviour”
  • 在底部命名您的脚本,然后单击添加

1
如果您已经创建了脚本,但是突然出现此问题,该怎么办?您要删除所有脚本,然后从Visual Studio中重新创建它们吗?
程序员

@Programmer好,我会用您的第4部分解决方案来修复已经出错的脚本,但是我总是使用Visual Studio创建新脚本,因为除非您从Visual Studio创建文件,否则您的解决方案都不会阻止新脚本出错
弗雷迪·罗米

1

就我而言,我的PC上未安装正确的.net版本。我在PC上安装了.net 3.5,它对我有用。


您的回答让我想到了将Unity Player设置中的API兼容性级别从.Net 2.0更改为.Net 4.x的想法。然后在Visual Studio中重新加载该项目。现在一切正常。
Juned Khan Momin19年

1

我遇到的问题是C#项目的目标是另一个.NET Framework(4.7.2),而Unity项目的目标却是另一个(.NET 3.5)。

我通过更改Unity中的目标来解决此问题-

文件->构建设置->播放器设置->其他设置-> API兼容级别:将其设置为已经安装的.NET版本(在此处检查.NET版本)。就我而言,是4.x

此后,Visual Studio可以正常工作,并且自动更正也已修复。


这对我有用。我将我的API兼容性级别更改为.Net 4.x,然后Visual Studio要求重新加载该项目。我重新加载了该项目。然后我关闭了Visual Studio,从Unity Editor中打开了cs文件,现在一切正常。
Juned Khan Momin


0

对于Windows或macOS:

下载/安装Visual Studio IDE(使用Unity工具)

安装时,请确保包括安装

使用Unity开发游戏

在此处输入图片说明

然后使用Unity(您可以双击一个C#文件),打开一个新的C#项目,Visual Studio IDE应该使用新的项目结构打开。

在此处输入图片说明

从那里,您应该能够看到想要的东西。

例如:

在此处输入图片说明

在此处输入图片说明

对于Linux(建议):

尝试MonoDevelop的 - 其他信息,它提供了代码完成/提示。



0

由于未安装Visual Studio Tools for Unity,因此我的自动完成功能也不起作用。因此,在安装该文件后,请删除自动生成的Visual Studio文件。其他人则说您再次打开文件即可解决问题,但事实并非如此。

诀窍是:无需正常双击文件,而是需要通过右键单击然后单击“打开C#项目”从Unity打开C#文件。


0

以上解决方案均不适合我。但是,我打开了ProjectName.CSPROJ文件,并手动添加了新文件,它的工作方式就像魅力


0
  • 转到“工具”菜单上的“选项”,然后在“环境”节点中选择“文档”。(如果文档未出现在列表中,请在“选项”对话框中选择“显示所有设置”。)
  • 在“解决方案资源管理器中的其他文件”上打勾,然后单击“确定”。(此选项在解决方案资源管理器中显示“其他文件”节点。其他文件是与项目或解决方案没有关联的文件,但如果您勾选此选项,则可以在解决方案资源管理器中显示,以方便您使用。)
  • 在解决方案资源管理器中的“其他文件”下找到您的文件。然后将您的文件拖放到应属于的位置,瞧!这会将文件复制到放置的位置。现在,您可以安全地删除“杂项文件”文件夹下的旧文件。

积分:https : //stackoverflow.com/a/47662523/10471480


如果“脚本”文件夹不可见:

  • 在解决方案资源管理器中单击“显示所有文件”
  • 找到脚本文件夹。
  • 右键单击脚本,然后选择“包含在项目中”


0

请记住,如果您使用的是ReSharper工具,它将覆盖IntelliSense并显示其自身。要更改此设置,请在VS上转到“扩展”->“ ReSharper”->“选项”->“ IntelliSense”->“常规”,然后选择“ Visual Studio”而不是“ ReSharper”。


0

在重新启动和/或重新安装VS之前,首先尝试打开任何其他项目,以查看Intellisence是否有效,如果可以,那么问题可能出在当前项目上。首先,最可能的受害者是带有待定更新的NUGET软件包。为了解决这个问题,

  1. 右键单击参考
  2. 继续管理NUGET软件包下的NUGET软件包
  3. 进行更新安装更新并重新检查智能

0

我尝试了所有这些方法,但最终发现我需要在解决方案资源管理器中右键单击该解决方案,并添加现有项并在Window的资源管理器中找到C#程序集文件。似乎有成千上万的不同问题使您出现此错误,这可能是最简单的解决方案。如果您从统一位置双击脚本,似乎并不会拖拽程序集。


0

以上方法之一对我有用,我刚刚找到了解决此问题的方法:
1.首先,转到项目目录并删除.sln文件
。2.第二,转到unity并双击脚本。然后,Visual Studio将打开并出现错误, 在此处输入图片说明

  1. 然后单击确定并关闭Visual Studio编辑器。
  2. 最后,关闭Windows Defender,然后转到项目目录,然后会有.csproj文件。只需双击并从Visual Studio编辑器中打开它,然后打开资产文件夹内的scripts文件夹,然后打开脚本,自动完成功能就可以正常工作了。

0

使用Visual Studio Community 2019和Unity 2019.3更新2020:

1)以管理员身份打开Visual Studio Installer,选择以修改当前安装并添加“ Unity游戏开发”

2)如果您现在在Unity中添加一个新的c#脚本,并使用Visual Studio(自动)将其打开,则该窗口的顶部不会将其描述为“其他”,而是会显示为“ Assembly-CSharp”,并且自动完成功能会起作用。


0

另一个可能的解决方法:

  1. 在项目窗口中,单击“资产”文件夹
  2. 右键单击,然后创建-> C#脚本
  3. 双击,然后等待。

由于某种原因,这项工作。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.