【问题标题】:C# - How to embed DLL into the project? [duplicate]C# - 如何将 DLL 嵌入到项目中? [复制]
【发布时间】:2017-12-22 13:37:08
【问题描述】:

我正在 Visual Studio 中处理一个需要嵌入 2 个 DLL 的项目。
到目前为止,我一直在引用这些 DLL,但是如果没有将文件与我的 EXE 放在同一文件夹中,我就无法使用它们。
显然,我希望我的用户只需要 EXE 即可使用它们,而无需下载 DLL。
我到目前为止尝试的事情是遵循本教程:https://www.youtube.com/watch?v=lx2tSY4joDg
但这仅适用于一个文件,遗憾的是本教程没有对我有用。

我能做什么?谢谢!

编辑:该项目是由 Windows 窗体应用程序构建的。

【问题讨论】:

  • 为什么不在构建时将引用的 dll 复制到输出文件夹?
  • 出于好奇,为什么不直接提供压缩存档格式的 exe 和 DLL?压缩它们可以节省带宽,并且大多数用户都熟悉如何解压缩文件。自解压存档会更容易。
  • @Kdawg 在大小方面,我的程序的大小一点也不大。在存档方面,我不想让用户搞乱提取,而只是保持一切简单,因为该软件旨在简化计算机中的过程。

标签: c# dll embed


【解决方案1】:

只要您不使用 .NET Core,现在使用Costura.Fody 就很容易做到这一点(正如here 的回答)。

只需像这样添加 nuget 包,它基本上是交钥匙的! Install-Package Costura.Fody

【讨论】:

  • 不起作用 - 我尝试在所有 3 个文件所在的目录中执行命令,但 Windows Powershell 返回错误。 i.imgur.com/0JyOa6j.png
  • @avi12 您可以在 Visual Studio 的 NuGet 控制台中运行此命令。据我了解,您不能在 Powershell 中运行此命令。
【解决方案2】:

您需要使用ILMerge

使用 Visual Studio 构建后,您可以像这样合并库:

ilmerge /target:winexe /out:MergedAssembly.exe VSBuiltAssembly.exe Lib1.dll Lib2.dll

【讨论】:

  • 仍然对我不起作用。我可能做错了什么。我把三个文件都放在同一个目录下,执行命令,文件夹刷新了,但是测试的时候(我把EXE放在桌面)——没用。
  • 我什至跟进了以下教程,但由于某种原因它不起作用:youtube.com/watch?v=a_r3tQ06xpE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多