本教學課程示範如何發佈主控台應用程式,以便其他使用者執行它。 發佈會建立執行應用程式所需的一組檔案。 若要部署檔案,請將檔案複製到目標計算機。
先決條件
- 這個教學適用於你在 Create a .NET console application 中建立的主控台應用程式。
發佈應用程式
啟動 Visual Studio。
打開你在 建立 .NET 控制台應用程式 中建立的 HelloWorld專案。
確保 Visual Studio 使用的是 Release 建置設定。 如果有需要,請將工具列上的組建配置設定從 [除錯] 變更為 [發佈版]。
以滑鼠右鍵按兩下 HelloWorld 專案(而非 HelloWorld 方案),然後從功能表中選取 [ 發佈 ]。
在 [發佈] 頁面的 [目標] 索引標籤上,選取 [資料夾],然後選取 [下一步]。
在 [發佈] 頁面的 [特定目標] 索引標籤上,選取 [資料夾],然後選取 [下一步]。
在 [發佈] 頁面的 [位置] 索引標籤上,選取 [完成]。
在[發佈設定檔建立進度]頁面上,選取[關閉]。
在 [ 發佈 ] 視窗的 [ 發佈 ] 索引標籤上,選取 [ 發佈]。
啟動 Visual Studio Code。
打開你在 建立 .NET 控制台應用程式 中建立的 HelloWorld 專案資料夾。
從主功能表中選擇 檢視終端機。
終端機會在 HelloWorld 目錄中開啟。
執行以下命令:
dotnet publish默認建構組態是 Release,適用於在生產環境中執行的已部署的網站。 發行版組建設定的輸出含有最小的符號偵錯資訊,並已完全優化。
命令輸出類似於下列範例:
Restore complete (1.1s) HelloWorld net10.0 succeeded (7.8s) → bin\Release\net10.0\publish\ Build succeeded in 10.3s
在 建立 .NET 控制台應用程式 中建立的 GitHub Codespace,請打開它。
在 HelloWorld.cs頂部加上以下程式碼行:
#:property PublishAot=false此屬性指令會禁用原生預先編譯(AOT),應用程式在執行時將使用標準的即時編譯器(JIT)。 發表的成果會依框架而異。
在終端機裡,確定你在 教學 資料夾裡。
執行以下命令:
dotnet publish HelloWorld.cs指令會建立一個獨立的執行檔。
命令輸出類似於下列範例:
Restore complete (0.5s) HelloWorld net10.0 succeeded (4.0s) → artifacts\HelloWorld\ Build succeeded in 5.1s
檢查檔案
預設情況下,發佈流程會建立一個框架依賴部署,這是一種部署方式,即已發佈的應用程式在安裝了 .NET 執行時的機器上執行。 使用者可以按兩下可執行檔案或從命令提示字元發出 命令,以執行已發佈的應用程式。
在下列步驟中,您將查看發行程式所建立的檔案。
在 方案總管 中,選擇 顯示所有檔案。
在專案資料夾中,展開 bin/Release/{net}/publish。 (其中 {net} 是目標框架資料夾,例如 net10.0。)
如下圖所示,已發佈的輸出包含下列檔案:
HelloWorld.deps.json
這是應用程式的運行時間相依性檔案。 它定義了執行應用程式所需的 .NET 元件和函式庫(包括包含你應用程式的動態連結函式庫)。 如需詳細資訊,請參閱 運行時間組態檔。
HelloWorld.dll
這是 架構相依部署的應用程式 版本。 若要執行此動態連結庫,請在命令提示字元中輸入 。 這種執行方式適用於安裝 .NET 執行環境的任何平台。
HelloWorld.exe
這是應用程式的架構相依可執行檔版本。 若要執行它,請在命令提示字元中輸入 。 檔案是操作系統特定的。
HelloWorld.pdb (部署時可選用)
這是偵錯符號檔案。 您不需要將這個檔案與應用程式一起部署,但您應該保存它,以便在需要偵錯您應用程式的發行版本時使用。
HelloWorld.runtimeconfig.json
這是應用程式的運行時間組態檔。 它會識別你的應用程式所使用的 .NET 版本。 您也可以將組態選項新增至其中。 欲了解更多資訊,請參閱 .NET 執行時設定設定。
預設情況下,發佈流程會建立一個框架依賴部署,這是一種部署方式,即已發佈的應用程式在安裝了 .NET 執行時的機器上執行。 若要執行已發佈的應用程式,您可以使用可執行檔,或從命令提示字元執行 命令。
在下列步驟中,您將查看發行程式所建立的檔案。
選取左側導覽列中的 瀏覽器。
展開 bin/Release/net10.0/publish。
瀏覽器顯示已發行檔案
如下圖所示,已發佈的輸出包含下列檔案:
HelloWorld.deps.json
這是應用程式的運行時間相依性檔案。 它定義了執行應用程式所需的 .NET 元件和函式庫(包括包含你應用程式的動態連結函式庫)。 如需詳細資訊,請參閱 運行時間組態檔。
HelloWorld.dll
這是 架構相依部署的應用程式 版本。 若要執行此動態連結庫,請在命令提示字元中輸入 。 這種執行方式適用於安裝 .NET 執行環境的任何平台。
HelloWorld.exe (Linux 或 macOS 上的 HelloWorld。)
這是應用程式的架構相依可執行檔版本。 檔案是操作系統特定的。
HelloWorld.pdb (部署時可選用)
這是偵錯符號檔案。 您不需要將這個檔案與應用程式一起部署,但您應該保存它,以便在需要偵錯您應用程式的發行版本時使用。
HelloWorld.runtimeconfig.json
這是應用程式的運行時間組態檔。 它會識別你的應用程式所使用的 .NET 版本。 您也可以將組態選項新增至其中。 欲了解更多資訊,請參閱 .NET 執行時設定設定。
對於單一檔案應用程式,發佈流程會建立一個包含已編譯組合檔的工件目錄。 已發佈的應用程式可以使用以下 指令執行。
在下列步驟中,您將查看發行程式所建立的檔案。
選取左側導覽列中的 瀏覽器。
擴展 文物/HelloWorld。
瀏覽器顯示已發行檔案
如下圖所示,已發佈的輸出包含下列檔案:
HelloWorld
這是應用程式的架構相依可執行檔版本。 檔案是操作系統特定的。 Codespace 在 Linux 上運行,所以這是 Linux 可執行檔。
HelloWorld.deps.json
這是應用程式的運行時間相依性檔案。 它定義了執行應用程式所需的 .NET 元件和函式庫(包括包含你應用程式的動態連結函式庫)。 如需詳細資訊,請參閱 運行時間組態檔。
HelloWorld.dll
這是 架構相依部署的應用程式 版本。 若要執行此動態連結庫,請在命令提示字元中輸入 。 這種執行方式適用於安裝 .NET 執行環境的任何平台。
HelloWorld.pdb (部署時可選用)
這是偵錯符號檔案。 您不需要將這個檔案與應用程式一起部署,但您應該保存它,以便在需要偵錯您應用程式的發行版本時使用。
HelloWorld.runtimeconfig.json
這是應用程式的運行時間組態檔。 它會識別你的應用程式所使用的 .NET 版本。 您也可以將組態選項新增至其中。 欲了解更多資訊,請參閱 .NET 執行時設定設定。
右鍵點擊並選擇 下載...... 即可從 Codespaces 將檔案下載到你的本地電腦。
執行已發佈的應用程式
在 方案總管,右鍵點擊 publish 資料夾,選擇 Copy Full Path。
開啟命令提示字元並流覽至 publish 資料夾。 若要這樣做,請輸入 ,然後貼上完整路徑。 例如:
cd C:\Projects\HelloWorld\bin\Release\net10.0\publish\使用可執行檔案執行應用程式:
輸入 ,然後按 Enter。
輸入名稱以回應提示,然後按任意鍵結束。
使用 命令執行應用程式:
輸入 ,然後按 Enter。
輸入名稱以回應提示,然後按任意鍵結束。
在 Explorer中,以滑鼠右鍵按兩下 [發佈] 資料夾(Ctrl-click on macOS),然後 選取 [在整合式終端機中開啟]。
顯示 [終端機] 中開啟的 [
操作] 功能表 在 Windows 或 Linux 上,使用執行檔來執行應用程式。
Windows時,輸入
.\HelloWorld.exe,並按 Enter。在 Linux 上,輸入 ,然後按 Enter。
輸入名稱以回應提示,然後按 Enter 結束。
在任何平臺上,使用 命令執行應用程式:
輸入 ,然後按 Enter。
輸入名稱以回應提示,然後按 Enter 結束。
在 檔案總管中,右鍵點擊 artifacts/HelloWorld 資料夾,選擇「 在整合終端機開啟」。
用執行檔執行應用程式。 輸入然後按下 Enter 鍵。
輸入名稱以回應提示,然後按 Enter 結束。
其他資源
清理資源
GitHub 會在你 30 天不活躍後自動刪除你的 Codespace。 如果你打算繼續探索這個系列的更多教學,可以讓你的 Codespace 保持配置。 如果你準備好造訪 .NET 網站下載 .NET SDK,你可以刪除你的 Codespace。 要刪除你的 Codespace,打開瀏覽器視窗並導航到 你的 Codespaces。 你會在視窗中看到你的代碼空間清單。 在學習教學程式碼空間中選擇三個點()。 然後選擇「刪除」。
後續步驟
在本教學課程中,您已發布一個主控台應用程式。 在下一個教學課程中,您會建立類別庫。