godot-csharp-visualstudio
godot-csharp-visualstudio copied to clipboard
[WIP] Godot4 Visual Studio 2022 Guide
Update March 2023
Firstly you need to create a new debugging profile Menu > Debug > Debug Properties
Selecting executable as a new profile type in the top corner of the profile configurator.
[Optional] Rename the executable profile
- Enter the location of the Godot Executable and
e.g. Godot_v4.0.1-rc2_mono_win64.exe
- Enter the working directory to the project folder
Reference
Launch
in the command line
--path . --verbose
Launch (select scene)
in the command line
--path . scene.tscn --verbose
Launch (select Script)
in the command line
--path . --script <script> --verbose
Editor
in the command line
--path . --editor --verbose
Optionals
[1] Make GD.Print appear in the program output window (To be verified)
Include GD.cs
==> Need to update GD.cs to the lastest Godot4 rc2Debugging Godot4 beta projects from VS and VSCode
I haven't found a fix for the first issue, but I've shared a GD.cs to pipe GD.Print functions to the output window. Just drop it into your project folder if you want that.
[2] Hot Reload (To be verified)
[3] Debug Editor Tool (To be verified)
If you want to also be able to debug editor tools add another profile and use the same arguments but add --editor as well.
--path . --editor
in the command line
Update Oct 2022
Debugging Godot4 beta projects from VS2022
Run+Debug Godot4 C# projects from Visual Studio
Debugging Godot4 beta projects from VS and VSCode
Is this Obsolete? VS2022 works with Godot 4.Beta1 no extension needed
After entering the working directory you have to scroll down and check the box that says Enable native code debugging. This is missing from your instructions.
@silenuz I read through a few links, there are reasons WHEN and WHEN not to click => Enable Native code debugging.
Without checking it you cannot debug unmanaged code. The Godot application itself is not managed code. And the process you are attaching the debugger to is the Godot exe and not the c# project. Thus for debugging to work you have to enable Native Debugging Mode.
"The following procedures describe how to enable debugging for managed and native code together, also known as mixed-mode debugging. There are two mixed-mode debugging scenarios:
The app that calls a DLL is written in native code, and the DLL is managed."
Suggestion for command line arguments
Here for gathering references related to what are possible with the executable profile
- https://godotengine.org/qa/149415/how-to-test-command-line-without-exporting-the-project
- https://docs.godotengine.org/en/stable/classes/class_os.html#class-os-method-get-cmdline-args
https://github.com/godotengine/godot-docs
I would like to mention that a more universal approach than using . as the working directory, and path variables, is to use $(ProjectDir) which will allow the same profile to be used in Rider as well as Visual Studio.
For reference here is a complete launch file that should be compatible with VS, VS Code and Rider. All that has to be adjusted is the executable path for Godot. Note to use in VS code you would add this to your .vscode/launch.json file.
"launchSettingsProfile": "${workspaceFolder}/<Relative-Path-To-Project-Directory/Properties/launchSettings.json
For more information see: VS Code Debug
So the following file would go in a folder called properties in the project folder and be called launchsettings.json
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"Player": {
"commandName": "Executable",
"executablePath": "godot",
"commandLineArgs": "--path $(ProjectDir)",
"workingDirectory": "$(ProjectDir)",
"nativeDebugging": true
},
"Editor": {
"commandName": "Executable",
"executablePath": "godot",
"commandLineArgs": "--path $(ProjectDir) --editor",
"workingDirectory": "$(ProjectDir)",
"nativeDebugging": true
}
}
}
If anyone cares I ended up creating a DotNet project template for Godot. Usage is simple:
dotnet new Godot -o {NameOfProject} -G {PathToGodtotExe}
This will create a project that already has the necessary launch settings for running or debugging your code in Visual Studio or Jetbrains' Rider. Note once installed the template will also be available in the above IDEs.
After the project is generated simply open it in the Godot editor as usual.
I'm currently working on packaging for easier use, and hope to have that finished by the end of the weekend. Godot project Template
When selecting the executable file of godot, you cannot select the _console version, otherwise the breakpoint cannot be hit.