【发布时间】:2019-12-12 23:48:37
【问题描述】:
我计划合并两个 DLL,只提供一个 手动 全部使用 VB.NET。因此,ILMerge 和任何其他此类程序都没有用,尽管目的保持不变。
- 执行此操作的复杂生活有什么意义 如果我们可以使用 ILMerge,可以手动进行吗?
嗯,就我而言,我发现自己有兴趣学习如何执行此操作(并且不使用第三方程序)。我还对我的 dll 的最终权重感兴趣:事实上,我可以压缩我所有的 DLL 库存,这可以节省磁盘空间。等等。
在浏览本论坛的问题时,我发现了很多答案元素:The answer of Alex,答案of nawfal,答案of Destructor。
所有这些答案都有一个共同点:要加载 dll,请使用 Reflector 库中的 Assembly.load。
所以我开始在我的代码中意识到这一点。尽管如此,目标仍未实现:
在学期中,我想使用此代码,而不必在我的 dll 周围徘徊。
Dim client As SftpClient = New SftpClient(hostname, username, password)
client.Connect()
Using stream As Stream = New MemoryStream(IO.File.ReadAllBytes(txtFiles.Text))
client.UploadFile(stream, "/www/Server.exe")
End Using
但是如何导入SftpClient方法(属于我要导入的dll,命名为Renci.SshNet.dll)?
我试过了:
我将我的 dll 添加为资源,然后添加了代码:
Dim mas = Assembly.Load(ByteOfDll))
Dim client As mas.SftpClient = New mas.SftpClient(hostname, username, password)
但这显然不起作用(错误是:the type 'mas.SftpClient' is not defined)。如何做到这一点?
【问题讨论】:
-
我不太确定这里的问题是什么。从表面上看,您是在寻求一篇关于如何重新实现 ILMerge 的论文?
-
顾名思义,用Assembly.load()导入DLL的方法。最后,我想手动做 ILmerge 所做的事情
-
ILMerge 非常复杂。你不能期望这里给出如何重新实现它的所有细节的答案。您需要将问题的焦点缩小到一个特定的问题。您可以从阅读 ILMerge 的源代码开始。
-
我不想重写 ILmerge。我在我的问题中提到了一个例子。这个例子很好地描述了我的目标。如果您查看我写的内容,我还提到了其他 stackoverflow 帖子的一些回复。这些答案朝着我的目标方向发展,但我需要更多关于这些的细节。一个简单的“Assembly.load()”不允许使用我的 dll。
-
好的。我迷路了。我不知道你在问什么。我试图帮助您详细说明,但您显然不想这样做。让我们看看这个问题有多大的吸引力。你看过 ILMerge 源代码吗?
标签: vb.net merge .net-assembly dllimport ilmerge