Browse Source

Merge topic 'vs-slnx' into release-4.2

46b0202ce0 VS: Fix SLNX generation so CSharp projects build in the IDE

Acked-by: Kitware Robot <[email protected]>
Merge-request: !11341
Brad King 1 month ago
parent
commit
7708dfe9db

+ 4 - 1
Source/cmVSSolution.cxx

@@ -331,7 +331,10 @@ void WriteSlnxProject(cmXMLElement& xmlParent, Solution const& solution,
         .Attribute("Solution", cmStrCat(solution.Configs[i], "|*"));
     }
   }
-  if (project.Platform != solution.Platform) {
+  if (project.Platform != solution.Platform ||
+      // C# projects do not build interactively in the VS IDE unless they
+      // have an explicit platform, even if it matches the SLN platform.
+      project.TypeId == Solution::Project::TypeIdCSharp) {
     cmXMLElement(xmlProject, "Platform")
       .Attribute("Project", project.Platform);
   }

+ 1 - 0
Tests/RunCMake/VsDotnetSdk/VsDotnetSdkTargetPlatform-check-slnx.cmake

@@ -19,5 +19,6 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/VsDotnetSdkTargetPlatform.slnx"
   <Project Path="ZERO_CHECK\.vcxproj" Id="[0-9a-f-]+"/>
   <Project Path="foo\.csproj" Id="[0-9a-f-]+">
     <BuildDependency Project="ZERO_CHECK\.vcxproj"/>
+    <Platform Project="[^"]+"/>
   </Project>
 </Solution>$]])

+ 1 - 0
Tests/RunCMake/include_external_msproject/AutoType-check-slnx.cmake

@@ -26,6 +26,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/AutoType.slnx" [[
   <Project Path="ZERO_CHECK\.vcxproj" Id="[0-9a-f-]+"/>
   <Project Path="external\.csproj" Id="[0-9a-f-]+">
     <BuildDependency Project="ZERO_CHECK.vcxproj"/>
+    <Platform Project="[^"]+"/>
   </Project>
   <Project Path="external\.dbproj" Id="[0-9a-f-]+">
     <BuildDependency Project="ZERO_CHECK.vcxproj"/>