<?xml version="1.0" encoding="UTF-8"?>


<dsl-extension kind="buildStep" type="dotnet" generateDslJar="true" applicable="params['command'] == 'msbuild'">
    <class name="DotnetMsBuildStep">
        <description>
            A [.NET msbuild step](https://github.com/JetBrains/teamcity-dotnet-plugin) to run .NET MSBuild
        </description>
    </class>
    <function name="dotnetMsBuild" yamlName="dotnet-msbuild">
        <description>
            Adds a [.NET msbuild step](https://github.com/JetBrains/teamcity-dotnet-plugin) to run .NET MSBuild
            @see DotnetMsBuildStep
        </description>
    </function>
    <init>
        <param name="command" value="msbuild"/>
    </init>
    <params>
        <param name="paths" dslName="projects">
            <description>Specify paths to projects and solutions. Wildcards are supported.</description>
        </param>
        <param name="teamcity.build.workingDir" dslName="workingDir" yamlName="working-directory">
            <description>
                [Build working directory](https://www.jetbrains.com/help/teamcity/?Build+Working+Directory) for
                script,
                specify it if it is different from the [checkout
                directory](https://www.jetbrains.com/help/teamcity/?Build+Checkout+Directory).
            </description>
        </param>
        <param name="msbuild.version" dslName="version" type="MSBuildVersion">
            <description>
                MSBuild version to use
                @see MSBuildVersion
            </description>
        </param>
        <param name="targets">
            <description>Specify the list of build targets.</description>
        </param>
        <param name="configuration">
            <description>Target configuration to build for.</description>
        </param>
        <param name="runtime">
            <description>Target runtime to build for.</description>
        </param>
        <param name="args">
            <description>Enter additional command line parameters for .NET MSBuild.</description>
        </param>
        <param name="verbosity" dslName="logging" type="Verbosity">
            <description>
                Specify logging verbosity
                @see Verbosity
            </description>
        </param>
        <param name="required.sdk" dslName="sdk">
            <description>.NET SDK versions separated by semicolon to be required on agents.</description>
        </param>
    </params>
    <types>
        <enum name="Verbosity">
            <description>
                Logging verbosity
            </description>
            <option name="Quiet" value="Quiet"/>
            <option name="Minimal" value="Minimal"/>
            <option name="Normal" value="Normal"/>
            <option name="Detailed" value="Detailed"/>
            <option name="Diagnostic" value="Diagnostic"/>
        </enum>
        <enum name="MSBuildVersion">
            <description>MSBuild version</description>
            <option name="CrossPlatform" value="MSBuild_CrossPlatform">
                <description>Cross-platform MSBuild</description>
            </option>
            <option name="V18" value="MSBuild_18_Windows">
                <description>MSBuild 2026</description>
            </option>
            <option name="V17" value="MSBuild_17_Windows">
                <description>MSBuild 2022</description>
            </option>
            <option name="V16" value="MSBuild_16_Windows">
                <description>MSBuild 2019</description>
            </option>
            <option name="V15" value="MSBuild_15_Windows">
                <description>MSBuild 2017</description>
            </option>
            <option name="V14" value="MSBuild_14_Windows">
                <description>MSBuild 2015</description>
            </option>
            <option name="V12" value="MSBuild_12_Windows">
                <description>MSBuild 2013</description>
            </option>
            <option name="V4" value="MSBuild_4_Windows">
                <description>MSBuild 4</description>
            </option>
        </enum>
    </types>
    <examples>
        <example>
            <description>
                Runs [`dotnet msbuild`](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-msbuild) command for Rebuild target for a specified solution in the build checkout directory with detailed logging
            </description>
            <code>
                dotnetMsBuild {
                    projects = "MySolution.sln"
                    version = DotnetMsBuildStep.MSBuildVersion.CrossPlatform
                    targets = "Rebuild"
                    configuration = "Release"
                    logging = DotnetMsBuildStep.Verbosity.Detailed
                    sdk = "4.8.1"
                }
            </code>
        </example>
    </examples>
</dsl-extension>