C# - 如何将 DLL 嵌入到项目中? [复制]
Posted
技术标签:
【中文标题】C# - 如何将 DLL 嵌入到项目中? [复制]【英文标题】:C# - How to embed DLL into the project? [duplicate] 【发布时间】: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 在大小方面,我的程序的大小一点也不大。在存档方面,我不想让用户搞乱提取,而只是保持一切简单,因为该软件旨在简化计算机中的过程。 【参考方案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以上是关于C# - 如何将 DLL 嵌入到项目中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 C++ 源文件和头文件添加到 C# .Net 项目? [复制]