You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C#结合DLL生成可移植的.EXE免安装可执行文件?

C# 单文件便携版制作方案

1. 针对 .NET Core / .NET 5 及以上版本(原生支持,推荐)

不需要额外第三方工具,用微软自带的发布功能即可实现:

  • 右键你的项目,选择「发布」,发布目标选择「文件夹」,进入发布配置页
  • 点击「显示所有设置」,调整如下参数:
    • 部署模式选择「独立」
    • 勾选「生成单个文件」
    • 可勾选「修剪未使用的代码」压缩最终文件体积
    • 根据目标运行环境选择对应的运行时(比如win-x64、win-x86)
  • 如果你的外部DLL是非托管的C/C++ DLL,需要在项目.csproj文件中添加如下配置,确保非托管DLL被打包进单文件:
<ItemGroup>
  <NativeFile Include="你的外部DLL本地路径\XXX.dll">
    <Pack>true</Pack>
    <PackagePath>runtimes\win-x64\native</PackagePath>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </NativeFile>
</ItemGroup>
  • 配置完成后点击发布,输出目录即可得到单个exe文件,直接复制到其他Windows电脑就能运行,无需提前安装.NET运行时。

2. 针对 .NET Framework 版本

如果你的项目基于.NET Framework开发,可以使用Costura.Fody工具实现打包:

  • 打开NuGet包管理器,给项目安装Costura.Fody包
  • 安装完成后默认会自动把所有托管DLL打包进exe,如果要包含非托管外部DLL,需要在项目根目录新建FodyWeavers.xml配置文件,添加如下内容:
<Weavers>
  <Costura>
    <Unmanaged32Assemblies>
      你的32位非托管DLL名称(不带.dll后缀)
    </Unmanaged32Assemblies>
    <Unmanaged64Assemblies>
      你的64位非托管DLL名称(不带.dll后缀)
    </Unmanaged64Assemblies>
  </Costura>
</Weavers>
  • 把需要调用的外部DLL添加到项目中,设置文件的「复制到输出目录」属性为「如果较新则复制」
  • 直接编译项目,输出目录的exe就是单文件便携版,运行时不需要额外附带DLL。

注意事项

  • 如果你调用的外部DLL本身依赖其他系统组件,需要确认目标电脑已存在对应组件,否则还是会运行失败,这种情况可以把依赖的系统DLL按照上述步骤一同打包即可。
  • 打包完成后建议先在无开发环境的电脑上测试运行,确认所有功能正常。

内容的提问来源于stack exchange,提问作者Angel Carrillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:15:03