自动完成在Visual Studio中不起作用

时间:2017-03-04 15:05:40

标签: c# visual-studio unity3d intellisense

我的脚本有点问题。当我用Visual Studio为Unity编写C#脚本时,似乎我在记事本中工作,没有自动完成(正确吗?)而且我必须写得非常慢。

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

Video with problem

例如,transform类不显示建议或自动填充。

有问题的图片:

enter image description here

  

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

28 个答案:

答案 0 :(得分:161)

没有自动完成,因为脚本显示“杂项文件”而不是项目名称。请查看您问题视频中的下图:

enter image description here

杂项文件”消息可能由于多种原因而发生:

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

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

3 。可能会发生因为Unity已关闭然后重新打开但不再连接到Visual Studio。打开Visual Studio时,您会收到“杂项文件”并且没有自动完成。

4 。如果未安装 Visual Studio Tools for unity ,就会发生这种情况。

5 。当您从Unity创建脚本时,请在Unity完成处理之前或圆形图标动画内容完成动画之前快速打开它。

大多数情况下,重启Unity和Visual Studio应该解决这个问题。

我无法分辨哪一个导致了这个问题,但我将介绍解决此问题的最可能解决方案。

修复第1部分

1 。从this链接下载并安装 Visual Studio Tools for unity 。在Unity和Visual Studio都关闭的情况下执行此操作。

2 。从Unity编辑器转到编辑 - > 偏好设置 ... - > 外部工具。在外部脚本编辑器下拉菜单中,将其更改为 Visual Studio 2015

enter image description here

修复第2部分

如果新创建的C#文件即将出现为其他,请按照以下说明操作:

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

enter image description here

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

enter image description here

修复第3部分

还没修好?

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

1 。关闭Visual Studio。

2 。从Unity,重新导入项目,转到资产 - > 重新导入所有

enter image description here

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

enter image description here

修复第4部分

还没修好?

单独修复每个C#文件。

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

enter image description here

2 。选择不执行自动完成的脚本,然后右键单击并选择包含在项目中

enter image description here

修复第5部分

尚未确定?

此特定解决方案可归功于chrisvarnz,这似乎适用于多人。

1 。关闭Visual Studio

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

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

  • 的.csproj
  • 。用户
  • 的.sln

示例:

假设您的项目名称名为“Target Shoot”,这些是要删除的文件应如下所示:

  • 目标Shoot.csproj
  • Target Shoot.Editor.csproj
  • Target Shoot.Editor.csproj.user
  • 目标Shoot.Player.csproj
  • Target Shoot.Player.csproj.user
  • 目标Shoot.sln

不要删除任何其他内容。

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

修复第6部分

如果不起作用,请检查您是否遇到this错误:

  

找不到“GetReferenceNearestTargetFrameworkTask”任务

1 。从here安装 Nuget PackageManager

2 .Restart Visual Visual。

有关详细信息,请参阅this答案。

答案 1 :(得分:14)

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

  1. 在解决方案资源管理器中选择损坏的文件。
  2. 打开其属性。
  3. 切换字段"构建操作"来自"编译"到"无"。
  4. 然后将其切换回"编译"。
  5. 这将以某种方式终止Unity和Visual Studio之间的同步。

    Visual Studio下次重新加载项目时,会提示警告。 只需点击"弃牌"。

答案 2 :(得分:7)

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

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

固定!

我发现这个解决方案工作得最好(最简单),多次遇到问题。

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

答案 3 :(得分:5)

此页面帮助我解决了问题。

Fix for Unity disconnected from Visual Studio

enter image description here

在 Unity 编辑器中,选择“编辑”>“首选项”菜单..

选择左侧的“外部工具”选项卡。

从右侧的下拉列表中选择统一版本

点击重新生成文件

大功告成

答案 4 :(得分:4)

  1. 在Visual Studio中选择项目
  2. 点击"刷新"按钮
  3. enter image description here

答案 5 :(得分:4)

如果您已完成上述所有操作但仍无法正常工作,请尝试以下操作: 注意:您应该已经更新了VS。 Screenshot from visual studio

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

