summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCalum Robinson <calum.robinson@sias.com>2024-09-25 15:20:12 (GMT)
committerCalum Robinson <calum.robinson@sias.com>2024-09-25 15:20:12 (GMT)
commit55a5094f0e7313b4fb5244091a4d1b7faa48bbf9 (patch)
tree27bd650307a8595b6d081084e5c5a4387d02a5d2
parentb1aba2fb4e15d963e857d1c162569b132eb1a220 (diff)
downloadCMake-55a5094f0e7313b4fb5244091a4d1b7faa48bbf9.zip
CMake-55a5094f0e7313b4fb5244091a4d1b7faa48bbf9.tar.gz
CMake-55a5094f0e7313b4fb5244091a4d1b7faa48bbf9.tar.bz2
VS: Fix missing <Configurations> property for DOTNET_SDK
Fixes #26325
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx2
-rw-r--r--Tests/RunCMake/VsDotnetSdk/RunCMakeTest.cmake1
-rw-r--r--Tests/RunCMake/VsDotnetSdk/VsDotnetSdkConfigurations-check.cmake20
-rw-r--r--Tests/RunCMake/VsDotnetSdk/VsDotnetSdkConfigurations.cmake11
4 files changed, 34 insertions, 0 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 71a140b..1e338b2 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -914,6 +914,8 @@ void cmVisualStudio10TargetGenerator::WriteSdkStyleProjectFile(
Elem e1(e0, "PropertyGroup");
this->WriteCommonPropertyGroupGlobals(e1);
+ e1.Element("Configurations", cmJoinStrings(this->Configurations, ";", ""));
+
e1.Element("EnableDefaultItems", "false");
// Disable the project upgrade prompt that is displayed the first time a
// project using an older toolset version is opened in a newer version
diff --git a/Tests/RunCMake/VsDotnetSdk/RunCMakeTest.cmake b/Tests/RunCMake/VsDotnetSdk/RunCMakeTest.cmake
index 276451d..151b907 100644
--- a/Tests/RunCMake/VsDotnetSdk/RunCMakeTest.cmake
+++ b/Tests/RunCMake/VsDotnetSdk/RunCMakeTest.cmake
@@ -6,6 +6,7 @@ run_cmake(VsDotnetSdkDefines)
run_cmake(DotnetSdkVariables)
run_cmake(VsDotnetSdkXamlFiles)
run_cmake(VsDotnetSdkAssemblyName)
+run_cmake(VsDotnetSdkConfigurations)
function(run_VsDotnetSdk)
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/VsDotnetSdk-build)
diff --git a/Tests/RunCMake/VsDotnetSdk/VsDotnetSdkConfigurations-check.cmake b/Tests/RunCMake/VsDotnetSdk/VsDotnetSdkConfigurations-check.cmake
new file mode 100644
index 0000000..f7fc6de
--- /dev/null
+++ b/Tests/RunCMake/VsDotnetSdk/VsDotnetSdkConfigurations-check.cmake
@@ -0,0 +1,20 @@
+set(csProjectFile ${RunCMake_TEST_BINARY_DIR}/foo.csproj)
+
+if(NOT EXISTS "${csProjectFile}")
+ set(RunCMake_TEST_FAILED "Project file ${csProjectFile} does not exist.")
+ return()
+endif()
+
+set(hasConfigurations FALSE)
+
+file(STRINGS "${csProjectFile}" lines)
+
+foreach(line IN LISTS lines)
+ if(line MATCHES "<Configurations>Debug;Release;MinSizeRel;RelWithDebInfo;ExtraTestConfig</Configurations>")
+ set(hasConfigurations TRUE)
+ endif()
+endforeach()
+
+if(NOT hasConfigurations)
+ set(RunCMake_TEST_FAILED "<Configurations> not found in ${csProjectFile}.")
+endif()
diff --git a/Tests/RunCMake/VsDotnetSdk/VsDotnetSdkConfigurations.cmake b/Tests/RunCMake/VsDotnetSdk/VsDotnetSdkConfigurations.cmake
new file mode 100644
index 0000000..178cd00
--- /dev/null
+++ b/Tests/RunCMake/VsDotnetSdk/VsDotnetSdkConfigurations.cmake
@@ -0,0 +1,11 @@
+enable_language(CSharp)
+
+if(NOT CMAKE_CSharp_COMPILER)
+ return()
+endif()
+
+set(CMAKE_SHARED_LINKER_FLAGS_EXTRATESTCONFIG "${CMAKE_SHARED_LINKER_FLAGS_Debug}")
+list(APPEND CMAKE_CONFIGURATION_TYPES ExtraTestConfig)
+
+set(CMAKE_DOTNET_SDK "Microsoft.NET.Sdk")
+add_library(foo SHARED lib1.cs)