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


<dsl-extension kind="buildStep" type="dotnet" generateDslJar="true" applicable="params['command'] == 'devenv'">
    <class name="DevenvBuildStep">
        <description>
            A [Visual Studio IDE step](https://github.com/JetBrains/teamcity-dotnet-plugin) to run Visual Studio IDE command
        </description>
    </class>
    <function name="dotnetDevenv">
        <description>
            Adds a [Visual Studio IDE step](https://github.com/JetBrains/teamcity-dotnet-plugin) to run Visual Studio IDE command
            @see DevenvBuildStep
        </description>
    </function>
    <init>
        <param name="command" value="devenv"/>
    </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="vs.version" dslName="version" type="VSVersion">
            <description>
                Visual Studio version to use
                @see VSVersion
            </description>
        </param>
        <param name="vs.action" dslName="action" type="VSAction" mandatory="true">
            <description>
                Visual Studio IDE command to execute
                @see VSAction
            </description>
        </param>
        <param name="configuration">
            <description>Specifies the project configuration to build or deploy.</description>
        </param>
        <param name="args">
            <description>Enter additional command line parameters for .NET VisualStudio.</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="VSVersion">
            <description>Visual Studio version</description>
            <option name="Any" value="VisualStudio_Windows">
                <description>Latest installed Visual Studio</description>
            </option>
            <option name="V18" value="VisualStudio_18_Windows">
                <description>Visual Studio 2026</description>
            </option>
            <option name="V17" value="VisualStudio_17_Windows">
                <description>Visual Studio 2022</description>
            </option>
            <option name="V16" value="VisualStudio_16_Windows">
                <description>Visual Studio 2019</description>
            </option>
            <option name="V15" value="VisualStudio_15_Windows">
                <description>Visual Studio 2017</description>
            </option>
            <option name="V14" value="VisualStudio_14_Windows">
                <description>Visual Studio 2015</description>
            </option>
            <option name="V12" value="VisualStudio_12_Windows">
                <description>Visual Studio 2013</description>
            </option>
            <option name="V11" value="VisualStudio_11_Windows">
                <description>Visual Studio 2012</description>
            </option>
            <option name="V10" value="VisualStudio_10_Windows">
                <description>Visual Studio 2010</description>
            </option>
        </enum>
        <enum name="VSAction">
            <description>Build action</description>
            <option name="Clean" value="clean">
                <description>Deletes any files created by the build command, without affecting source files</description>
            </option>
            <option name="Rebuild" value="rebuild">
                <description>Cleans and then builds the specified solution or project according to the configuration of the specified solution</description>
            </option>
            <option name="Build" value="build">
                <description>Builds the specified solution or project according to the configuration of the specified solution</description>
            </option>
            <option name="Deploy" value="deploy">
                <description>Builds the solution, along with files necessary for deployment, according to the solution's configuration</description>
            </option>
        </enum>
    </types>
    <examples>
        <example>
            <description>
                Runs [`devenv.exe`](https://learn.microsoft.com/en-us/visualstudio/ide/reference/devenv-command-line-switches) command for all solution files in the build checkout directory.
            </description>
            <code>
                dotnetDevenv {
                    projects = "*.sln"
                    version = DevenvBuildStep.VSVersion.Any
                    action = DevenvBuildStep.VSAction.Clean
                }
            </code>
        </example>
    </examples>
</dsl-extension>