You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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-arm64
  • SelfContained设为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目录下生成独立可执行文件。

补充说明

  1. 如果你只是日常开发测试,其实不需要生成独立可执行文件,直接用dotnet run命令就能运行你的项目,它会自动处理DLL的执行
  2. 关于VSCode的调试警告:因为你安装的是Arch仓库里的VSCode,不是微软官方发布的包,所以会有这个提示,但不影响调试功能的正常使用,配置好launch.json后就能正常调试
  3. 如果你不需要独立部署,只是想让输出更直观,也可以保持依赖框架模式,用dotnet project.dll来运行DLL文件,这在开发阶段是完全够用的

内容来源于stack exchange

火山引擎 最新活动