From 8ccb4f58579e2ef381ab9f23ee8ff111a24df855 Mon Sep 17 00:00:00 2001 From: GoaLitiuM Date: Tue, 2 Mar 2021 17:35:52 +0200 Subject: [PATCH 1/3] Support generating multiple project formats at once --- .../Flax.Build/Build/Builder.Projects.cs | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/Source/Tools/Flax.Build/Build/Builder.Projects.cs b/Source/Tools/Flax.Build/Build/Builder.Projects.cs index 2055e698d..b9ae1e319 100644 --- a/Source/Tools/Flax.Build/Build/Builder.Projects.cs +++ b/Source/Tools/Flax.Build/Build/Builder.Projects.cs @@ -156,18 +156,34 @@ namespace Flax.Build using (new ProfileEventScope("GenerateProjects")) { // Pick the project format - ProjectFormat projectFormat = Platform.BuildPlatform.DefaultProjectFormat; - if (Configuration.ProjectFormatVS2019) - projectFormat = ProjectFormat.VisualStudio2019; - else if (Configuration.ProjectFormatVS2017) - projectFormat = ProjectFormat.VisualStudio2017; - else if (Configuration.ProjectFormatVS2015) - projectFormat = ProjectFormat.VisualStudio2015; - else if (Configuration.ProjectFormatVSCode) - projectFormat = ProjectFormat.VisualStudioCode; - else if (!string.IsNullOrEmpty(Configuration.ProjectFormatCustom)) - projectFormat = ProjectFormat.Custom; + List projectFormats = new List(); + if (Configuration.ProjectFormatVS2019) + projectFormats.Add(ProjectFormat.VisualStudio2019); + if (Configuration.ProjectFormatVS2017) + projectFormats.Add(ProjectFormat.VisualStudio2017); + if (Configuration.ProjectFormatVS2015) + projectFormats.Add(ProjectFormat.VisualStudio2015); + if (Configuration.ProjectFormatVSCode) + projectFormats.Add(ProjectFormat.VisualStudioCode); + if (!string.IsNullOrEmpty(Configuration.ProjectFormatCustom)) + projectFormats.Add(ProjectFormat.Custom); + + if (projectFormats.Count == 0) + projectFormats.Add(Platform.BuildPlatform.DefaultProjectFormat); + + foreach (ProjectFormat projectFormat in projectFormats) + GenerateProject(projectFormat); + } + } + + /// + /// Generates project files for the specified format. + /// + public static void GenerateProject(ProjectFormat projectFormat) + { + using (new ProfileEventScope("GenerateProject" + projectFormat.ToString())) + { // Setup var rules = GenerateRulesAssembly(); var rootProject = Globals.Project; From 9f1c55edceb2ec8d3aab443761633e2732c77ed4 Mon Sep 17 00:00:00 2001 From: GoaLitiuM Date: Tue, 2 Mar 2021 17:37:19 +0200 Subject: [PATCH 2/3] Generate Visual Studio solution files for VSCode solutions --- .../InBuildSourceCodeEditor.cs | 2 +- .../CodeEditors/VisualStudioCodeEditor.cpp | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs b/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs index 27a92cbc3..d58e628db 100644 --- a/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs +++ b/Source/Editor/Modules/SourceCodeEditing/InBuildSourceCodeEditor.cs @@ -75,7 +75,7 @@ namespace FlaxEditor.Modules.SourceCodeEditing switch (Type) { case CodeEditorTypes.VSCodeInsiders: - case CodeEditorTypes.VSCode: return "-vscode"; + case CodeEditorTypes.VSCode: return "-vscode -vs2019"; case CodeEditorTypes.Rider: return "-vs2019"; default: return null; } diff --git a/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp b/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp index 75cb5fb5d..ac226fd2c 100644 --- a/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp +++ b/Source/Editor/Scripting/CodeEditors/VisualStudioCodeEditor.cpp @@ -82,8 +82,15 @@ String VisualStudioCodeEditor::GetName() const void VisualStudioCodeEditor::OpenFile(const String& path, int32 line) { + // Generate VS solution files for intellisense + if (!FileSystem::FileExists(Globals::ProjectFolder / Editor::Project->Name + TEXT(".sln"))) + { + ScriptsBuilder::GenerateProject(TEXT("-vs2019")); + } + // Generate project files if missing - if (!FileSystem::FileExists(Globals::ProjectFolder / TEXT(".vscode/tasks.json"))) + if (!FileSystem::FileExists(Globals::ProjectFolder / TEXT(".vscode/tasks.json")) || + !FileSystem::FileExists(_workspacePath)) { ScriptsBuilder::GenerateProject(TEXT("-vscode")); } @@ -96,8 +103,15 @@ void VisualStudioCodeEditor::OpenFile(const String& path, int32 line) void VisualStudioCodeEditor::OpenSolution() { + // Generate VS solution files for intellisense + if (!FileSystem::FileExists(Globals::ProjectFolder / Editor::Project->Name + TEXT(".sln"))) + { + ScriptsBuilder::GenerateProject(TEXT("-vs2019")); + } + // Generate project files if solution is missing - if (!FileSystem::FileExists(Globals::ProjectFolder / TEXT(".vscode/tasks.json"))) + if (!FileSystem::FileExists(Globals::ProjectFolder / TEXT(".vscode/tasks.json")) || + !FileSystem::FileExists(_workspacePath)) { ScriptsBuilder::GenerateProject(TEXT("-vscode")); } From 69a3587f5dcc45a4d8663713669e72a86d0dcf8c Mon Sep 17 00:00:00 2001 From: GoaLitiuM Date: Tue, 2 Mar 2021 18:40:12 +0200 Subject: [PATCH 3/3] Set solution file as default launch solution for Omnisharp --- .../VisualStudioCode/VisualStudioCodeProjectGenerator.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/Tools/Flax.Build/Projects/VisualStudioCode/VisualStudioCodeProjectGenerator.cs b/Source/Tools/Flax.Build/Projects/VisualStudioCode/VisualStudioCodeProjectGenerator.cs index 19efbd02a..2d188d266 100644 --- a/Source/Tools/Flax.Build/Projects/VisualStudioCode/VisualStudioCodeProjectGenerator.cs +++ b/Source/Tools/Flax.Build/Projects/VisualStudioCode/VisualStudioCodeProjectGenerator.cs @@ -509,6 +509,7 @@ namespace Flax.Build.Projects.VisualStudioCode json.AddField("gulp.autoDetect", "off"); json.AddField("jake.autoDetect", "off"); json.AddField("grunt.autoDetect", "off"); + json.AddField("omnisharp.defaultLaunchSolution", solution.Name + ".sln"); json.EndObject(); // Folders