358

When I want to edit C# Unity scripts, they open in Visual Studio. It is supposed to provide auto complete for all Unity related code, but it doesn't work.

Here you can see the missing functionality:

Video of missing autocomplete feature

As seen, the transform object does not open the autocomplete menu.

Unity version: 5.5.2f1
Visual studio 2015
Visual Studio Tools for Unity is installed

Neuron
  • 5,141
  • 5
  • 38
  • 59
CorbenDalas
  • 3,743
  • 3
  • 9
  • 7
  • 3
    https://translate.google.com/ :) Making a video and uploading it to YouTube for describing the error +1 xd – Timon Post Mar 04 '17 at 15:08
  • Ok, A`ll try... I have a Little problem with scripts. When I`m writing C# scripts for Unity with Visual studio it seems like I`m working in notepad, there are no "tips" (correct?) and I must write it very slowly. Please, watch the video. At start is normal situation (from tutorial), second part is my problem. – CorbenDalas Mar 04 '17 at 15:08
  • 1
    I'd say you are asking about 'autocompletion', not tooltips. – Martijn Pieters Mar 04 '17 at 15:24
  • What Visual Studio version and what Unity version? – Programmer Mar 04 '17 at 15:25
  • Unity version: 5.5.2f1 / Visual studio 2015 / Visual Studio Tools for Unity is installed – CorbenDalas Mar 04 '17 at 15:30
  • This article here documents all the possible solutions pretty well: https://blog.terresquall.com/2020/11/fixing-visual-studios-intellisense-autocomplete-in-unity/ – John Doe Apr 11 '22 at 07:24
  • Strongly recommend jetbrains rider as a substitute for visual studio – TheForgot3n1 Jul 05 '22 at 06:41

36 Answers36

728

There is no auto-completion because the script says "Miscellaneous Files" instead of the of the name of the Project. Take a look at the image below that came from the video in your question:

enter image description here

The "Miscellaneous Files" message can happen for many reasons:

  1. It can happen when you open your Unity C# file from another folder instead of opening it from Unity Editor.

  2. This can also happen because Unity crashed while Visual Studio is still open therefore corrupting some files.

  3. It can happen because Unity was closed then re-opened but is no longer connected to Visual Studio. When Visual Studio is opened you get "Miscellaneous Files" and no auto-completion.

  4. This can happen when Visual Studio Tools for unity is not installed.

  5. When you create a script from Unity then quickly open it before Unity finish processing it or before the round icon animation stuff finish animating.


Most of the times, restarting Unity and Visual Studio should fix this.

I can't tell which one is causing the problem but I will cover the most likely solution to fix this.

Fix Part 1:

  1. Download and Install Visual Studio Tools for unity from this link. Do this while Unity and Visual Studio are both closed.

  2. From Unity Editor, go to EditPreferences... → External Tools. On the External Script Editor drop down menu, change that to Visual Studio 2015.

    enter image description here


Fix Part 2:

If newly created C# files are coming up as Miscellaneous then follow the instruction below:

  1. From Visual Studio, go to ToolsOptions...Tools for UnityMiscellaneous. Under Show connectivity icon, set it to true then restart Visual Studio.

    enter image description here

  2. When you re-start, connection icon should now be available in Visual Studio. Click it then choose the Unity instance to connect to. The red 'x' icon should now turn into a brown checkmark icon. Now, when you create a new C# file in Unity, it should open without saying Miscellaneous.

    enter image description here


Fix Part 3:

Still not fixed?

Re-import project then open C# Project.

  1. Close Visual Studio.

  2. From Unity, re-import project by going to AssetsReimport All.

    enter image description here

  3. Now, open the project in Visual Studio by going to AssetsOpen C# Project. This will reload the project and fix possible solution file problems.

    enter image description here


Fix Part 4:

Still not fixed?

Fix each C# file individually.

  1. Click on Show All Files icon.

    enter image description here

  2. Select the script that doesn't do auto-complete then right-click and select Include In Project.

    enter image description here


Fix Part 5:

Not fixed yet?

