I highly recommend reading the official page about using Visual Studio with Godot first. It may be more up to date than this doc, and has been past review.
If you have any problems or questions, come visit the C# channel in the Godot Discord to chat.
To debug C#/.NET code in Godot:
Visual Studio 2019: Click here to expand instructions for a workaround to use the VS extension with Godot 3.x. These steps don't work with Godot 4.x, and they don't reliably work with VS 2022.
This is a step by step guide to using this workaround for Godot 3.2.3+ support in Visual Studio: godotengine/godot-csharp-visualstudio#10 (comment)
-
Install the latest 1.x version of the Godot VS extension from https://github.com/godotengine/godot-csharp-visualstudio/releases.
- As of writing, v1.1.1
-
In the solution explorer, add a new project to your solution.
-
Search for
library .net framework
to find the "old-style" project style. Select it and press Next. -
Set up the project.
- Name:
StubProj
- Location: make sure this is your project directory.
- Framework: the default is fine, we're going to replace this later anyway.
- Name:
-
Open the StubProj directory. You can use Open Folder in File Explorer to do this easily.
-
Close Visual Studio. Press Yes if prompted to save files.
-
In the StubFolder directory, delete all files and directories except
StubProj.csproj
. (Deletebin
,obj
,Properties
,Class1.cs
.) -
Open
StubProj.csproj
in a text editor. (Not Visual Studio.) Delete the content, then paste this text (a slightly modified version of the original workaround)<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{B83A5A30-7D9A-4BCC-BB56-2974A2AAE767}</ProjectGuid> <OutputType>Library</OutputType> <RootNamespace>StubProj</RootNamespace> <AssemblyName>StubProj</AssemblyName> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <Deterministic>true</Deterministic> <ProjectTypeGuids>{8F3E2DF0-C35C-4265-82FC-BEA011F4A7ED};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\*.csproj"> <Private>False</Private> </ProjectReference> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project>
-
Start Visual Studio. Open your Godot project back up.
-
Set
StubProj
as your Startup Project. -
See the extension's debugging options are there!
Visual Studio 2022: There is no widely known way to make VS 2022 work with the extension that allows C# debugging in Godot 3.x. See godot-csharp-visualstudio#28
If you install Visual Studio 2022 and Visual Studio 2019 on the same machine, the Godot "External Editor" option will pick 2022. To make Godot open 2019 for you, you can replace the GodotSharp\Tools\GodotTools.OpenVisualStudio.exe
file in your Godot installation with a new program that prefers 2019 rather than 2022. To do this, modify and recompile GodotTools.OpenVisualStudio. A user on Discord has done this successfully and made their copy available as an attachment. (As always, be careful with programs created by others online!)
In 4.x, Visual Studio 2019/2022 now works without any extension!
Godot 4.x changes to use .NET [Core] Runtime rather than Mono, so you can attach to a running Godot game with the VS debugger, or set up a launch profile with Godot.exe to start the game and start debugging when you run your project in VS. Until this is documented, for now, here's an example of how to set that up: https://www.reddit.com/r/GodotCSharp/comments/xgpqfh/oc_rundebug_godot4_c_projects_from_visual_studio/.
Tried this and still cannot set breakpoints. Looks like there is the error "No CLR has been loaded" - any ideas?