VS: Add DOTNET_SDK property to generate SDK-style C# projects

Changes in cmVisualStudio10TargetGenerator::Generate to write .Net
SDK-style project for VS generators VS 19 and above. Also adds
documentation and tests.

Issue: #20227
This commit is contained in:
Sumit Bhardwaj
2021-12-15 08:21:34 -08:00
parent a450cc9533
commit 0eea32a376
26 changed files with 357 additions and 3 deletions
+1
View File
@@ -191,6 +191,7 @@ Properties on Targets
/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY
/prop_tgt/DEPRECATION
/prop_tgt/DISABLE_PRECOMPILE_HEADERS
/prop_tgt/DOTNET_SDK
/prop_tgt/DOTNET_TARGET_FRAMEWORK
/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION
/prop_tgt/EchoString
+1
View File
@@ -49,6 +49,7 @@ Variables that Provide Information
/variable/CMAKE_DEBUG_TARGET_PROPERTIES
/variable/CMAKE_DIRECTORY_LABELS
/variable/CMAKE_DL_LIBS
/variable/CMAKE_DOTNET_SDK
/variable/CMAKE_DOTNET_TARGET_FRAMEWORK
/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
/variable/CMAKE_EDIT_COMMAND
+25
View File
@@ -0,0 +1,25 @@
DOTNET_SDK
----------
.. versionadded:: 3.23
Specify the .NET SDK for C# projects. For example: ``Microsoft.NET.Sdk``.
This property tells :ref:`Visual Studio Generators` for VS 2019 and
above to generate a .NET SDK-style project using the specified SDK.
The property is meaningful only to these generators, and only in C#
targets. It is ignored for C++ projects, even if they are managed
(e.g. using :prop_tgt:`COMMON_LANGUAGE_RUNTIME`).
This property must be a non-empty string to generate .NET SDK-style projects.
CMake does not perform any validations for the value of the property.
This property may be initialized for all targets using the
:variable:`CMAKE_DOTNET_SDK` variable.
.. note::
The :ref:`Visual Studio Generators` in this version of CMake have not
yet learned to support :command:`add_custom_command` in .NET SDK-style
projects. It is currently an error to attach a custom command to a
target with the ``DOTNET_SDK`` property set.
@@ -0,0 +1,9 @@
vs-csharp-dotnet-sdk
--------------------
* The :ref:`Visual Studio Generators` for VS 2019 and above learned to
support .NET SDK-style project files (``.csproj``) for C# projects.
See the :prop_tgt:`DOTNET_SDK` target property and corresponding
:variable:`CMAKE_DOTNET_SDK` variable.
However, this version of CMake does not yet support using
:command:`add_custom_command` in .NET SDK-style projects.
+9
View File
@@ -0,0 +1,9 @@
CMAKE_DOTNET_SDK
----------------
.. versionadded:: 3.23
Default value for :prop_tgt:`DOTNET_SDK` property of targets.
This variable is used to initialize the :prop_tgt:`DOTNET_SDK`
property on all targets. See that target property for additional information.