C# 如何创建包含所有其他dll的dll?

C# 如何创建包含所有其他dll的dll?,c#,asp.net,visual-studio,dll,dllexport,C#,Asp.net,Visual Studio,Dll,Dllexport,在创建“类库”类型的项目时,通常可以在编译时生成dll,但是如何生成dll而不丢失我已经包含的其他dll呢 我用一个例子来解释:原来Nuget下载了一个S22.Imap dll和我使用的那个,后来我用我开始解释的传统方式生成了dll,但是当我想在另一台计算机上使用dll时,我得到了一些错误,我没有找到包含S22.Imap dll的函数嗯,我不得不在另一台计算机的特定路径上以附加方式复制我的项目S22.IMAP的dll 我的问题是: 如何生成一个包含您正在使用的项目中包含的dll?通常情况下,您

在创建“类库”类型的项目时,通常可以在编译时生成dll,但是如何生成dll而不丢失我已经包含的其他dll呢

我用一个例子来解释:原来Nuget下载了一个S22.Imap dll和我使用的那个,后来我用我开始解释的传统方式生成了dll,但是当我想在另一台计算机上使用dll时,我得到了一些错误,我没有找到包含S22.Imap dll的函数嗯,我不得不在另一台计算机的特定路径上以附加方式复制我的项目S22.IMAP的dll

我的问题是:

如何生成一个包含您正在使用的项目中包含的dll?

通常情况下,您不。dll是一个动态链接库,在生成过程中通常只合并静态库。下面是一个示例

通常,您会在安装程序包中包含所需的所有DLL。如果您使用Visual Studio创建安装程序,它可以检测依赖项。运行安装程序时,会部署所有必要的DLL。几乎所有商用.NET软件都遵循此模式


可以使用名为的工具将一个程序集合并到另一个程序集中。这将是一件非常不寻常的事情,可能会导致知识产权和代码签名问题,因此不建议这样做。

所有引用的第三方dll(在您的示例中为S22.Imap.dll)将与您自己的dll文件(例如a.dll)一起复制到输出文件夹。这意味着您应该始终将它们一起(S22+a.dll)复制到另一台计算机/文件夹/位置上要引用它们的位置

如果您真的想让它们只有一个文件(尽管不建议这样做),您可以将S22文件设置为某个“嵌套资源”。然后您将只得到一个a.dll文件,而S22文件位于a.dll内。有关参考信息,请参阅下页:

此外,还有一些工具可以帮助您做到这一点。

请参阅。虽然此工具“解决”了直接问题,但它可能不是解决任务的最佳工具。。