如何使用 Visual Studio 将所有 dll 包含在所有 exe 文件中

问题描述 投票:0回答:1

我想在我的项目中使用 BerkeleyDB,但我计划将最终程序作为 .exe 文件分发。如何通过添加两个 BerkeleyDB dll 来编译程序,以便最终得到一个可以在没有这些 dll 的计算机上运行的可执行文件?

附注我已阅读所有类似的问题,

Properties -> C++ -> Runtime Library -> /MT
Properties -> Use MFC in a static library
不起作用。

c++ visual-studio dll dependency-management berkeley-db
1个回答
0
投票

在 EXE 文件中包含所有 DLL 并不常见,因为 DLL 通常是应用程序依赖的单独共享库。但是,如果您想创建包含所有依赖项的独立可执行文件,您可以考虑使用 Costura.Fody 或 ILMerge 等工具。

以下是使用 Costura.Fody 的一般步骤:

安装 Costura.Fody:

打开您的 Visual Studio 项目。 在解决方案资源管理器中右键单击您的项目,然后选择“管理 NuGet 包”。 搜索“Costura.Fody”并安装它。 配置 Costura.Fody:

安装后,Costura.Fody 将在构建过程中自动修改您的项目。 您可以通过在项目文件中添加配置来自定义行为。 .csproj 文件中的示例配置:

xml

Copy code
<PropertyGroup>
    <FodyWeavers>Costura</FodyWeavers>
</PropertyGroup>

<ItemGroup>
    <PackageReference Include="Costura.Fody" Version="7.0.1" />
</ItemGroup>

构建项目:

构建您的项目,Costura.Fody 会将引用的 DLL 嵌入到您的可执行文件中。 找到独立的可执行文件:

包含嵌入式 DLL 的独立可执行文件将位于 bin\Release 或 bin\Debug 文件夹中,具体取决于您的构建配置。 注意:将所有 DLL 嵌入到可执行文件中可能会显着增加可执行文件的大小,并且可能并不适合所有场景。在继续之前,必须考虑其影响,例如文件大小的增加和潜在的许可问题。

或者,如果您不想嵌入 DLL,您可以将它们与可执行文件一起分发到同一文件夹中,或者使用安装程序来部署您的应用程序及其依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.