本文適用於: ✔️ .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 的屬性和參考。
這使得從單一檔案無縫過渡到完整功能、可建置且可擴充的專案。 當你的檔案型應用程式變得複雜,或只是想要專案型應用程式所提供的額外功能時,你可以將其轉換為標準專案。
轉換過程
指令執行以下操作:
- 建立一個以輸入檔案命名的新目錄(無副檔名)。
- 產生一個帶有適當 SDK 與屬性的 .csproj 檔案。
- 將原始碼移到與輸入檔案同名的檔案。
- 移除
#:原始碼中的指令。 - 翻譯
#:sdk指令:第一個#:sdk指令變成<Project Sdk="Sdk.Id">or<Project Sdk="Sdk.Id/version">屬性,任何後續#:sdk指令變成<Sdk Name="Sdk.Id" />or<Sdk Name="Sdk.Id" Version="version" />元素。 - 將
#:package指令<PackageReference>轉換為專案檔案中的元素。 - 將
#:property指令轉換成專案檔案中的 MSBuild 屬性。 - 根據偵測到的 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