Fixing Visual Studio's IntelliSense in Unity

Fixing Visual Studio’s IntelliSense (auto-complete) in Unity

If you like our article, do take some time to check out the rest of our site! We have plenty of Unity-related posts, tutorials and even some content on web development!

One of the biggest perks of using Microsoft’s Visual Studio to write your Unity scripts is IntelliSense β€” a code completion aid in Visual Studio that offers suggestions as you write your code, and contextually presents you with information about classes, properties and methods that you are working with.

Given Unity’s enormous scripting API, IntelliSense is a tremendously helpful feature, especially for coders who are beginning their foray into developing games and software with Unity; and while we’d love to say that IntelliSense is automatically set up and linked to Unity’s API when you install it with the Unity Editor, sometimes that’s just not the case. So, if you’ve got both Unity and Visual Studio set up, but find that IntelliSense is still not offering Unity API suggestions, then this guide is for you.

Visual Studio's IntelliSense for Unity
If IntelliSense doesn’t automatically offer Unity API suggestions like these, then it isn’t working.

There can be many reasons why IntelliSense is failing to work properly on your device, and we are assuming that you’ve already scoured the Internet a fair bit before stumbling on our article. Hence, we’ve put together a table of contents of sorts below, so if you’ve already tried some of the solutions we have, you can skip right through them.

If you prefer watching a video instead of reading, do check out our video guide for this post too.

  1. Is my IntelliSense not working?
  2. Getting IntelliSense working
    1. Open your scripts from Unity
    2. Setting Unity’s External Script Editor
    3. Visual Studio Tools for Unity
    4. Check your .NET API compatibility level
    5. Check if the Assembly-Csharp solution is loaded
    6. Regenerating your Unity project files
  3. Conclusion
  4. Video guide

Article continues after the advertisement:


1. Is my IntelliSense not working?

For IntelliSense to detect and work with Unity’s API, Visual Studio needs to:

  1. Be linked to the Unity Editor, and;
  2. Have the appropriate extensions installed (read further to find out what they are)

If you’ve installed Visual Studio via Unity Hub, this can have been automatically set up, but not always. Due to the bevy of ways which you can install Unity and Visual Studio, misconfigurations can happen, and you might end up with Visual Studio not integrating itself into Unity, and an IntelliSense feature that is not properly linked to Unity’s API.

We’ve found that, when installing some versions of Unity 2019 and 2020, Visual Studio does not always integrate with Unity’s API by default. So if things are not working properly, it might not be caused by misconfiguration on your end.

Is IntelliSense set up?
If you see these things, then IntelliSense hasn’t been set up on your device.

To check if IntelliSense is properly set up, open any script from the Unity Editor, and look out for 2 things:

  1. Whether the top-left dropdown says Miscellaneous Files. If it does, then IntelliSense is not set up (it has to say Assembly-Csharp.
  2. Try declaring a Unity variable, like a GameObject. If IntelliSense is properly set up, Visual Studio should have an auto-complete suggestion for you before you finish typing.

2. Getting IntelliSense working

So if IntelliSense isn’t working for you, what should you do?

a. Open your scripts from Unity

Before you try anything else from here, first make sure that your scripts are opened from within Unity, i.e. whenever you want to edit your scripts, double-click on them in the Unity Editor so that Visual Studio is opened by Unity.

If IntelliSense still doesn’t work when you do this, then continue onto the steps below:

b. Setting Unity’s External Script Editor

From the Unity Editor, access the Preferences window from Edit > Preferences. Then, click on 1) the External Tools tab.

Setting the External Script Editor
You’ll need to set the External Script Editor.

Set 2) the External Script Editor to the version of Visual Studio that you installed alongside Unity, then click on 3) the Regenerate project files button (if it’s there).

Once that’s done, restart Visual Studio and see if IntelliSense now works. If it still doesn’t, then you might be missing…

If Visual Studio doesn’t appear on the dropdown, you will have to use the Browse… option (pictured above) to find it. It’s typically under C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe for Windows devices.


Article continues after the advertisement:


c. Visual Studio Tools for Unity

To install this, open Visual Studio and go to Tools > Get Tools and Features.

Accessing the Visual Studio Installer
This opens the Visual Studio Installer.

Note: You’ll need administrator permissions to open this window, as it makes changes to the Visual Studio installation on your computer.

Once the installer is open, go to Workloads and find Game development with Unity. Check the box, and then click on the Modify button on the bottom-right corner to begin installation.

Finding the Game development with Unity workload
Install the Game development with Unity workload.

A popup may ask you to close certain processes before beginning installation. If this happens, close your Visual Studio project and the Unity Editor application.

When installation completes, restart both Unity and Visual Studio, then check to see if IntelliSense now works.

The Games development with Unity workload actually installs 2 additional Visual Studio components β€” Visual Studio Tools for Unity and C# and Visual Basic. You can install both modules individually by going to the Individual components tab, and checking both components in the list that is shown.

Finding Visual Studio Tools for Unity

Article continues after the advertisement:


d. Check your .NET API compatibility level

