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