Linux系统下Visual Studio Code中生成C#可执行文件的方法及相关疑问
Linux系统下Visual Studio Code中生成C#可执行文件的方法及相关疑问
嗨,我来帮你理清这个问题~
首先先解答你的疑问:Linux上并不需要Windows那种.exe格式的文件,Linux的可执行程序通常是没有后缀的二进制文件,所以你真正想要的是能直接在Linux上运行的原生可执行文件,而不是Windows的EXE。
接下来看你遇到的问题:为什么build出来是DLL?这是因为.NET 5+(包括你用的.NET 9)在默认情况下,会生成依赖框架的部署包——也就是一个DLL文件,需要通过dotnet project.dll或者dotnet run命令来运行,前提是你的系统已经安装了.NET Runtime。如果你想要生成能直接双击/执行的独立可执行文件,可以用下面两种方法:
方法一:修改项目文件(.csproj)
打开你的project.csproj文件,在<PropertyGroup>节点里添加以下配置:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net9.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <!-- 添加这两行 --> <RuntimeIdentifier>linux-x64</RuntimeIdentifier> <SelfContained>true</SelfContained> </PropertyGroup> </Project>
RuntimeIdentifier指定了目标运行环境,linux-x64对应64位的Linux系统;如果你是ARM架构的Linux,可以换成linux-arm64SelfContained设为true表示生成独立部署包,会把.NET Runtime一起打包进去,生成的可执行文件不需要依赖系统安装的.NET Runtime
保存后重新执行dotnet build,你会在project/bin/Debug/net9.0/linux-x64/目录下看到一个和项目同名的无后缀文件,这就是Linux的可执行文件,直接用./project就能运行。
方法二:用命令行参数直接构建
如果你不想修改项目文件,也可以在终端执行build命令时加上参数:
dotnet build -r linux-x64 --self-contained true
效果和修改项目文件一样,同样会在对应runtime目录下生成独立可执行文件。
补充说明
- 如果你只是日常开发测试,其实不需要生成独立可执行文件,直接用
dotnet run命令就能运行你的项目,它会自动处理DLL的执行 - 关于VSCode的调试警告:因为你安装的是Arch仓库里的VSCode,不是微软官方发布的包,所以会有这个提示,但不影响调试功能的正常使用,配置好launch.json后就能正常调试
- 如果你不需要独立部署,只是想让输出更直观,也可以保持依赖框架模式,用
dotnet project.dll来运行DLL文件,这在开发阶段是完全够用的
内容来源于stack exchange