If IntelliSense still refuses to work, you can open the Unity Editor and head to Edit > Project Settings and access the Player (or Player Settings) tab. Scroll down to the Other Settings sub-tab, and find the Api Compatibility Level dropdown under the Configuration heading.

You want to set the Api Compatibility Level to a different option, and see which is the one that works for your device.

Setting the Api Compatibility Level
The Api Compatibility Level setting is nested quite deep in.

e. Check if the Assembly-Csharp solution is loaded

If you have tried all of the above steps, but your Intellisense still doesn’t work, then it may be because you have accidentally unloaded the solution (i.e. what Visual Studio calls their project setting files) for your project. To check if that is the case:

  1. In Visual Studio, go to View > Solution Explorer.
  2. The Solution window should pop up by the side of Visual Studio. Check if there is a tab that says Assembly-Csharp (unloaded). If there isn’t, you likely have not set your external script editor, or downloaded Visual Studio Tools for Unity.
  3. Right-click on Assembly-Csharp (unloaded) and select Reload project. The dropdown on the top left corner of Visual Studio should change from Miscellaneous Files to Assembly-Csharp. If that happens, congratulations! IntelliSense should now be working.
  4. If (3) fails, close Visual Studio and reopen it again.

Below is a GIF demonstrating the steps above.

Reloading your Unity project solution
You may have accidentally unloaded the project solution, which caused IntelliSense to not work.

f. Manually regenerating your Unity project files

If the above solutions we’ve proposed did not work for you, you can also try this solution from one of our comment contributions.

Note: Back up your Unity project before trying this, as we are deleting some essential project files and letting Unity regenerate them.

  1. Close both Visual Studio and Unity on your device.
  2. Remove all .sln and .csproj files in your Unity project folder.
  3. Remove the .vs and Library folders in your Unity project folder.
  4. Re-open the project in Unity, then go to Assets > Open C# Project to open Visual Studio.

3. Conclusion

As with the other articles on the blog, we’d love if you leave a comment below, especially if you:

  1. Find any errors in this article, or;
  2. Find an IntelliSense fix that is not listed in this article

Your comments will add on to the information that is already here, and help other future readers!

4. Video guide

Is this post not visual enough? Perhaps our video guide of this post can help.


Article continues after the advertisement:


There are 26 comments:

  1. If you do all the steps but still doesn’t work like me, you can try to delete Visual Studio through the Visual Studio installer and reinstall it. You need to do step 2 again.

  2. Very helpful! Only thing I would add is that if you’re using perforce or a similar version control system, you need to check out the Assembly-CSharp.csproj in order to change the player api compatability level which ended up fixing my issue. Almost didn’t realize that was the issue, but I caught the error message

  3. Yeah step e. was what what finally fixed it for me. What I was move my game project folder to my desktop for easy access but the .vs and other solution file paths were pointing to the old folder location which was causing intellisense to not work. So if you move your project folder to another destination, follow step e. and ensure the previous steps were already tried too.

  4. Thank you so much. It works! I had been trying a lot. But nothing worked until your way, thanks!

  5. This works for me! I had been trying a lot of possible solutions but nothing worked until your post, thanks!

  6. ps. I found a solution for me, and probably for a lot of Mac users too.
    You have to go in VSCode into settings and search for “useGlobalMono” and then change the “Omnisharp: Use Global Mono” setting from “auto” to “always”.
    here’s the video I got it from
    https://www.youtube.com/watch?v=KJYrRv9cShY

  7. I’ve tried all the proposed solutions, but it still does not work.
    I couldn’t try the “Games development with Unity” because on Mac I didn’t find the tab “Get Tools and Features”.

  8. I thought I had selected Visual Stuio as my External Script Editor – but apparently I hadn’t, and when I did it worked :)

    Thank you very much!

  9. I already has VS2019 16.11.1 installed and working perfectly and also the Unity tools.
    I installed Unity from a download link in a tutorial which pointed to 2017.1.0f. Unity changed this to the latest free version 2020.3.16f and I had the problem described.
    Even though the Unity objects did not highlight and had no auto-complete, the scripts worked fine?
    All I had to do was set the external editor in Unity and then close VS.
    The next time, I opened the script from Unity, which opened VS and magically everything now works.
    Great tips, thanks

  10. Thanks for the article. Point e (e. Regenerating your Unity project files) was the final step I had to do.

  11. Thank you! Your instructions were concise, easy-to-follow, and in my case completely solved this problem. Much appreciated.

  12. I followed this guide and about 5 others that where exactly the same and nothing worked.

    what did work, was right clicking the project and clicking “reload with dependencies”.. This literally fixed it right away.

    Might be worth putting this into the guide.. Because I just nearly started eating my keyboard.

    1. Hey Chris,

      Thanks for taking time out to post this. Is the “reload with dependencies” option in Unity, or in Visual Studio? I want to add your tip into the article, but I don’t know where to find this.

      1. I figured this out taking the hint from the original poster. You right click the project in VS, and select “Load Direct Dependencies of Project” and it instantly worked for me too.

Leave a Reply

Your email address will not be published. Required fields are marked *

Note: You can use Markdown to format your comments.

This site uses Akismet to reduce spam. Learn how your comment data is processed.