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; }