Merge remote-tracking branch 'origin/master' into sdl_platform

This commit is contained in:
2025-10-12 11:18:28 +03:00
175 changed files with 2079 additions and 939 deletions

View File

@@ -50,7 +50,9 @@ namespace Flax.Build.Projects.VisualStudio
projectTypes = ProjectTypeGuids.ToOption(ProjectTypeGuids.FlaxVS) + ';' + projectTypes;
// Try to reuse the existing project guid from solution file
vsProject.ProjectGuid = GetProjectGuid(solutionPath, vsProject.Name);
vsProject.ProjectGuid = GetProjectGuid(vsProject.Path, vsProject.Name);
if (vsProject.ProjectGuid == Guid.Empty)
vsProject.ProjectGuid = GetProjectGuid(solutionPath, vsProject.Name);
if (vsProject.ProjectGuid == Guid.Empty)
vsProject.ProjectGuid = Guid.NewGuid();

View File

@@ -55,7 +55,9 @@ namespace Flax.Build.Projects.VisualStudio
}
// Try to reuse the existing project guid from solution file
vsProject.ProjectGuid = GetProjectGuid(solutionPath, vsProject.Name);
vsProject.ProjectGuid = GetProjectGuid(vsProject.Path, vsProject.Name);
if (vsProject.ProjectGuid == Guid.Empty)
vsProject.ProjectGuid = GetProjectGuid(solutionPath, vsProject.Name);
if (vsProject.ProjectGuid == Guid.Empty)
vsProject.ProjectGuid = Guid.NewGuid();

View File

@@ -28,6 +28,7 @@ namespace Flax.Build.Projects.VisualStudio
case VisualStudioVersion.VisualStudio2017: return "v141";
case VisualStudioVersion.VisualStudio2019: return "v142";
case VisualStudioVersion.VisualStudio2022: return "v143";
case VisualStudioVersion.VisualStudio2026: return "v145";
}
return string.Empty;
}

View File

@@ -128,6 +128,8 @@ namespace Flax.Build.Projects.VisualStudio
version = VisualStudioVersion.VisualStudio2019;
else if (displayName.Contains("2022"))
version = VisualStudioVersion.VisualStudio2022;
else if (displayName.Contains("2026"))
version = VisualStudioVersion.VisualStudio2026;
else
{
Log.Warning(string.Format("Unknown Visual Studio installation. Display name: {0}", displayName));

View File

@@ -128,6 +128,7 @@ namespace Flax.Build.Projects.VisualStudio
case VisualStudioVersion.VisualStudio2017: return "15.0";
case VisualStudioVersion.VisualStudio2019: return "16.0";
case VisualStudioVersion.VisualStudio2022: return "17.0";
case VisualStudioVersion.VisualStudio2026: return "18.0";
}
return string.Empty;
@@ -193,7 +194,7 @@ namespace Flax.Build.Projects.VisualStudio
}
/// <inheritdoc />
public override string SolutionFileExtension => "sln";
public override string SolutionFileExtension => /*Version >= VisualStudioVersion.VisualStudio2026 ? "slnx" :*/ "sln";
/// <inheritdoc />
public override Project CreateProject()
@@ -277,6 +278,20 @@ namespace Flax.Build.Projects.VisualStudio
}
}
if (Version >= VisualStudioVersion.VisualStudio2026)
GenerateXmlSolution(solution);
else
GenerateAsciiSolution(solution);
}
private void GenerateXmlSolution(Solution solution)
{
// TODO: Generate the solution file in new format
GenerateAsciiSolution(solution);
}
private void GenerateAsciiSolution(Solution solution)
{
// Try to extract solution folder info from the existing solution file to make random IDs stable
var solutionId = Guid.NewGuid();
var folderIds = new Dictionary<string, Guid>();
@@ -313,7 +328,7 @@ namespace Flax.Build.Projects.VisualStudio
var projects = solution.Projects.Cast<VisualStudioProject>().ToArray();
// Header
if (Version == VisualStudioVersion.VisualStudio2022)
if (Version >= VisualStudioVersion.VisualStudio2022)
{
vcSolutionFileContent.AppendLine("Microsoft Visual Studio Solution File, Format Version 12.00");
vcSolutionFileContent.AppendLine("# Visual Studio Version 17");

View File

@@ -26,5 +26,10 @@ namespace Flax.Build.Projects.VisualStudio
/// The Visual Studio 2022.
/// </summary>
VisualStudio2022,
/// <summary>
/// The Visual Studio 2026.
/// </summary>
VisualStudio2026,
}
}