C#控制台程序编译后如何在VS外运行及生成Mac等效EXE文件
好的,我来帮你搞定这两个问题——不管是在VS外部跑你的C#控制台程序,还是生成Mac系统能直接用的可执行文件,都很简单:
首先得找到VS编译出来的文件,然后分两种方式运行:
找到编译输出目录
VS默认会把编译后的程序放到项目文件夹下的bin\Debug(调试模式)或bin\Release(发布模式)目录里,里面有和你项目同名的.exe文件,还有配套的依赖.dll。直接双击或用命令行运行(Windows)
打开文件管理器找到那个.exe,双击就能启动;或者打开命令提示符/PowerShell,导航到输出目录,输入.\你的程序名.exe回车就行。用dotnet命令跨平台运行
如果你的项目是基于.NET Core/.NET 5及以上版本的,不管什么系统都能用dotnet命令跑。导航到输出目录,执行dotnet 你的程序名.dll就可以,前提是目标机器装了对应的.NET Runtime。
Mac系统没有EXE格式,对应的是无后缀的可执行文件,我们可以通过.NET的发布功能生成独立部署的版本(不需要目标Mac装.NET Runtime):
方法一:用Visual Studio图形界面发布
- 在VS里右键你的项目,选择「发布」。
- 选择「文件夹」作为发布目标,点击「下一步」。
- 点击「显示所有设置」,在「目标运行时」下拉选
osx-x64(Intel芯片Mac)或osx-arm64(M系列芯片Mac)。 - 「部署模式」选「独立」,这样生成的包会包含所有依赖,不用对方装.NET。
- 点击「发布」,完成后在指定的发布文件夹里,那个和项目同名的无后缀文件就是Mac能直接运行的程序。
方法二:用dotnet CLI命令发布
打开VS的「开发者命令提示符」或者PowerShell,导航到项目根目录(就是有.csproj文件的那个文件夹),执行对应命令:
- Intel芯片Mac:
dotnet publish -c Release -r osx-x64 --self-contained true - M系列芯片Mac:
dotnet publish -c Release -r osx-arm64 --self-contained true
发布完成后,输出文件在bin\Release\netX.X\osx-XXX\publish目录下(X.X是你的.NET版本,XXX是x64或arm64),里面的无后缀文件就是Mac可用的可执行程序。
注意:如果你的项目是旧的.NET Framework(不是.NET Core/.NET 5+),那只能在Windows运行,没法直接转Mac版本,建议迁移到.NET 6/7/8这类跨平台版本。
内容的提问来源于stack exchange,提问作者Glass Wizzard