Credit goes to chrisvarnz for this particular solution which seems to have worked for multiple people.

  1. Close Visual Studio

  2. Go your project directory and delete all the generated Visual Studio files.

    These are the files extensions to delete:

    • .csproj
    • .user
    • .sln

    Example:

    Let's say that the name of your Project is called Target_Shoot, these are what the files to delete should look like:

    • Target_Shoot.csproj
    • Target_Shoot.Editor.csproj
    • Target_Shoot.Editor.csproj.user
    • Target_Shoot.Player.csproj
    • Target_Shoot.Player.csproj.user
    • Target_Shoot.sln

    Do not delete anything else.

  3. Double click on the script again from Unity which should generate new Visual Studio file then open Visual Studio. This may solve your problem.


Fix Part 6:

If not working, check if you are having this error:

The "GetReferenceNearestTargetFrameworkTask" task was not found

  1. Install Nuget PackageManager from here.

  2. Restart Visual Studio.

See this answer for more information.


Fix Part 7

Make sure all of the projects are loaded. In Solution Explorer it should tell you # of # projects. If all of the projects are not showing, right click on "Solution (# of # projects)" and click Load Projects.

Lasitha Yapa
  • 4,309
  • 8
  • 38
  • 57
Programmer
  • 121,791
  • 22
  • 236
  • 328
  • 11
    Thanks for the miscellaneous files pointer! Closing VS, deleting the VS projects and sln, and then double-clicking a script in Unity (therefore regenerating the project files and reopening VS) fixed it for me. I'd recommend trying that before the "reimport all" button as that is lunch/overnight for non-trivial projects. – chrisvarnz Nov 06 '17 at 14:28
  • 3
    That's a good advice. Hope anyone reading this can see this comment – Programmer Nov 06 '17 at 18:05
  • 1
    This is most times caused by creating new scripts or moving them to different folders within Unity. Whenever restarting Unity and VS doesn't solve it, I simoly also delete the `*.csproj` and `*.sln` files and start Unity than. This usually works – derHugo Nov 16 '17 at 17:37
  • Yes, deleting files may also work since VS will re-generate the data back again. Note – Programmer Nov 17 '17 at 01:38
  • Thank you. #2 worked for me. Why does "Show connectivity icon" (setting it to true) fix this? – Xonatron Nov 19 '17 at 06:24
  • @Xonatron Setting it to true won't simply fix it. You need to do the next step in part 2 which will connect Visual Studio to Unity instance. If simply setting it to true worked then you are lucky. You are welcome. – Programmer Nov 19 '17 at 06:28
  • Odd, that it worked for me. I just found another solution, which I posted below, which is unloading and reloading the project. – Xonatron Nov 21 '17 at 21:28
  • 2
    @chrisvarnz solution worked for me after trying all of these other suggestions. – gollumullog Nov 22 '17 at 16:54
  • 2
    @gollumullog Good. Since that worked for multiple people, I have updated my answer to also include that. – Programmer Nov 22 '17 at 17:36
  • I followed all of the instructions except step 5 above and nothing worked, but before deleting all the files in step 5 I closed visual studio and reopened it using the sln file from the file explorer and everything showed up properly. After that I closed visual studio and opened a script file from Unity and it was still working. Before opening visual studio from the sln file from the file explorer I had closed VS multiple times throughout the process listed above and reopened it by clicking on a CS file in Unity or by "Assets --> Open C# Project" – tkd_aj Nov 29 '17 at 19:05
  • 1
    @tkd_aj Looks like you combine #3(Assets --> Open C# Project) and #5 to me. Glad you got it working – Programmer Nov 29 '17 at 19:14
  • Another (easier) way to manually add files to the solution/project is to go File>Move Script.cs>Assembly-CSharp – Abel Dantas Jul 13 '18 at 12:40
  • The Navigation Bar (where the Miscellaneous files appears) can be opened going to Tools -> Text Editor -> All languages -> Show Navigation Bar. If it doesn't show up change the file selection – Darkgaze Oct 03 '18 at 14:02
  • I have the Nuget package manager error. In VS 2017 this package is included with the installation of the Unity Tools in VS, if you execute the installer and click "Modify" it will show up in the list. You can either try to repair installation, or remove both packages,and then add them again if you don't want to lose your settings. My problem was that the properties window could not be shown, there must be some error. Updating VS and reinstalling the unity tools and package manager worked. – Darkgaze Oct 03 '18 at 14:14
  • excluding file from project then including back solved the problem in my case – Asad Oct 09 '18 at 02:42
  • For me this worked: open the .sln file in Explorer (found in your Unity project root folder) instead of double clicking on the C# script file in Unity. – Jan May 24 '19 at 07:30
  • The same problem also happened with me in Unity 2019.2 & Visual Studio 2019. But, solved it with your solution. Now VS running smooth as butter. – Anirban Das Jul 31 '19 at 18:31
  • This right here is the ONLY thing that worked for me. Specifically, "In Unity go to Edit -> Preferences -> External Tools. On the External Script Editor drop-down menu, change that to Visual Studio." – andrewlundy Feb 28 '20 at 18:50
  • Fix part 1 worked for me using Unity 2019.3 and visual studio community 2019. Thanks! – dahui Apr 11 '20 at 15:33
  • Thanks, "Fix Part 1" worked for me. External Script Editor set to "Visual Studio 2019 (Community)". I suspect the problem coming with Visual Studio installed prior Unity – Remy Mellet May 03 '20 at 08:18
  • You are a savior my friend, Thanks for the help. First step worked for me. – Shivansh Jul 17 '20 at 18:40
  • Fix 3 and 5 work for my case. – Mai Hai Mar 09 '22 at 03:19
  • Good sir @Programmer, I have issues for autocomplete in the Plugin I am creating (located under Packages), but only for UnityEngine* imports. This is only happening with (relatively) up-to-date UnityEditors, not the ones from last year. Anyone experienced anything similar? – el_chupacabra Nov 03 '22 at 08:19
  • Opening C# Project isn't opening it in Visual Studio. – Jonathan J. Pecany Jan 11 '23 at 23:40
  • Solved with part 1 – Faizan Ahmad Mar 27 '23 at 10:40
