如何向dotnet publish传递参数供应用Main方法的args接收?
答案
哎,刚好踩过这个坑!先给你明确结论:dotnet publish 本身的参数是用来控制打包流程的,没法直接把参数传给你应用里 Main 方法的 args 数组。毕竟 dotnet publish 只是负责把你的代码编译打包成可部署的文件,它根本不会运行你的应用——而 Main 的 args 是要等应用真正启动运行的时候才会接收输入的。
不过你要是想让应用拿到参数,完全可以在发布完成后运行打包好的程序时传呀,举个实际操作的例子:
- 先正常执行发布命令完成打包:
dotnet publish -c Release -o ./publish - 进入生成的发布目录,运行应用并带上参数:
这时候你的cd ./publish dotnet YourApp.dll arg1 arg2 "this is a multi-word argument"Main方法里的args数组就会收到["arg1", "arg2", "this is a multi-word argument"],完全符合你的需求。
要是你想的是在打包阶段就把某些参数植入应用(比如固定的版本号、环境标识这类),那靠 Main 的 args 就不行了,得换别的路子:
- 用编译常量:发布时加
/p:DefineConstants=YOUR_CUSTOM_CONST参数定义编译常量,代码里直接判断使用 - 修改配置文件:发布后用脚本或者工具修改
appsettings.json这类配置文件,应用运行时从配置读取 - 用环境变量:在发布脚本里设置好环境变量,应用启动时读取这些变量
内容的提问来源于stack exchange,提问作者fuzzi
相关产品推荐
相关产品推荐

