共用方式為


Dotnet 專案轉換

本文適用於: ✔️ .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. 建立一個以輸入檔案命名的新目錄(無副檔名)。
  2. 產生一個帶有適當 SDK 與屬性的 .csproj 檔案。
  3. 將原始碼移到與輸入檔案同名的檔案。
  4. 移除 #: 原始碼中的指令。
  5. 翻譯 #:sdk 指令:第一個 #:sdk 指令變成 <Project Sdk="Sdk.Id"> or <Project Sdk="Sdk.Id/version"> 屬性,任何後續 #:sdk 指令變成 <Sdk Name="Sdk.Id" /> or <Sdk Name="Sdk.Id" Version="version" /> 元素。
  6. #:package 指令 <PackageReference> 轉換為專案檔案中的元素。
  7. #:property 指令轉換成專案檔案中的 MSBuild 屬性。
  8. 根據偵測到的 SDK 和框架設定適當的 MSBuild 屬性。

Arguments

  • 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
    

另請參閱