In this section, you'll find solutions to common issues with Visual Studio Tools for Unity, descriptions of known issues, and learn how you can help improve Visual Studio Tools for Unity by reporting errors.
For instructions on installing and updating Visual Studio 2019 for Mac, see the Install Visual Studio for Mac guide. To learn more about other related downloads, see the Downloads page. What's New in Visual Studio 2019 for Mac Visual Studio 2019 for Mac Releases. November 24, 2020 - Visual Studio 2019 for Mac version 8.8.2. The best way to do this could be to add a symlink to the visual studio code app in your /usr/local/bin folder. You can do this by using a command like the following in your terminal. Ln -s '/Path/To/Visual Studio Code' '/usr/local/bin/code' You will likely need to put sudo in front of that to have the permissions for it to complete successfully.
Troubleshooting the connection between Unity and Visual Studio
Confirm Editor Attaching is enabled
In the Unity Menu, select Edit > Preferences and then select the External Tools tab. Confirm that the Editor Attaching checkbox is enabled. For more information, see the Unity Preferences documentation.
Unable to attach
- Try to temporarily disable your antivirus or create exclusion rules for both VS and Unity.
- Try to temporarily disable your firewall or create rules for allowing TCP/UDP networking between VS and Unity.
- Some programs, like Team Viewer, can interfere with process detection. You can try to temporarily stop any extra software to see if it changes something.
- Do not rename the main Unity executable, as VSTU is only monitoring 'Unity.exe' processes.
Visual Studio crashes
This issue can be due to the Visual Studio MEF cache being corrupted.
Try removing the following folder to reset the MEF cache (close Visual Studio before doing this):
This should fix your issue. In case you are still experiencing the problem, run a Developer Command Prompt for Visual Studio as Administrator and use the following command:
Visual Studio stops responding
Several Unity plugins like Parse, FMOD, UMP (Universal Media Player), ZFBrowser, or Embedded Browser are using native threads. It’s an issue when a plugin ends up attaching a native thread to the runtime, which then does blocking calls to the OS. This means Unity can't interrupt that thread for the debugger (or domain reload) and stop responding.
For FMOD, there is a workaround, you can pass
FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE initialization flag to disable asynchronous processing and perform all processing on the main thread.
Incompatible project in Visual Studio
First, check that Visual Studio is set as your external script editor in Unity (Edit/Preferences/External Tools). Then check that the Visual Studio plugin is installed in Unity (Help/About must display a message like Microsoft Visual Studio Tools for Unity is enabled at the bottom). Then check that the extension is properly installed in Visual Studio (Help/About).
Extra reloads, or Visual Studio losing all open windows
Be sure to never touch project files directly from an asset processor or any other tool. If you really need to manipulate the project file, we expose an API for that. Please check the Assembly references issues section.
If you experience extra reloads or if Visual Studio is losing all open Windows on reload, make sure that you have proper .NET targeting packs installed. Check the following section about frameworks for more information.
The debugger does not break on exceptions
When using the legacy Unity runtime (.NET 3.5 equivalent), the debugger will always break when an exception is unhandled (=outside a try/catch block). If the exception is handled, the debugger will use the Exception Settings Window to determine if a break is required or not.
With the new runtime (.NET 4.6 equivalent), Unity introduced a new way for managing user exceptions and as a result, all exceptions are seen as 'user-handled' even if they are outside a try/catch block. That's why you now need to explicitly check them in the Exception Settings Window if you want the debugger to break.
In the Exception Settings window (Debug > Windows > Exception Settings), expand the node for a category of exceptions (for example, Common Language Runtime Exceptions, meaning .NET exceptions), and select the check box for the specific exception you want to catch within that category (for example System.NullReferenceException). You can also select an entire category of exceptions.
On Windows, Visual Studio asks to download the Unity target framework
Visual Studio Tools for Unity requires the .NET framework 3.5, which isn't installed by default on Windows 8 or 10. To fix this issue, follow the instructions to download and install the .NET framework 3.5.
When using the new Unity runtime, .NET targeting packs version 4.6 and 4.7.1 are also required. It is possible to use the VS2017 installer to quickly install them (modify your VS2017 installation, individual components, .NET category, select all 4.x targeting packs).
Assembly reference issues
If your project is complex reference-wise or if you want to better control this generation step, you can use our API for manipulating the generated project or solution content. You can also use response files in your Unity project and we'll process them.
Breakpoints with a warning
If Visual Studio is unable to find a source location for a specific breakpoint you will see a warning around your breakpoint. Check that the script you are using is properly loaded/used in the current Unity scene.
Breakpoints not hit
Check that the script you are using is properly loaded/used in the current Unity scene. Quit both Visual Studio and Unity then delete all generated files (*.csproj, *.sln) and the whole Library folder.
Unable to debug Android players
We use multicast for player detection (which is the default mechanism used by Unity), but after that we use a regular TCP connection to attach the debugger. The detection phase is the main issue for Android devices.
Wifi is versatile but super slow compared to USB because of latency. We saw a lack of proper multicast support for some routers or devices (Nexus series are well known for this).
USB is super-fast for debugging, and Visual Studio Tools for Unity is now able to detect USB devices, and talk to the adb server to properly forward ports for debugging.
Issues with Visual Studio 2015 and IntelliSense or code coloration
Try upgrading your Visual Studio 2015 to update 3.
There are known issues in Visual Studio Tools for Unity that result from how the debugger interacts with Unity's older version of the C# compiler. We're working to help fix these problems, but you might experience the following issues in the meantime:
When debugging, Unity sometimes crashes.
When debugging, Unity sometimes freezes.
Stepping into and out of methods sometimes behaves incorrectly, especially in iterators or within switch statements.
Please help us improve the quality of Visual Studio Tools for Unity by sending error reports when you experience crashing, freezes, or other errors. This helps us investigate and fix problems in Visual Studio Tools for Unity. Thank you!
How to report an error when Visual Studio freezes
There are reports that Visual Studio sometimes freezes when debugging with Visual Studio Tools for Unity, but we need more data to understand this problem. You can help us investigate by following the steps below.
To report that Visual Studio freezes while debugging with Visual Studio Tools for Unity
Open a new instance of Visual Studio.
Open the Attach to Process dialog. In the new instance of Visual Studio, on the main menu, choose Debug, Attach to Process.
Attach the debugger to the frozen instance of Visual Studio. In the Attach to Process dialog, select the frozen instance of Visual Studio from the Available Processes table, then choose the Attach button.
Pause the Debugger. In the new instance of Visual Studio, on the main menu, choose Debug, Break All, or just press Ctrl+Alt+Break.
Create a thread-dump. In the Command window, enter the following command and press Enter:
You might need to make the Command window visible first. In Visual Studio, on the main menu, choose View, Other Windows, Command Window.
Open a terminal and get the PID of Visual Studio for Mac:
Launch the lldb debugger:
Attach to the Visual Studio for Mac instance using the PID:
Retrieve the stacktrace for all the threads:
Finally, send the thread-dump to [email protected], along with a description of what you were doing when Visual Studio became frozen.
Visual Studio has not always been as user-friendly on the Mac as it is on a Windows machine. Lately, however, the stable release of VS for Mac is really starting to feel like a simple, but luxurious cousin to Visual Studio 2019. Different, but related. Installation on a Mac is quick, simple, and allows you to get into coding right away - whether you are already familiar or an Apple-only dev getting into something new like Xamarin.
Visual Studio for Mac bears a striking similarity to xCode’s solution navigation feel, but brings the power of VS intellisense and an ability to focus on your code in a much cleaner looking environment. In my opinion, this brings the best of both worlds together. But don’t take my word for it: here are five reasons to give Visual Studio for Mac another go!
1. The C# Editor in Visual Studio for Mac is Completely New
Roslyn, the .NET compiler platform, is now in the Visual Studio for Mac editor - making your intellisense as powerful as its big brother on Windows. Marrying the functionality ported over from the Roslyn compiler with the (frankly, beautiful looking) simplicity of a native-feeling Mac UI editing experience gives this girl all the feels. It has full support for third-party Nuget packages for .NET Core (utilizing .NET Standard) along with Unity, Xamarin and Cocoa apps.
I didn’t notice a big difference gating my progress of a .NET Core app. At this point, I don’t know why I would switch over to a windows VM in order to build a microservice API in .NET Core at all!
Finally, I’m loving that VS for Mac now includes “Go to implementation” as an option in the latest release. Exciting! The C# experience is pretty great now.
2. CLI Developers Can Open .NET Core Projects in Terminal
Visual Studio On Mac
Ah, the command line. Many developers love using it for .NET Core instead of the “visual” click and drag aspect of the Visual Studio IDE. At first, the use of command line programming with ASP.NET Core was the only way you could build those apps. Over time, and especially with the release of Visual Studio 2019, the File > New Project templates for ASP.NET Core apps have been baked into the install bringing a truly visual experience to that build.
For a while, it was unclear if the same command line net new project CLI functionality would be available on Mac, but I am happy to report that it is and it works beautifully! The use of the Terminal app brings that experience to you harcore command line devs.
3. Improved Build Time for Xamarin
Remember those build and deploy coffee breaks? Well say goodbye (unless you don’t want to of course). On one of my Xamarin projects I saw a super impressive 30% faster incremental build time. That’s not an insignificant improvement.
This metric is also supported by the April 2019 press release from the VS for Mac team. I used to design my development process in such a way that I could multitask to stay efficient and productive. I’m happy to report those days are gone with much improved build speeds, making the Xamarin app building process something I can say I truly enjoy.
4. .NET Core 3 Support Available Right Out of the Gate
Does Visual Studio 2019 have .NET Core 3 support? Yes, but that’s no reason to jump over to your Windows machine! You can use all the same, wonderful new stuff on your Apple machine, too.
In fact, I’d argue that Visual Studio for Mac is an excellent place to start learning how to build apps for .NET Core 3. With fewer small windows everywhere like it’s Windows-based cousin, VS for Mac allows for a more-focused process.
5. Robust Source Control Options
This is where some “same but different” comes into play. I find that developers coming over from Swift or Objective C development enjoy the experience of source control within Visual Studio for Mac. While there IS a difference in the process for Windows users, I don’t find it particularly difficult. Visual Studio for Mac supports Git and Subversion built into the IDE, as well as TFS with a little more effort.
I have used the Github Desktop app for source control of my folders without much issue. This is also my source control workflow for VS Code, and while it is not integrated into the IDE of VS for Mac, it’s also not a bad option. For the hardcore command line peeps, you can alternatively use Git inside the CLI tool Terminal, which is native to Apple OS. There is no learning curve here at all for developers who use command line.
Who Should Use Visual Studio for Mac?
Visual Studio for Mac is a strong choice for many developers and many use cases. Here are a few that come to mind:
.NET users building Xamarin mobile apps that require IOS builds will benefit tremendously from having all their development on a single machine.
Developers working with .NET Core, who love working on a Mac, and currently use a virtual machine or Bootcamp to run Visual Studio in a windows environment will benefit from not having to switch over from the Apple operating system constantly.
Unity game developers will find VS for Mac be very intuitive option.
The last group to come over will be .NET Framework developers who have worked with Visual Studio on Windows as their only option for .NET 4.7.2 for example. Sadly no, .NET Framework cannot run on VS for Mac. However, once you are ready to start building your apps or microservices in .NET Core - check it out!
Install Visual Studio Mac
New functionality, extensions and templates are all coming this next year to Visual Studio for Mac that make living in harmony with Apple + Microsoft a real joy.
Learn More About .NET Core, Xamarin, Apple & OAuth
Microsoft Visual Studio For Mac
If you’d like to learn more about ASP.NET, Xamarin, or Apple, we’ve also published a number of posts that might interest you:
For other great content from the Okta Dev Team, follow us on Twitter and Facebook!