打包相同的代码以便在不同的上下文中使用

时间:2011-03-31 19:12:34

标签: c# automation

我的工作涉及为自动化目的创建内部使用的各种工具和实用程序。

我的一些操作在一个DLL文件中打包在一起。

然后将此DLL包装在另一个DLL中,以便在1个自动化工具中使用,同时将其打包在另一个DLL中,以便在另一个工具中使用(例如 - FinalBuilder)。

然后将其重新打包为可执行文件,以便作为独立工具运行。

我的问题是 - 有没有人遇到过这样的场景,需要在各种环境中重复使用多个小“动作”或实用程序(finalbuilder,standalone等)?

如果是这样,是否有更简单的选项可以定义这些,并且能够在不同的位置使用它们,而不是一直写出额外的包装器?

由于

1 个答案:

答案 0 :(得分:1)

我不明白需要在另一个dll中“包装”你的共享代码dll。

如果您的代码是可共享的,那么它应该在一个库中(具有自己的命名空间)。任意数量的应用程序都可以链接到(引用)此库。要部署应用程序,他们只需要在.exe文件旁边的库程序集的副本 - 不需要包装。

如果您希望您的.exes是没有额外dll的单个文件,那么您可以使用像ILMerge这样的实用程序将程序集合并在一起形成一个连贯的二进制文件。

最后一个选项是创建共享相同源代码的多个csharp项目,因此您只需将共享代码“包含”到所有.exe项目中。这意味着您构建单个.exe而无需发布额外的dll或在编译后使用ILMerge合并程序集。这样做的缺点就是每次构建.exe时都必须构建所有库代码,因此构建可能会更慢。 (无论你做什么,都不要制作多个副本的源代码 - 如果你想更新共享库,那么只有一个主副本是必不可少的所有源代码)