134

Try this,

  1. In Unity Editor Go to Menu, Click on Edit -> Preferences -> External Tools -> External Script Editor. Set it to Visual Studio (your installed version of VS).

  2. Now in Menubar go to Edit -> Project Settings -> Player Settings -> Other Settings -> Under Configuration -> Check API Compatibility Level -> Change it to your installed .Net version. In my case I set it to .Net 4.x

Now if Visual Studio is running already go to Visual Studio, it will ask to reload project. Reload the project. Check if it works, if not close Visual Studio. Now Open cs file from Unity Editor, and now it should work.

Neuron
  • 5,141
  • 5
  • 38
  • 59
Junaid Pathan
  • 3,850
  • 1
  • 25
  • 47
20

I found another way to fix this issue in a more convenient manner:

  1. Select the broken file in Solution Explorer.
  2. Open its Properties.
  3. Switch field "Build Action" from "Compile" to "None".
  4. Then switch it back to "Compile".

This will kill the synchronization between Unity and Visual Studio somehow.

The next time Visual Studio will reload the project, it will prompt a warning. Just click on "Discard".

Michaël Nguyen
  • 253
  • 4
  • 6
19

If you have done all of the above and still isn't working , just try this: Note: you should have updated VS. Screenshot from visual studio

Goto Unity > edit> preference >External tools> external script editor. Unity screenshot Somehow for me I had not selected "visual studio" for external script editor and it was not working. As soon as i selected this and doubled clicked on c# file from unity it started working.

I hope it helps you too.

yOhaan
  • 436
  • 4
  • 5
  • 1
    Great for people who had visual studio installed before Unity, this worked for me after also installing the VS tool for Unity. – Carol Oct 08 '21 at 02:16
16

Unload and reload the project, in Visual Studio:

  • right click your project in Solution Explorer
  • select Unload Project
  • select Reload Project

Fixed!

I found this solution to work the best (easiest), having run into the problem multiple times.

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

Xonatron
  • 15,622
  • 30
  • 70
  • 84
12

This page helped me fix the issue.

Fix for Unity disconnected from Visual Studio