我希望它也会对您有所帮助。

答案 6 :(得分:2)

我今天使用Visual Studio 2017 15.4.5与Unity 2017达成了同样的问题。

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

希望这可以帮助处于类似情况的其他人。

答案 7 :(得分:2)

两种替代选择:

修复1

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

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

然后从Unity内部进入PlayerSettings并在“其他设置”下将“Scripting Runtime Version”从Stable 3.5更改为实验4.6。

然而,这并不适合我。

修复2

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

若是,请尝试: 再次启动Visual Studio安装程序。

在Build Tools 2017上,单击Modify,

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

答案 8 :(得分:2)

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

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

  2. 如果您现在在Unity中添加新的c#脚本,并使用Visual Studio(自动)将其打开,则在窗口顶部不是“杂类”,而是“ Assembly-CSharp”,并且自动完成功能有效。

答案 9 :(得分:1)

试试这个它应该有用,因为它对我有用。

转到编辑->首选项->外部工具->外部脚本编辑器Select Scripting Editor

enter image description here

答案 10 :(得分:1)

由于某些奇怪的原因,“使用Unity开发游戏”工具可能会在Visual Studio中被禁用。

要解决此问题。.

  1. 打开Visual Studio
  2. 转到扩展程序→“管理扩展程序”→已安装
  3. 找到“ Visual Studio 2019 Unity工具”
  4. 如果已禁用,请启用
  5. 重新启动VS

Yuli Levtov's answer上记入another Thread

答案 11 :(得分:1)

尝试按Ctrl + Alt + Space(在建议和标准完成模式之间切换)

答案 12 :(得分:1)

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

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

答案 13 :(得分:0)

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

我通过将Unity中的目标更改为-

来解决此问题
  

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

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

答案 14 :(得分:0)

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

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


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

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

答案 15 :(得分:0)

对我有用的是,我将所有代码复制到了损坏的类中,并删除了该文件。 然后,我打开一个空文件并粘贴。

结果:精美的语法亮点又回来了!

答案 16 :(得分:0)

尝试一下

  

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

     

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

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

答案 17 :(得分:0)

以上解决方案均不适用于我。但是,我打开了ProjectName.CSPROJ文件,并手动添加了新文件,它的工作原理类似于charm

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

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

答案 20 :(得分:0)

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

答案 21 :(得分:0)

以上方法之一对我有用,我刚刚找到了解决此问题的方法,
1.首先,转到项目目录并删除.sln文件
2.其次,统一并双击脚本。然后,Visual Studio将打开并出现错误, enter image description here

  1. 然后单击“确定”并关闭Visual Studio编辑器。
  2. 最后,关闭Windows Defender,然后转到项目目录,将出现.csproj文件。只需双击并在Visual Studio编辑器中将其打开,然后打开资产文件夹中的scripts文件夹并打开脚本,自动补全功能就可以正常工作了。

答案 22 :(得分:0)

我的自动完成功能也无法正常运行,因为未安装 Visual Studio Unity工具。因此,在安装该文件后,请删除自动生成的Visual Studio文件。其他人则说您再次打开文件即可解决问题,但事实并非如此。

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

答案 23 :(得分:0)

我解决了在我的Unity项目中配置的WIN上安装相同版本的.NET。 (播放器设置)

答案 24 :(得分:0)

另一个可能的解决方法:

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

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

答案 25 :(得分:0)

适用于Windows或macOS:

下载/安装Visual Studio IDE (with Unity Tools)

安装时,请确保包含

的安装
  

使用Unity进行游戏开发

enter image description here

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

enter image description here

从那里,你应该能够看到你在寻找什么。

例如:

enter image description here

enter image description here

对于Linux(建议):

尝试Monodevelop - Additional Information,它会提供代码完成/提示。

答案 26 :(得分:0)

就我而言,我的电脑上没有安装正确的.net版本。我在我的电脑上安装.net 3.5,这对我有用。

答案 27 :(得分:-1)

尝试组合使用: Ctrl + Alt +空格