Поделиться через


Преобразование проекта dotnet

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

Имя

dotnet project convert — преобразует файловую программу в программу на основе проекта.

Synopsis

dotnet project convert <FILE> [--dry-run] [--force] [--interactive]
    [-o|--output <OUTPUT_DIRECTORY>]

dotnet project convert -h|--help

Description

Команда dotnet project convert преобразует файловую программу в программу на основе проекта. Эта команда создает новый каталог с именем файла, шаблонирует CSPROJ-файл , перемещает код в файл с тем же именем, что и входной файл, и преобразует все #: директивы в свойства и ссылки MSBuild.

Это упрощает переход из одного файла в полнофункциональный, компилируемый и расширяемый проект. Когда приложение на основе файлов растет сложность или вы просто хотите, чтобы дополнительные возможности, доступные в приложениях на основе проектов, можно преобразовать его в стандартный проект.

Процесс преобразования

Команда выполняет следующие операции:

  1. Создает новый каталог с именем входного файла (без расширения).
  2. Создает CSPROJ-файл с соответствующим пакетом SDK и свойствами.
  3. Перемещает исходный код в файл с тем же именем, что и входной файл.
  4. #: Удаляет директивы из исходного кода.
  5. Преобразует директивы: первая директива #:sdk становится или <Project Sdk="Sdk.Id/version"> атрибутом, а любые дополнительные #:sdk директивы становятся <Project Sdk="Sdk.Id"><Sdk Name="Sdk.Id" /> или <Sdk Name="Sdk.Id" Version="version" /> элементами.#:sdk
  6. Преобразует #:package директивы <PackageReference> в элементы в файле проекта.
  7. Преобразует #:property директивы в свойства MSBuild в файле проекта.
  8. Задает соответствующие свойства MSBuild на основе обнаруженного пакета SDK и платформы.

Arguments

  • FILE

    Путь к преобразованной программе на основе файлов. Файл должен быть исходным файлом C# (обычно с расширением .cs ).

Options

  • --dry-run

    Определяет изменения, не изменяя файловую систему. Показывает, что будет создано или изменено без выполнения преобразования.

  • --force

    Принудительное преобразование, даже если имеются неправильные директивы. По умолчанию команда завершается ошибкой, если она встречает директивы, которые не могут быть правильно проанализированы или преобразованы.

  • --interactive

    Позволяет команде остановиться и дождаться, пока пользователь выполнит действие или введет данные. Например, чтобы завершить проверку подлинности.

  • -o|--output <OUTPUT_DIRECTORY>

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

  • -?|-h|--help

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

Примеры

  • Преобразование файловой программы в проект:

    dotnet project convert app.cs
    

    Учитывая папку, содержащую app.cs со следующим содержимым:

    #:sdk Microsoft.NET.Sdk.Web
    #:package Microsoft.AspNetCore.OpenApi@10.*-*
    
    var builder = WebApplication.CreateBuilder();
    
    builder.Services.AddOpenApi();
    
    var app = builder.Build();
    
    app.MapGet("/", () => "Hello, world!");
    app.Run();
    

    Выполнение dotnet project convert app.cs результатов в папке с именем приложения , содержащей:

    app/app.cs:

    var builder = WebApplication.CreateBuilder();
    
    builder.Services.AddOpenApi();
    
    var app = builder.Build();
    
    app.MapGet("/", () => "Hello, world!");
    app.Run();
    

    app/app.csproj:

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net10.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <PublishAot>true</PublishAot>
        <PackAsTool>true</PackAsTool>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.*-*" />
      </ItemGroup>
    
    </Project>
    
  • Преобразование файловой программы в проект в определенном выходном каталоге:

    dotnet project convert app.cs --output MyProject
    

См. также