From 7c0587950f35b1d72897dad21e0d88e59862d064 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Sat, 17 Jan 2026 16:35:23 +1000 Subject: [PATCH] Add launch settings Executable command support --- .../Features/Run/RunService.cs | 17 +++++++++++++++-- .../VsPersistence/SharpIdeModels.cs | 3 ++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/SharpIDE.Application/Features/Run/RunService.cs b/src/SharpIDE.Application/Features/Run/RunService.cs index 8830fa2..9a01de7 100644 --- a/src/SharpIDE.Application/Features/Run/RunService.cs +++ b/src/SharpIDE.Application/Features/Run/RunService.cs @@ -38,10 +38,23 @@ public partial class RunService(ILogger logger, RoslynAnalysis rosly var launchProfile = launchProfiles.FirstOrDefault(); try { + var fileName = launchProfile?.CommandName switch + { + "Executable" => launchProfile.ExecutablePath, + "Project" or _ => "dotnet", + } ?? "dotnet"; + + var workingDirectory = launchProfile?.WorkingDirectory switch + { + "$(ProjectDir)" => project.DirectoryPath, + null => project.DirectoryPath, + {} nonNullString => nonNullString, + }; + var processStartInfo = new ProcessStartInfo2 { - FileName = "dotnet", - WorkingDirectory = Path.GetDirectoryName(project.FilePath), + FileName = fileName, + WorkingDirectory = workingDirectory, //Arguments = $"run --project \"{project.FilePath}\" --no-restore", Arguments = await GetRunArguments(project), RedirectStandardOutput = true, diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs index 2fa46a0..263bea4 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs @@ -127,8 +127,9 @@ public class SharpIdeProjectModel : ISharpIdeNode, IExpandableSharpIdeNode, IChi ? MsBuildEvaluationProjectTask.Result : throw new InvalidOperationException("Do not attempt to access the MsBuildEvaluationProject before it has been loaded"); - public bool IsRunnable => IsBlazorProject || MsBuildEvaluationProject.GetPropertyValue("OutputType") is "Exe" or "WinExe"; + public bool IsRunnable => MsBuildEvaluationProject.GetPropertyValue("OutputType") is "Exe" or "WinExe" || IsBlazorProject || IsGodotProject; public bool IsBlazorProject => MsBuildEvaluationProject.Xml.Sdk is "Microsoft.NET.Sdk.BlazorWebAssembly"; + public bool IsGodotProject => MsBuildEvaluationProject.Xml.Sdk.StartsWith("Godot.NET.Sdk"); public bool IsMtpTestProject => MsBuildEvaluationProject.GetPropertyValue("IsTestingPlatformApplication") is "true"; public string BlazorDevServerVersion => MsBuildEvaluationProject.Items.Single(s => s.ItemType is "PackageReference" && s.EvaluatedInclude is "Microsoft.AspNetCore.Components.WebAssembly.DevServer").GetMetadataValue("Version"); public bool OpenInRunPanel { get; set; }