使用命令行编译启动 .NET 程序

2020/05/07 32

微软一贯的作风是喜欢给用户一套可视化的工具,方便用户快速入门,例如 WindowsVisual StudioSQL Server Manegement Studio。通过可视化可以快速简单的操作程序,微软曾经推出了 ASP.NET WebForm,竟然能让程序员通过拖控件的方式快速开发 Web 网站,由于门槛降低后,通过大量的拖控件,.NET “被”成为性能低下的平台,不禁令人唏嘘,后来微软也放弃了 WebForm。我也认为,可视化本来就是趋势,程序员也不应该因为微软出了可视化工具,就觉得微软的东西简单,放弃学习。其实这些东西顶多就算是入门简单,深入也挺难的。

VS 中我们直接使用 ctrl + F5 就能运行程序了,但是如何使用命令行编译和运行 .NET 程序呢?

.NET Core

.NET Core 是跨平台的,所以 .NET Core SDK 就已经包含了这些命令,使用 dotnet --hlep 就可以使用了

PS C:\Users\41608> dotnet --help
.NET Core SDK (3.1.201)
使用情况: dotnet [runtime-options] [path-to-application] [arguments]

执行 .NET Core 应用程序。

runtime-options:
  --additionalprobingpath <path>   要探测的包含探测策略和程序集的路径。
  --additional-deps <path>         指向其他 deps.json 文件的路径。
  --fx-version <version>           要用于运行应用程序的安装版共享框架的版本。
  --roll-forward <setting>         前滚至框架版本(LatestPatch, Minor, LatestMinor, Major, LatestMajor, Disable)。

path-to-application:
  要执行的应用程序 .dll 文件的路径。

使用情况: dotnet [sdk-options] [command] [command-options] [arguments]

执行 .NET Core SDK 命令。

sdk-options:
  -d|--diagnostics  启用诊断输出。
  -h|--help         显示命令行帮助。
  --info            显示 .NET Core 信息。
  --list-runtimes   显示安装的运行时。
  --list-sdks       显示安装的 SDK。
  --version         显示使用中的 .NET Core SDK 版本。

SDK 命令:
  add               将包或引用添加到 .NET 项目。
  build             生成 .NET 项目。
  build-server      与由生成版本启动的服务器进行交互。
  clean             清理 .NET 项目的生成输出。
  help              显示命令行帮助。
  list              列出 .NET 项目的项目引用。
  msbuild           运行 Microsoft 生成引擎(MSBuild)命令。
  new               创建新的 .NET 项目或文件。
  nuget             提供其他 NuGet 命令。
  pack              创建 NuGet 包。
  publish           发布 .NET 项目进行部署。
  remove            从 .NET 项目中删除包或引用。
  restore           还原 .NET 项目中指定的依赖项。
  run               生成并运行 .NET 项目输出。
  sln               修改 Visual Studio 解决方案文件。
  store             在运行时包存储中存储指定的程序集。
  test              使用 .NET 项目中指定的测试运行程序运行单元测试。
  tool              安装或管理扩展 .NET 体验的工具。
  vstest            运行 Microsoft 测试引擎(VSTest)命令。

捆绑工具中的其他命令:
  dev-certs         创建和管理开发证书。
  fsi               启动 F# 交互/执行 F# 脚本。
  sql-cache         SQL Server 缓存命令行工具。
  user-secrets      管理开发用户密码。
  watch             启动文件观察程序,它会在文件发生更改时运行命令。

运行 "dotnet [command] --help",获取有关命令的详细信息。

.NET Framework

.NET Framework 使用 MSBuild 编译 .NET 程序,我是用的是 Visual Studio 2019,目前 MSBuild 位于 C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin 下,可以添加到环境变量中,使用方式如下:

PS C:\Users\Windows\source\repos\ConsoleApp3\ConsoleApp3> MSBuild.exe .\ConsoleApp3.csproj
用于 .NET Framework 的 Microsoft (R) 生成引擎版本 16.5.0+d4cbfca49
版权所有(C) Microsoft Corporation。保留所有权利。

生成启动时间为 2020/5/7 12:11:39。
节点 1 上的项目“C:\Users\41608\source\repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.csproj”(默认目标)。
GenerateBindingRedirects:
  ResolveAssemblyReferences 中没有建议的绑定重定向。
GenerateTargetFrameworkMonikerAttribute:
正在跳过目标“GenerateTargetFrameworkMonikerAttribute”,因为所有输出文件相对于输入文件而言都是最新的。
CoreCompile:
正在跳过目标“CoreCompile”,因为所有输出文件相对于输入文件而言都是最新的。
_CopyFilesMarkedCopyLocal:
  正在对“C:\Users\41608\source\repos\ConsoleApp3\ConsoleApp3\obj\Debug\ConsoleApp3.csproj.CopyComplete”执行 Touch 任务。_CopyAppConfigFile:
正在跳过目标“_CopyAppConfigFile”,因为所有输出文件相对于输入文件而言都是最新的。
CopyFilesToOutputDirectory:
  ConsoleApp3 -> C:\Users\41608\source\repos\ConsoleApp3\ConsoleApp3\bin\Debug\ConsoleApp3.exe
已完成生成项目“C:\Users\41608\source\repos\ConsoleApp3\ConsoleApp3\ConsoleApp3.csproj”(默认目标)的操作。


已成功生成。
    0 个警告
    0 个错误

已用时间 00:00:00.46

然后输入 .\bin\Debug\ConsoleApp3.exe 或者 start .\bin\Debug\ConsoleApp3.exe 启动程序。

评论