【问题标题】:How do you make an exe run without needing all the dll files in the same directory?如何在不需要同一目录中的所有 dll 文件的情况下运行 exe?
【发布时间】:2021-06-12 14:13:18
【问题描述】:

因此,如果可能的话,我会尝试将所有 DLL 文件合并到我的 exe 中,这样我就可以运行 exe 而无需在同一目录中使用 DLL 文件 我尝试四处寻找其他提出相同问题的人,但并没有真正找到任何有用的东西或我个人可以关注的任何东西。

提前感谢您的帮助

【问题讨论】:

  • 发布项目时,在配置文件设置下选择部署模式为“自包含”,在文件发布选项下,选择“生成单个文件”。这将为您的项目生成一个工作的 .exe 文件(以及一个 .pdb 文件)
  • 请问如何管理GAC?在 EXE 中嵌入 DLL?使用共享文件夹?或者在没有任何 DLL 的情况下运行(?)?不然呢?
  • 是的,这是可能的:例如参见stackoverflow.com/questions/189549/… 并在网上搜索“c# embed dll in executable”。
  • @Max - 点击“全部显示”,然后你会找到部署模式设置。选择“自包含”部署模式。然后,选择您的特定目标运行时。选择目标运行时后,您将看到其他“文件发布选项”。在那里,选中“生成单个文件”复选框。

标签: c# visual-studio dll console-application exe


【解决方案1】:

选项 1:.NET Core >3.x、.NET 5

Single-file deployment,您可以编辑您的项目文件以包含以下内容

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <PublishSingleFile>true</PublishSingleFile>
    <SelfContained>true</SelfContained>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <PublishTrimmed>true</PublishTrimmed>
    <PublishReadyToRun>true</PublishReadyToRun>
  </PropertyGroup>

</Project>

这对应于运行 CLI 工具: dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained true

选项 2:.NET 框架

在单文件部署可用之前(在 .NET Framework 中),我个人使用了Fody Costura。 Fody 是一个程序集编织器,在安装后,它会将一些命令放入项目的 MSBuild 配置中,使您能够做很多事情。一个加载项是 Costura,它将您的依赖项编织到一个程序集中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多