diff --git a/Sharpmake.Generators/VisualStudio/Csproj.Template.cs b/Sharpmake.Generators/VisualStudio/Csproj.Template.cs index b5a93aef5..f08de9c3d 100644 --- a/Sharpmake.Generators/VisualStudio/Csproj.Template.cs +++ b/Sharpmake.Generators/VisualStudio/Csproj.Template.cs @@ -25,9 +25,9 @@ public static class Project public static string ProjectEnd = @""; + public static string ProjectDescription = -@" - [options.DefaultConfiguration] +@" [options.DefaultConfiguration] [defaultPlatform] [defaultPlatform] {[guid]} @@ -112,7 +112,6 @@ public static class Project [options.UseWindowsForms] [options.Nullable] [options.PublishAot] - "; public const string DefaultProjectConfigurationCondition = "'$(Configuration)|$(Platform)'=='[conf.Name]|[platformName]'"; @@ -146,6 +145,21 @@ public static class Project [options.CopyVsixExtensionFiles] [options.CopyVsixExtensionLocation] [options.ProduceReferenceAssembly] +"; + public static string ConfigurationsItemBegin = +@""; + public static string ConfigurationsItemEntry = +@"[conf.Name];"; + public static string ConfigurationsItemEnd = +@" +"; + + public static string PlatformsItemBegin = +@""; + public static string PlatformsItemEntry = +@"[platformName];"; + public static string PlatformsItemEnd = +@" "; public static string ImportProjectItemSimple = diff --git a/Sharpmake.Generators/VisualStudio/Csproj.cs b/Sharpmake.Generators/VisualStudio/Csproj.cs index 68e391c1f..eda68ddd3 100644 --- a/Sharpmake.Generators/VisualStudio/Csproj.cs +++ b/Sharpmake.Generators/VisualStudio/Csproj.cs @@ -1321,6 +1321,7 @@ List skipFiles GeneratedAssemblyConfigTemplate generatedAssemblyConfigTemplate = new GeneratedAssemblyConfigTemplate(project.GeneratedAssemblyConfig, isNetCoreProjectSchema, RemoveLineTag); + Write(VsProjCommon.Template.PropertyGroupStart, writer, resolver); using (resolver.NewScopedParameter("project", project)) using (resolver.NewScopedParameter("guid", projectPropertyGuid)) using (resolver.NewScopedParameter("options", options[_projectConfigurationList[0]])) @@ -1339,6 +1340,31 @@ List skipFiles Write(Template.Project.ProjectDescription, writer, resolver); } + Write(Template.Project.ConfigurationsItemBegin, writer, resolver); + foreach (Project.Configuration conf in _projectConfigurationList) + { + using (resolver.NewScopedParameter("conf", conf)) + { + Write(Template.Project.ConfigurationsItemEntry, writer, resolver); + } + } + Write(Template.Project.ConfigurationsItemEnd, writer, resolver); + + Write(Template.Project.PlatformsItemBegin, writer, resolver); + HashSet addedPlatform = new HashSet(); + foreach (Project.Configuration conf in _projectConfigurationList) + { + if (addedPlatform.Add(Util.GetPlatformString(conf.Platform, conf.Project, conf.Target))) + { + using (resolver.NewScopedParameter("platformName", Util.GetPlatformString(conf.Platform, conf.Project, conf.Target))) + { + Write(Template.Project.PlatformsItemEntry, writer, resolver); + } + } + } + Write(Template.Project.PlatformsItemEnd, writer, resolver); + Write(VsProjCommon.Template.PropertyGroupEnd, writer, resolver); + if (!string.IsNullOrEmpty(project.ApplicationIcon)) { using (resolver.NewScopedParameter("iconpath", Util.PathGetRelative(_projectPathCapitalized, Project.GetCapitalizedFile(project.ApplicationIcon))))