enter image description here

In the Unity Editor, select the Edit > Preferences menu.

Select the External Tools tab on the left.

For External Script Editor, Choose the Visual Studio version you have.

Click regenerate Files

You Done

vahid
  • 258
  • 2
  • 8
dangalg
  • 6,398
  • 4
  • 27
  • 37
  • This solution worked for me. Then, after opening a script file, the Visual Studio editor recommended me to install Tools for Unity, and after the update the auto-complete works just fine. Thanks! – andreini Aug 25 '23 at 12:45
8
  1. Select project in Visual Studio
  2. Click "Refresh" button

enter image description here

Glebka
  • 1,420
  • 3
  • 20
  • 37
  • 3
    Whoa! Nothing else helped for me; Re-Install of VS, even reinstalling Unity so that it reinstalled VS, deleting .sln and .cjsproj files so that they were regenerated. nothing helped .. but finally a simple click in the solution explorer to show folders seemed to do it :o – antont Jul 05 '18 at 12:24
4

I hit the same issues today using Visual Studio 2017 15.4.5 with Unity 2017.

I was able to fix the issue by right clicking on the project in Visual Studio and changing the target framework from 3.5 to 4.5.

Hope this helps anyone else in a similar scenario.

singleton
  • 161
  • 4
4

Two Alternative Options:

Fix 1

@singleton pointed me in this direction. Instead of changing the target in Visual Studio you should change it in Unity since the project is auto-generated.

First delete the auto generated Visual Studio files: .csproj .user .sln

Then from within Unity go to PlayerSettings and under 'Other Settings' change the 'Scripting Runtime Version' from Stable 3.5 to Experimental 4.6.

However, that didn't fix it for me.

Fix 2

I noticed all of the references to Unity related code was marked with a yellow warning. Check your error logs and see if this is the case. In particular see if you get the following error: getreferenceNearestTargetframeworkTask

If so try: Start Visual Studio Installer again.

On the Build Tools 2017, click Modify,

Ensure that "Nuget targets and build tasks" are ticked. This should become ticked if you click on Universal Windows Platform development.

ickydime
  • 1,051
  • 10
  • 22
4

Update 2020 with Visual Studio Community 2019 and Unity 2019.3:

  1. Open Visual Studio Installer as Administrator, select to modify your current installation and add "Game development for Unity"

  2. If you add a new c# script in Unity now, and open it (automatically) with Visual Studio, it is not described as "Miscellaneous" at the top of the window but with "Assembly-CSharp", and the autocomplete works.

Neuron
  • 5,141
  • 5
  • 38
  • 59
Andi Schroff
  • 1,156
  • 1
  • 12
  • 18
3

i found my solution by creating the .cs file from visual studio itself instead of unity editor

  • right click on project folder in solution explorer
  • add > new item
  • type "unity" on the search field on the top right
  • select "CSharp MonoBehaviour"
  • name your script on the bottom and click Add
  • 2
    What if you have already created the scripts but then suddenly, this issue arises, are you going to delete all the scripts and create them again from Visual Studio? – Programmer Dec 06 '17 at 23:22
  • 1
    @Programmer well i'd use your Part 4 solution to fix the already error script but i always use visual studio to create new script because none of your solution stopped the new script from getting error unless i created the file from visual studio – Fredy Rommy Sianturi Dec 11 '17 at 09:36
3

In my case, correct .net version was not installed on my PC. I install the .net 3.5 on my pc and that worked for me.

  • 1
    Your Answer gave me the Idea to Change the API Compatibility Level in Unity Player Settings from .Net 2.0 to .Net 4.x. And then reload the project in Visual Studio. Now everything works fine. – Junaid Pathan Jun 17 '19 at 10:14
3

For Windows or macOS:

Download/Install the Visual Studio IDE (with Unity Tools)

When installing, make sure you include installation of

Game development with Unity

enter image description here

