1

我发现自己在这里和那里重写了很多小东西,因为它们可能太大/太复杂而无法表示为片段,但实际上用它制作一个独立的 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?

4

3 回答 3

3

除了使用程序集之外,我知道的唯一方法是在您的项目中创建指向相关源代码的链接。在视觉工作室中,过程是:

项目→添加→现有文件→添加为链接(小向下箭头:)

于 2012-07-05T03:51:20.940 回答
1

尽管经常要求(仅 Google c# #include 等效项),但在源代码级别是不可能的。c# 提供的唯一合理替代方案是将您的公共代码编译为 DLL 并添加对它的引用。

请注意,尽管您可以从另一个项目将文件添加到您的项目中,但它会获取一个副本,因此不会维护更新。我已经使用它来“手动”实现相同的效果 - 当公共文件更新时,我将其从“引用”它的项目中排除,然后重新添加以获得新副本。

更新如下评论,您可以添加为链接 - 太酷了!为什么没人告诉我。

于 2012-07-05T03:37:26.983 回答
-1

我们在整体包含路径中添加一个公共目录,然后使用

#include <somefile.cpp>

直接在我们的 cpp 文件中。它将直接包含源代码。

于 2012-07-05T03:44:43.333 回答