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))))