dotnet sln (команда для работы с решениями в .NET)

Эта статья относится к: ✔️ пакету SDK для .NET 6 и более поздних версий

Имя

dotnet sln— перечисляет или изменяет проекты в файле решения .NET или фильтре решения или переносит файл .sln в SLNX-файл.

Синопсис

dotnet sln [<SOLUTION_FILE>] [command]

dotnet sln [command] -h|--help

Описание

Команда dotnet sln предоставляет удобный способ перечисления и изменения проектов в файле решения или фильтре решения.

Создание файла решения

Чтобы использовать команду dotnet sln, файл решения должен уже существовать. Если необходимо создать его, используйте команду dotnet dotnet new с именем шаблона sln.

В следующем примере создается SLNX-файл в текущей папке с тем же именем, что и папка:

dotnet new sln

В следующем примере создается SLNX-файл в текущей папке с указанным именем файла:

dotnet new sln --name MySolution

В следующем примере создается SLNX-файл в указанной папке с тем же именем, что и папка:

dotnet new sln --output MySolution

Замечание

В .NET 9 и более ранних версиях dotnet new sln создается файл .sln вместо SLNX-файла .

Создание фильтра решения

Начиная с .NET 11, можно создать фильтр решения (SLNF-файл) с slnf помощью шаблона:

dotnet new slnf --name MyApp.slnf

Аргументы

  • SOLUTION_FILE

    Файл решения (.sln или SLNX-файл ) или фильтр решения (SLNF-файл ).

    Если не указано, команда выполняет поиск текущего каталога для .sln, SLNX или SLNF-файла , а если он находит именно один, использует этот файл. Если найдено несколько файлов решения или фильтров, пользователю будет предложено явно указать файл. Если ни один из них не найден, команда завершается ошибкой.

Параметры

  • -?|-h|--helpВыводит описание использования команды.

Команды

Доступны следующие команды:

list

Выводит список всех проектов в файле решения.

Синопсис

dotnet sln list [-h|--help]

Аргументы

  • SOLUTION_FILE

    Файл решения (.sln или SLNX-файл ) или фильтр решения (SLNF-файл ).

    Если не указано, команда выполняет поиск текущего каталога для .sln, SLNX или SLNF-файла , а если он находит именно один, использует этот файл. Если найдено несколько файлов решения или фильтров, пользователю будет предложено явно указать файл. Если ни один из них не найден, команда завершается ошибкой.

    (Поддержка SLNF-файлов добавлена в пакет SDK для .NET 9.0.3xx.)

Параметры

  • -?|-h|--helpВыводит описание использования команды.

add

Добавляет один или несколько проектов в файл решения.

Синопсис

dotnet sln [<SOLUTION_FILE>] add [--in-root] [-s|--solution-folder <PATH>] <PROJECT_PATH> [<PROJECT_PATH>...]
dotnet sln add [-h|--help]

Аргументы

  • SOLUTION_FILE

    Файл решения (.sln или SLNX-файл ) или фильтр решения (SLNF-файл ).

    Если не указано, команда выполняет поиск текущего каталога для .sln, SLNX или SLNF-файла , а если он находит именно один, использует этот файл. Если найдено несколько файлов решения или фильтров, пользователю будет предложено явно указать файл. Если ни один из них не найден, команда завершается ошибкой.

    (Добавлена поддержка SLNF-файлов в .NET 11.)

  • PROJECT_PATH

    Путь к проекту или проектам для добавления в фильтр решения или решения. Оболочка Unix/Linux шаблоны расширения обрабатываются правильно командой dotnet sln. Фильтры решений не поддерживают --in-root параметры или -s|--solution-folder параметры.

    Если PROJECT_PATH содержит папки, содержащие папку проекта, эта часть пути используется для создания папок решения . Например, следующие команды создают решение с myapp в папке решения folder1/folder2:

    dotnet new sln
    dotnet new console --output folder1/folder2/myapp
    dotnet sln add folder1/folder2/myapp
    

    Это поведение по умолчанию можно переопределить с помощью --in-root или параметра -s|--solution-folder <PATH>.

Параметры

  • -?|-h|--help

    Выводит описание использования команды.

  • --in-root

    Помещает проекты в корневой каталог решения, а не создает папку решения . Нельзя использовать с -s|--solution-folder.

  • -s|--solution-folder <PATH>

    Папка целевого решения пути для добавления проектов. Нельзя использовать с --in-root.

remove

Удаляет проект или несколько проектов из файла решения.

Синопсис

dotnet sln [<SOLUTION_FILE>] remove <PROJECT_PATH|PROJECT_NAME> [<PROJECT_PATH|PROJECT_NAME>...]
dotnet sln [<SOLUTION_FILE>] remove [-h|--help]

