次の方法で共有


dotnet project convert

この記事は、.NET 10 SDK 以降のバージョン ✔️ 適用されます

名前

dotnet project convert - ファイル ベースのプログラムをプロジェクト ベースのプログラムに変換します。

概要

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

dotnet project convert -h|--help

Description

dotnet project convert コマンドは、ファイル ベースのプログラムをプロジェクト ベースのプログラムに変換します。 このコマンドは、ファイルに名前を付けた新しいディレクトリを作成し、 .csproj ファイルをスキャフォールディングし、入力ファイルと同じ名前のファイルにコードを移動し、 #: ディレクティブを MSBuild のプロパティと参照に変換します。

これにより、1 つのファイルから完全に機能し、ビルド可能で拡張可能なプロジェクトにシームレスに移行できます。 ファイル ベースのアプリが複雑になる場合や、プロジェクト ベースのアプリで追加の機能が必要な場合は、標準プロジェクトに変換できます。

会話プロセス

このコマンドは、次の操作を実行します。

  1. 入力ファイルの名前を付けた新しいディレクトリを作成します (拡張子なし)。
  2. 適切な SDK とプロパティを持つ .csproj ファイルを生成します。
  3. 入力ファイルと同じ名前のファイルにソース コードを移動します。
  4. ソース コードから #: ディレクティブを削除します。
  5. #:sdkディレクティブを変換します。最初の#:sdkディレクティブは<Project Sdk="Sdk.Id">または<Project Sdk="Sdk.Id/version">属性になり、追加の#:sdkディレクティブは<Sdk Name="Sdk.Id" />または<Sdk Name="Sdk.Id" Version="version" />要素になります。
  6. #:package ディレクティブをプロジェクト ファイル内の<PackageReference>要素に変換します。
  7. #:property ディレクティブをプロジェクト ファイル内の MSBuild プロパティに変換します。
  8. 検出された SDK とフレームワークに基づいて適切な MSBuild プロパティを設定します。

論争

  • FILE

    変換するファイル ベースのプログラムへのパス。 ファイルは C# ソース ファイルである必要があります (通常は .cs 拡張子が付いています)。

オプション

  • --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
    

こちらも参照ください