如何在 VS 创建的 exe 中嵌入引用?

Posted

技术标签:

【中文标题】如何在 VS 创建的 exe 中嵌入引用?【英文标题】:How to embed a reference in VS created exe? 【发布时间】:2012-04-30 09:51:53 【问题描述】:

我在我的项目中使用 mysql .NET 连接器库 (Mysql.Data)。据我了解,我只需要在安装连接器后使用程序集文件夹中的 mysqldata.dll 即可。我将在具有 .NET 2.0 但没有连接器的计算机上使用该程序。

如何将 .dll 文件添加到项目中,以便在内部使用 dll - 我希望这是有道理的。如果程序调用 .NET 来查找它,(正如它所做的那样) - 整个事情都会失败并出错。

【问题讨论】:

您应该能够将 mysql.data 与您的应用一起发送 - 它需要位于 bin 文件夹中。请参阅***.com/questions/7268924/…,这似乎与您的问题重复。 你可以使用ilmerge 【参考方案1】:

在解决方案资源管理器中,在您的项目下,展开引用,选择 MySql.Data 程序集,查看程序集的属性,然后将 Copy Local 更改为 True。现在编译项目时,MySql.Data.dll 会输出到 bin 目录中。

(您不会将一个程序集嵌入到另一个程序集中。相反,您将 MySql.Data.dll 与构建输出中所需的所有其他内容一起部署。这简称为添加引用......我不认为你真的想嵌入它。)

【讨论】:

太棒了,我想这就是我需要的。有没有办法将该 dll 与 exe 合并,以便它只是一个 exe 而没有其他文件? 是的,但这很不典型,是否合法取决于第三方库的许可。没有充分的理由这样做。

以上是关于如何在 VS 创建的 exe 中嵌入引用?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止引用程序集的嵌入式依赖项被复制到Visual Studio中的输出文件夹?

如何在单个EXE中嵌入多语言* .resx(或* .resources)文件?

如何在单个 EXE 中嵌入多语言 *.resx(或 *.resources)文件?

c#如何生成不依赖NET平台的exe?要打包的话如何打包?

在VS中,一个类能被多个项目引用吗?

如何从 XAML 引用嵌入式资源?