From: 011netservice@gmail.com Date: 2022-04-24 Subject: 在 Windows 環境中建立 .NET Core app 後執行 摘要: 1. dotnet new console: 建立 .NET Core app 並編譯. 2. dotnet run: 執行工作目錄中的專案檔案.csproj. 3. dotnet : 執行編譯後的 NET Core assemblie. (例如 dotnet temp.dll). ---------- 2021-04-21 在 Windows 環境中建立 .NET Core app 後執行: 1. 在 C:\temp\ 中開啟 PowerShell 後, 輸入 "dotnet new console" 執行, 會自動建立(.csproj專案和Program.cs原始碼檔案), 並且自動編譯為工作環境中可執行檔: PS C:\temp> dotnet new console The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on C:\temp\temp.csproj... 正在判斷要還原的專案... 已還原 C:\temp\temp.csproj (99 ms 內)。 Restore succeeded. 2. 執行目錄中預設的專案檔 .csproj PS C:\temp> dotnet run Hello World! 3. 檢查 C:\temp\ 自動建立了以下的檔案: PS C:\temp> dir -Depth 4 目錄: C:\temp Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2021/4/21 下午 03:00 bin d----- 2021/4/21 下午 03:00 obj -a---- 2021/4/21 下午 02:59 186 Program.cs ----> 原始碼檔案, 內容詳於後. -a---- 2021/4/21 下午 02:59 171 temp.csproj ----> 專案檔案, 內容詳於後. 目錄: C:\temp\bin Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2021/4/21 下午 03:00 Debug 目錄: C:\temp\bin\Debug Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2021/4/21 下午 03:00 net5.0 目錄: C:\temp\bin\Debug\net5.0 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2021/4/21 下午 03:00 ref -a---- 2021/4/21 下午 03:00 404 temp.deps.json -a---- 2021/4/21 下午 03:00 4608 temp.dll -a---- 2021/4/21 下午 03:00 142848 temp.exe -a---- 2021/4/21 下午 03:00 9512 temp.pdb -a---- 2021/4/21 下午 03:00 318 temp.runtimeconfig.dev.json -a---- 2021/4/21 下午 03:00 147 temp.runtimeconfig.json 目錄: C:\temp\bin\Debug\net5.0\ref Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2021/4/21 下午 03:00 5120 temp.dll 目錄: C:\temp\obj Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2021/4/21 下午 03:00 Debug -a---- 2021/4/21 下午 02:59 2214 project.assets.json -a---- 2021/4/21 下午 02:59 242 project.nuget.cache -a---- 2021/4/21 下午 02:59 2079 temp.csproj.nuget.dgspec.json -a---- 2021/4/21 下午 02:59 1563 temp.csproj.nuget.g.props -a---- 2021/4/21 下午 02:59 294 temp.csproj.nuget.g.targets 目錄: C:\temp\obj\Debug Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2021/4/21 下午 03:00 net5.0 目錄: C:\temp\obj\Debug\net5.0 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2021/4/21 下午 03:00 ref -a---- 2021/4/21 下午 03:00 190 .NETCoreApp,Version=v5.0.AssemblyAttributes.cs -a---- 2021/4/21 下午 03:00 142848 apphost.exe -a---- 2021/4/21 下午 03:00 941 temp.AssemblyInfo.cs -a---- 2021/4/21 下午 03:00 42 temp.AssemblyInfoInputs.cache -a---- 2021/4/21 下午 03:00 268 temp.assets.cache -a---- 2021/4/21 下午 03:00 42 temp.csproj.CoreCompileInputs.cache -a---- 2021/4/21 下午 03:00 751 temp.csproj.FileListAbsolute.txt -a---- 2021/4/21 下午 03:00 85257 temp.csprojAssemblyReference.cache -a---- 2021/4/21 下午 03:00 4608 temp.dll -a---- 2021/4/21 下午 03:00 343 temp.GeneratedMSBuildEditorConfig.editorconfig -a---- 2021/4/21 下午 03:00 42 temp.genruntimeconfig.cache -a---- 2021/4/21 下午 03:00 9512 temp.pdb 目錄: C:\temp\obj\Debug\net5.0\ref Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2021/4/21 下午 03:00 5120 temp.dll 4. 修改程式, 重新編譯後執行: 專案檔案 temp.csproj 內容如下: Exe net5.0 原先的原始碼檔案 Program.cs 內容如下: using System; namespace temp { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } } 將 Program.cs 修改如下: using System; namespace temp { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.WriteLine(DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss.fff")); } } } 執行 "dotnet run" 就會解譯最新的原始碼後執行: PS C:\temp> dotnet run Hello World! 2021.04.21 15:24:14.715 5. 若是要執行編譯後的 assemblies, 而不是執行專案檔.csproj的話, 參考說明如下: ref: https://docs.microsoft.com/zh-tw/dotnet/core/tools/dotnet-run The dotnet run command is used in the context of projects, not built assemblies. If you're trying to run a framework-dependent application DLL instead, you must use dotnet without a command. For example, to run myapp.dll, use: dotnet myapp.dll To run the application, the dotnet run command resolves the dependencies of the application that are outside of the shared runtime from the NuGet cache. Because it uses cached dependencies, it's not recommended to use dotnet run to run applications in production. Instead, create a deployment using the dotnet publish command and deploy the published output. 執行範例如下: 先找到編譯後的 assemblies 為 C:\temp\bin\Debug\net5.0\, 進入該目錄後, 執行"dotnet " PS C:\temp\bin\Debug\net5.0> dotnet temp.dll Hello World! 2021.04.21 15:57:32.274