Аргументы

  • SOLUTION_FILE

    Файл решения (.sln или SLNX-файл ) или фильтр решения (SLNF-файл ).

    Если не указано, команда выполняет поиск текущего каталога для .sln, SLNX или SLNF-файла , а если он находит именно один, использует этот файл. Если найдено несколько файлов решения или фильтров, пользователю будет предложено явно указать файл. Если ни один из них не найден, команда завершается ошибкой.

    (Добавлена поддержка SLNF-файлов в .NET 11.)

  • PROJECT_PATH или PROJECT_NAME

    Путь к проекту или проектам, которые нужно удалить из фильтра решения или решения. Оболочка Unix/Linux шаблоны расширения обрабатываются правильно командой dotnet sln.

    Если имя проекта указано вместо пути, проект в решении, который соответствует имени, независимо от его пути, удаляется. Если в решении найдено несколько соответствующих проектов, команда ошибается. Опустите расширение файла проекта в имени. (Добавлена поддержка удаления проектов по имени в .NET 10.)

Параметры

  • -?|-h|--helpВыводит описание использования команды.

migrate

Создает файл решения .slnx из файла .sln.

Синопсис

dotnet sln [<SOLUTION_FILE>] migrate
dotnet sln [<SOLUTION_FILE>] migrate [-h|--help]

Аргументы

  • SOLUTION_FILE

    Файл решения .sln для миграции.

    Если не указано, команда выполняет поиск текущего каталога для файла .sln и, если он находит именно один, использует этот файл. Если найдено несколько .sln файлов, пользователю будет предложено явно указать файл. Если ни один из них не найден, команда завершается ошибкой.

    Если указать SLNX-файл вместо файла .sln или если в каталоге уже существует SLN X-файл с тем же именем файла (минус расширением .sln), команда завершается ошибкой.

Параметры

  • -?|-h|--helpВыводит описание использования команды.

Примеры

  • Вывод списка проектов в решении:

    dotnet sln todo.slnx list
    
  • Создайте фильтр решения, добавьте проект, перечислите проекты и удалите проект:

    dotnet new sln --name MyApp
    dotnet sln MyApp.slnx add src/Lib/Lib.csproj
    dotnet new slnf --name MyApp.slnf
    dotnet sln MyApp.slnf add src/Lib/Lib.csproj
    dotnet sln MyApp.slnf list
    dotnet sln MyApp.slnf remove src/Lib/Lib.csproj
    
  • Добавьте проект C# в решение:

    dotnet sln add todo-app/todo-app.csproj
    
  • Удалите проект C# из решения:

    dotnet sln remove todo-app/todo-app.csproj
    
  • Добавьте несколько проектов C# в корневой каталог решения:

    dotnet sln todo.slnx add todo-app/todo-app.csproj back-end/back-end.csproj --in-root
    
  • Добавьте несколько проектов C# в решение:

    dotnet sln todo.slnx add todo-app/todo-app.csproj back-end/back-end.csproj
    
  • Удалите несколько проектов C# из решения:

    dotnet sln todo.slnx remove todo-app/todo-app.csproj back-end/back-end.csproj
    
  • Добавьте несколько проектов C# в решение с помощью шаблона глоббинга (только Для Unix/Linux):

    dotnet sln todo.slnx add **/*.csproj
    
  • Добавьте несколько проектов C# в решение с помощью шаблона глоббинга (только Для Windows PowerShell):

    dotnet sln todo.slnx add (ls -r **/*.csproj)
    
  • Удалите несколько проектов C# из решения с помощью шаблона глоббинга (только для Unix/Linux):

    dotnet sln todo.slnx remove **/*.csproj
    
  • Удалите несколько проектов C# из решения с помощью шаблона глоббинга (только Для Windows PowerShell):

    dotnet sln todo.slnx remove (ls -r **/*.csproj)
    
  • Создайте SLNX-файл из файла .sln:

    dotnet sln todo.sln migrate
    
  • Создайте решение, консольное приложение и две библиотеки классов. Добавьте проекты в решение и используйте параметр --solution-folderdotnet sln для упорядочивания библиотек классов в папку решения.

    dotnet new sln -n mysolution
    dotnet new console -o myapp
    dotnet new classlib -o mylib1
    dotnet new classlib -o mylib2
    dotnet sln mysolution.slnx add myapp\myapp.csproj
    dotnet sln mysolution.slnx add mylib1\mylib1.csproj --solution-folder mylibs
    dotnet sln mysolution.slnx add mylib2\mylib2.csproj --solution-folder mylibs
    

    На следующем снимке экрана показан результат в обозревателе решений Visual Studio 2019:

    обозревателе решений с проектами библиотеки классов, сгруппированных в папку решения.

См. также