Then using Unity (you can double click one of your C# files), open a new C# project and the Visual Studio IDE should open with your new project structure.

enter image description here

From there, you should be able to see what you are looking for.

For example:

enter image description here

enter image description here

For Linux (suggestion):

Try Monodevelop - Additional Information, it provides code completion/hints.

Brien Foss
  • 3,336
  • 3
  • 21
  • 31
3

My autocomplete also didn't work because Visual Studio Tools for Unity wasn't installed. So, after you install that, delete the auto generated Visual Studio files. Others said that you open file again and the problem is solved but it's not.

The trick is: instead of normally double-clicking the file, you need to open the C# file from Unity by right click and then "Open C# Project".

Stephen Rauch
  • 47,830
  • 31
  • 106
  • 135
3

The issue I faced was that the C# Project was targeting a different .NET Framework (4.7.2), whereas the Unity project had a different target (.NET 3.5).

I fixed this by changing the target in Unity as-

File -> Build Settings -> Player Settings -> Other Settings -> API Compatibility Level : Set it to the .NET version you already have installed (Check your .NET Version here). In my case, it was 4.x

After this, Visual Studio worked perfectly and autocorrect was fixed too.

rkbroach
  • 31
  • 5
  • 2
    This worked for me. I changed my API Compatibilty Level to .Net 4.x, and then Visual Studio asked to Reload the Project. I reloaded the project. Then I closed Visual Studio, Opened cs file from Unity Editor and now everything works fine. – Junaid Pathan Jun 17 '19 at 10:19
3

Try pressing Ctrl + Alt + Space (which toggles between suggestion and standard completion modes)

atymic
  • 3,093
  • 1
  • 13
  • 26
3

For some odd reason, the "Game development with Unity" tool can become disabled in Visual Studio.

To fix this..

  1. Open Visual Studio
  2. Go to Extensions → "Manage Extensions" → Installed
  3. Find "Visual Studio 2019 Tools for Unity"
  4. If it is disabled, enable it
  5. Restart VS

Credit to Yuli Levtov's answer on another Thread

Neuron
  • 5,141
  • 5
  • 38
  • 59
3

The following works for me.

Go to Edit->Preferences->External Tools->External Script Editor Select Scripting Editor

enter image description here

ballade4op52
  • 2,142
  • 5
  • 27
  • 42
Omdevsinh Gohil
  • 145
  • 1
  • 4
2

I solved to install the same version of .NET on WIN that was configured in my Unity project. (Player Settings)

Bruno Araujo
  • 435
  • 4
  • 15
2

None of the above solutions worked for me. However I opened the ProjectName.CSPROJ file and manually added the new file and it worked like charm

Neuron
  • 5,141
  • 5
  • 38
  • 59
2
  • Go to Options on the Tools menu and then select Documents in the Environment node. (If Documents does not appear in the list, select Show all settings in the Options dialog box.)
  • Put a tick on "Miscellaneous files in Solution Explorer" and Click OK. (This option displays the "Miscellaneous Files" node in Solution Explorer. Miscellaneous files are files that are not associated with a project or solution but can appear in Solution Explorer for your convenience if you tick this option.)
  • Locate your file in the Solution Explorer under "Miscellaneous Files". Then drag and drop your file to where it should belong and voila! This will copy the file to where you drop it. You may now safely delete the older file under Miscellaneous Files folder if you wish to do so

Credits: https://stackoverflow.com/a/47662523/10471480


In case Scripts folder is not visible:

  • Click on "Show all files" in Solution Explorer
  • Locate the Scripts folder.
  • Right Click on Scripts and select "Include in Project"
Mangaldeep Pannu
  • 3,738
  • 2
  • 26
  • 45
2

What worked me is that I copied all the code inside the broken class and removed that file. Then, I opened an empty file with the same name and pasted back.

Result: beautiful syntax highlights came back!

Eray Alparslan
  • 806
  • 7
  • 12
2

Keep in mind that if you are using the ReSharper tool, it will override the IntelliSense and show it's own. To change that, on VS, go to Extensions -> ReSharper -> Options -> IntelliSense -> General then choose Visual Studio and not ReSharper.

2

Before restarting and/or re-installing VS, First try opening any other of your projects to see if Intellisence works, if it does, then issue probably lies with your current project. First, most probable victim would be the NUGET packages with pending updates. To Fix this,

  1. Right click on references
  2. Proceed to Manage NUGET Packages Under NUGET Packages
  3. proceed to updates Install Updates and recheck Intellisence
2

I tried all of these but ended up finding out that I needed to right-click the solution in Solution Explorer and add existing items and find the C# assembly file in Window's Explorer. There seem to be a bazillion different problems that give you this error, this is likely the most simple solution. If you double click on your script from unity, it does not seem to drag the assembly along.

2

Another possible fix:

  1. In the project window, click on the Assets folder
  2. Right click, and Create -> C# Script
  3. Double click that, and wait.

For some reason, this work.

Kale_Surfer_Dude
  • 884
  • 5
  • 10
2

"Preferences" -> "External tools" -> set you exteranl tool

Thats one fix. Also for VS you can use ReSharper by JetBrains, but I recommend use Rider. That one is also free for students. It provides less performance than visual studio, but more than VS+Resharper definitely.

Have a good day, mate)

