.NET CLI 的一些使用方法
除了使用 Visual Studio 这个 IDE 把 .NET 应用程序源码编译为 exe 外还可使用 .NET CLI 命令行工具进行编译。
这种方法非常适合自动化脚本、CI/CD 流水线或在没有 IDE 的机器上操作。
.NET CLI编译
打开 命令行(CMD, PowerShell, 或 Bash)
- 导航到项目目录
1 | |
- 使用 dotnet publish 命令
1 | |
参数解释:
-c Release: 指定配置为 Release。
-r
: 指定运行时标识符,例如 win-x64, win-x86, linux-x64 等。这是生成独立应用所必需的。 —self-contained true: 生成一个独立的应用,包含所有必要的 .NET 运行时和依赖项。生成的文件会更大,但用户无需安装 .NET Runtime。
-p:PublishSingleFile=true: 将所有依赖项打包到单个 exe 文件中,极大简化了分发。
-p:PublishTrimmed=true: (可选)启用剪裁,移除未使用的代码以减小文件大小。但需谨慎使用,可能在某些场景下引发问题。
- 输出位置
编译后的文件将输出到bin\Release\{target-framework}\{rid}\publish\目录下。
例如:bin\Release\net8.0\win-x64\publish\
.NET CLI清除缓存
.NET restore 下载的包默认存储在全局的 NuGet 缓存目录中,而不是在项目文件夹里。
清除这些包的方法取决于你的目标:是只想清理某个项目的临时文件,还是想彻底清除整个全局缓存。
NuGet 全局缓存位置
这些包默认存储在以下位置:
Windows:
%USERPROFILE%\.nuget\packages例如:
C:\Users\你的用户名\.nuget\packages
macOS / Linux:
~/.nuget/packages例如:
/home/你的用户名/.nuget/packages
这个 packages 文件夹里包含了所有你曾经为任何项目恢复过的 NuGet 包的各个版本。随着时间的推移,这个文件夹会变得非常大(几个GB很常见)
如何清除这些包
你有几种不同粒度的清除方式:
方法一:使用 .NET CLI 命令清除全局缓存
这是最安全、最官方的方法。
1 | |
执行这个命令后,再下次运行 dotnet restore 或 dotnet build 时,它会重新下载所需的包。
方法二:手动删除缓存文件夹
你也可以直接去文件资源管理器找到上述路径,然后手动删除整个 packages 文件夹。
Windows: 按 Win + R,输入
%USERPROFILE%\.nuget\packages,回车,然后删除该文件夹。macOS/Linux: 在终端中运行
rm -rf ~/.nuget/packages。
注意:手动删除虽然直接,但不如使用 dotnet nuget locals --clear 命令安全可靠。
只清除特定项目的包(obj 和 bin 文件夹)
很多时候,你想“清除”的目的是解决一些诡异的编译或依赖问题(比如”这个包版本不对”)。这时,你不需要动全局缓存,只需要清理项目的本地临时文件即可。
这些文件在项目的 obj 和 bin 文件夹里。
最佳实践是使用 dotnet clean 命令:
1 | |
这个命令会删除 bin 和 obj 文件夹,但不会影响全局 NuGet 缓存。下次构建时,它会从全局缓存中提取包,并重新生成 obj 和 bin。
如果想更彻底一点,可以直接手动删除项目目录下的 bin 和 obj 文件夹。效果和 dotnet clean 一样。