我发现自己在这里和那里重写了很多小东西,因为它们可能太大/太复杂而无法表示为片段,但实际上用它制作一个独立的 DLL 是没有意义的,因为我们可能只是在谈论几十或几百行代码。
例如一个小表单,它只包含一个文本框,用户在其中输入密码并在 {Enter} 时关闭。
或者一个扩展方法,它可以将任何对象序列化/反序列化到/从 GZipped 文件中,假设对象被标记为Serializable
.
名单还在继续。这些年来,我积累了很多零碎的东西,而且没有以任何整齐的方式组织起来。
在 C++ 项目中,我可以编写一个包含这些代码位的 lib 文件,我可以将这些代码添加到我的编译器设置中,这样我创建的任何未来 C++ 项目都包含这个 lib。我已经用 ATL 和 Boost 做到了这一点。
我不知道为 C# 项目执行此操作的方法。可能吗?
编辑:
如果我制作一个程序集,我必须将它编译成一个 DLL 并将 DLL 与我的主要可执行文件一起分发。DLL 可能很小,也可能很大,我不知道。但我可能只需要在我的项目中使用该 DLL 中的一些小函数。在 C++ 中,当我使用库时,只有我使用的函数是静态链接的,但是如果我使用 DLL 分发我的软件,那么我必须分发所有内容。
我知道可以将 DLL 与主可执行文件合并,这样用户就不会知道有一个单独的库,但是整个 DLL 仍然与可执行文件一起打包。
想象一下,我编写了一个包含很多我自己的数学、统计、文件 IO、图像处理、序列化、用户 IO 等的 DLL。没什么特别的,只是我发现自己经常做的一些常见的事情。例如,DLL 可能是 4MB。
现在我想编写一个使用 DLL 的一小部分的程序,如果我只是复制/粘贴必要的代码,那么我的 EXE 最终会变成 700kB。
你是说我要么复制/粘贴我需要的代码,要么我必须分发一个 4MB 的 DLL 和我的 700kB 的 EXE?