0

我似乎无法在类似问题中找到我正在寻找的解决方案,但这可能是因为我缺乏搜索技能。

无论哪种方式,我的using System.Runtime.InteropServices;C# 项目中有一个用于解压缩下载的 .zip 文件。

我的问题源于以下原因:我讨厌安装程序...因此我需要一种方法将Interop.Shell32.dll文件包含到位于项目 \bin\Debug 文件夹中的 .exe 中。

因此,无需安装程序将 Interop.Shell32.dll 添加到程序的路径中,并且如果我不使用安装程序,则无需下载额外的文件以及 .exe。

对我来说最好/最有效的方法是什么?(最好不必在程序中包含大量额外代码)

4

2 回答 2

1

您可以使用ILMerge。取自微软网页:

ILMerge 是一个用于将多个 .NET 程序集合并到一个 .NET 程序集的实用程序。它适用于可执行文件和 DLL,并带有几个用于控制输出处理和格式的选项。

于 2013-08-30T21:03:24.530 回答
1

有几个有用的工具;我不确定正在寻找什么,所以我将提供一小部分我使用的工具/方法。

  1. ILMerge用于合并多个托管程序集,例如项目输出和外部程序集/PIA。确保被合并的 PIA/程序集允许这样分发或参见#3。

  2. 用于包含“外部数据”的嵌入式资源,包括可能是托管程序集的外部要求的非托管DLL。这些非托管DLL/COM 库可以在提取后在运行时绑定/加载。

  3. dotNetInstaller用于制作统一的启动器/安装器(它是一个引导程序,可以提供嵌入式资源)。这可以与普通的 MSI(VS 安装项目)安装程序一起使用来处理先决条件,例如安装官方可分发包,或者它可以简单地用于启动可执行文件(除了先决条件之外没有“安装程序”)。

于 2013-08-30T21:05:47.163 回答