Dan Friedman
  • 4,941
  • 2
  • 41
  • 65
Umar Bhat
  • 39
  • 3
  • Also if you didnt installed package for unity development for VS you can go Visual Studio Installer -> Workloads -> GameDev. with Unity – Umar Bhat Jun 21 '22 at 07:53
  • Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Jun 21 '22 at 10:36
2

These actions solved the problem for my projects in Visual Studio 2022

FIX 1

  • Solution
    • Assembly-CSharp (right-click)
      • Load Entire Dependency Tree

FIX 2

  • Solution
    • Assembly-CSharp
      • References
        • Double click on any lib to force loading
P.O.W.
  • 1,895
  • 1
  • 16
  • 14
1

Try with combination: Ctrl + Alt + Space

taras
  • 6,566
  • 10
  • 39
  • 50
1

one of the above methods are worked for me and I just found a solution to this problem,
1. First, go to the project directory and delete .sln file
2. Second, go to unity and double click your script. Then Visual Studio will be open with an error, enter image description here

  1. Then click ok and close Visual Studio editor.
  2. Finally, turn off your Windows Defender and then go to your project directory and there will be .csproj file. Just double click and open this from your Visual Studio editor and open the scripts folder inside the assets folder and open the scripts and autocompletion will be working perfectly fine.
INDRAJITH EKANAYAKE
  • 3,894
  • 11
  • 41
  • 63
0

Uhm, maybe you can see my guide as an optional method. I got this problem when using Unity 2020 with Visual Studio Code 1.26 To solve problem, I follow below steps:

  1. In stall C# plugin in Visual Studio
  2. Install Mono from this https://www.monodevelop.com/download
  3. Let see where Mono is installed in your Mac by this command which mono. For example, in my Mac, it's /Library/Frameworks/Mono.framework/Versions/Current
  4. Back to C# plugin, let open its setting and change below in setting.json of plugin:
    "omnisharp.monoPath": "/Library/Frameworks/Mono.framework/Versions/Current",
    "omnisharp.useGlobalMono": "always"

Here we go....

dalmate
  • 462
  • 5
  • 13
0

If you are using Resharper with Microsoft Visual Studio, you need go to "Extensions -> ReSharper -> Extensions Manager" and install extension "Unity support". Works like magic!

0

from Unity select Edit option, then ~> Preferences... ~> External Tools, and then turn on Built-In Packages. I tried every solutions, and just this one helped me which I turned it on by a chance!

saleh
  • 315
  • 1
  • 12
0

In Unity, Edit>Preferences>External Tools Click Regenerate project files.enter image description here

Spark
  • 27
  • 5
0

You install this? unity

Install Visual Studio and Unity Download the Visual Studio installer, or open it if already installed. Select Modify (if already installed) or Install (for new installations) for your desired version of Visual Studio. Select the Workloads tab, then select the Game development with Unity workload. If Unity is not already installed, select the Unity Hub checkbox in the Optional section of the installer. Select Modify or Install to complete the installation.

Girent
  • 13
  • 1
0

Newer versions of Unity allow you to install visual studio with Unity compatibility in the setup screen, it does it all automatically for you if you check it off.