dotnet run

本文適用於: ✔️ .NET Core 3.1 SDK 與更新版本

名稱

dotnet run - 執行原始程式碼,而不需要有任何明確的編譯或啟動命令。

概要

dotnet run [-a|--arch <ARCHITECTURE>] [-c|--configuration <CONFIGURATION>]
    [-f|--framework <FRAMEWORK>] [--force] [--interactive]
    [--launch-profile <NAME>] [--no-build]
    [--no-dependencies] [--no-launch-profile] [--no-restore]
    [--os <OS>] [--project <PATH>] [-r|--runtime <RUNTIME_IDENTIFIER>]
    [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
    [[--] [application arguments]]

dotnet run -h|--help

描述

dotnet run 命令提供方便的選項,以使用一個命令透過原始程式碼來執行應用程式。 其適合從命令列進行的快速反覆式開發法。 此命令仰賴 dotnet build 命令來建置程式碼。 建置的任何需求 (例如必須先還原專案) 也同樣適用於 dotnet run

注意

dotnet run 不遵循 dotnet build 遵循的 /property:property=value 之類的引數。

輸出檔會寫入至預設位置,也就是 bin/<configuration>/<target>。 例如,如果您有 netcoreapp2.1 應用程式並執行 dotnet run,輸出將會放置在 bin/Debug/netcoreapp2.1 中。 而且會視需要覆寫檔案。 暫存檔案會放置在 obj 目錄中。

如果專案指定多個架構,執行 dotnet run 會導致錯誤,除非使用 -f|--framework <FRAMEWORK> 選項來指定架構。

dotnet run 命令用於專案內容中,而非已建置的組件。 如果您改為嘗試執行與 Framework 相依的應用程式 DLL,您必須不透過命令使用 dotnet。 例如,若要執行 myapp.dll,使用︰

dotnet myapp.dll

如需 dotnet 驅動程式的詳細資訊,請參閱 .NET 命令列工具 (CLI) 主題。

為了執行應用程式,dotnet run 命令會從 NuGet 快取解析共用執行階段之外的應用程式相依性。 因為它會使用快取相依性,不建議您在生產環境中使用 dotnet run 執行應用程式。 相反地,使用 dotnet publish 命令建立部署,並部署已發佈的輸出。

隱含還原

您不必執行 dotnet restore,因為其會由需要進行還原的所有命令隱含執行,例如 dotnet newdotnet builddotnet rundotnet testdotnet publishdotnet pack。 若要停用隱含還原,請使用 --no-restore 選項。

dotnet restore 命令在適合進行明確還原的特定案例中仍可派上用場,例如 Azure DevOps Services 中的持續整合組建,或在需要明確控制何時進行還原的組建系統中。

如需了解如何管理 NuGet 摘要,請參閱 dotnet restore 文件

此命令支援以完整形式傳入的 dotnet restore 選項 (例如 --source)。 不支援簡短形式選項,例如 -s

工作負載資訊清單下載

執行此命令會啟動工作負載公告資訊清單的非同步背景下載。 若此命令完成時下載仍在執行,則會停止下載。 如需詳細資訊,請參閱廣告資訊清單

選項。

  • --

    分隔 dotnet run 的引數與執行中應用程式的引數。 此分隔符號之後的所有引數會傳遞至執行的應用程式。

  • -a|--arch <ARCHITECTURE>

    指定目標結構。 這是用於設定執行階段識別碼 (RID) 的速記語法,其中提供的值會與預設 RID 合併。 例如在 win-x64 機器上,指定 --arch x86 將 RID 設定為 win-x86。 若使用此選項,請勿使用 -r|--runtime 選項。 自 .NET 6 Preview 7 起提供使用。

  • -c|--configuration <CONFIGURATION>

    定義組建組態。 大部分專案的預設值為 Debug,但您可以覆寫專案中的組建組態設定。

  • -f|--framework <FRAMEWORK>

    使用指定的架構建置並執行應用程式。 架構必須在專案檔中指定。

  • --force

    即使最後的還原成功,仍強制解析所有相依性。 指定這個旗標等同於刪除 project.assets.json 檔案。

  • -?|-h|--help

    列印如何使用命令的描述。

  • --interactive

    可讓命令停止,並等候使用者輸入或進行動作。 例如完成驗證。 自 .NET Core 3.0 SDK 起提供使用。

  • --launch-profile <NAME>

    啟動應用程式時使用的啟動設定檔名稱 (如果有的話)。 啟動設定檔是在 launchSettings.json 檔案中定義,通常稱為 DevelopmentStagingProduction。 如需詳細資訊,請參閱使用多個環境

  • --no-build

    不會在執行前建置專案。 選項也會隱含設定 --no-restore 旗標。

  • --no-dependencies

    在還原包含專案對專案 (P2P) 參考的專案時,會還原根專案,而非參考。

  • --no-launch-profile

    不會嘗試使用 launchSettings.json 來設定應用程式。

  • --no-restore

    執行命令時,不會執行隱含還原。

  • --os <OS>

    指定目標作業系統 (OS)。 這是用於設定執行階段識別碼 (RID) 的速記語法,其中提供的值會與預設 RID 合併。 例如在 win-x64 機器上,指定 --os linux 將 RID 設定為 linux-x64。 若使用此選項,請勿使用 -r|--runtime 選項。 自 .NET 6 起提供使用。

  • --project <PATH>

    指定要執行的專案檔路徑 (資料夾名稱或完整路徑)。 如果未指定,則會預設為目前目錄。

    --project-p 縮寫從 .NET 6 SDK 開始已被取代。 從 .NET 6 RC1 SDK 開始的有限時間內,即使出現取代警告,-p 仍可用於 --project。 如果為選項提供的引數不包含 =,命令會接受 -p 做為 --project 的縮寫。 否則,命令會假設 -p--property 的縮寫。 --project-p 這種的彈性使用將在 .NET 7 中淘汰。

  • --property:<NAME>=<VALUE>

    設定一個或多個 MSBuild 屬性。 指定以分號分隔的多個屬性,或重複選項:

    --property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2>
    --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
    

    縮寫形式 -p 可用於 --property。 如果為選項提供的引數包含 =,則會接受 -p 做為 --property 的縮寫。 否則,命令會假設 -p--project 的縮寫。

    若要將 --property 傳遞到應用程式,而不設定 MSBuild 屬性,請在 -- 語法分隔符號後面提供選項,例如:

    dotnet run -- --property name=value
    
  • -r|--runtime <RUNTIME_IDENTIFIER>

    指定要還原套件的目標執行階段。 如需執行階段識別項 (RID) 清單,請參閱 RID 目錄

  • --tl:[auto|on|off]

    指定終端記錄器是否應該用於組建輸出。 預設值為 auto,這會先驗證環境,再啟用終端記錄。 環境檢查會驗證終端是否能夠使用新式輸出功能,而且在啟用新的記錄器之前,不會使用重新導向的標準輸出。 on 略過環境檢查並啟用終端記錄。 off 略過環境檢查並使用預設控制台記錄器。

    終端記錄器會顯示還原階段,後面接著建置階段。 在每個階段,目前建置的專案會出現在終端底部。 建置的每個專案都會輸出目前建置的 MSBuild 目標,以及花費在該目標上的時間量。 您可以搜尋此資訊以深入了解組建。 當專案完成建置時,撰寫了單一「已完成建置」區段來擷取:

    • 所建置專案的名稱。
    • 目標架構 (如果為多目標)。
    • 該組建的狀態。
    • 該組建的主要輸出 (已有超連結)。
    • 任何針對該專案產生的診斷。

    此選項從 .NET 8 開始提供使用。

  • -v|--verbosity <LEVEL>

    設定命令的詳細資訊層級。 允許的值為 q[uiet]m[inimal]n[ormal]d[etailed]diag[nostic]。 預設為 minimal。 如需詳細資訊,請參閱LoggerVerbosity

範例

  • 執行目前目錄中的專案:

    dotnet run
    
  • 執行指定的專案:

    dotnet run --project ./projects/proj1/proj1.csproj
    
  • 在目前目錄中執行專案,並指定版本設定:

    dotnet run --property:Configuration=Release
    
  • 執行目前目錄中的專案 (因為已使用空白的 -- 選項,所以這個範例中的 --help 引數會傳遞給應用程式):

    dotnet run --configuration Release -- --help
    
  • 還原相依性及目前目錄中專案的工具,只會顯示最基本的輸出,然後執行專案:

    dotnet run --verbosity m