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

C# 打包相同的代码以在不同的上下文中使用,c#,automation,C#,Automation,我的工作包括创建各种工具和实用程序,供内部用于自动化目的 我的一些操作都打包在一个DLL文件中 然后将此DLL包装在另一个DLL中,以便在1个自动化工具中使用,而将其包装在另一个DLL中,以便在另一个工具中使用(例如--FinalBuilder) 然后将其重新打包为可执行文件,以便作为独立工具运行 我的问题是——有没有人遇到过这样的场景,其中多个小“操作”或实用程序需要在各种上下文中重用(finalbuilder、standalone等) 如果是这样的话,有没有更简单的方法可以一次性定义它们并在

我的工作包括创建各种工具和实用程序,供内部用于自动化目的

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

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

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

我的问题是——有没有人遇到过这样的场景,其中多个小“操作”或实用程序需要在各种上下文中重用(finalbuilder、standalone等)

如果是这样的话,有没有更简单的方法可以一次性定义它们并在不同的位置使用它们,而不是一直编写额外的包装


谢谢

我不明白是否需要将共享代码dll“包装”到另一个dll中

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

如果希望.exe是没有附加DLL的单个文件,那么可以使用类似于将程序集合并在一起的实用程序来形成单个一致的二进制文件


最后一个选项是使多个csharp项目共享相同的源代码,因此您只需将共享代码“包括”到所有.exe项目中。这意味着您只需生成一个.exe,而无需提供额外的DLL或在编译后使用ILMerge合并程序集。缺点是每次生成.exe时都必须生成所有库代码,因此生成速度可能会较慢。(无论您做什么,都不要复制源代码的多个副本-如果您希望更新共享库,则必须只有一个所有源代码的主副本)

我不理解是否需要将共享代码dll“包装”到另一个dll中

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

如果希望.exe是没有附加DLL的单个文件,那么可以使用类似于将程序集合并在一起的实用程序来形成单个一致的二进制文件


最后一个选项是使多个csharp项目共享相同的源代码,因此您只需将共享代码“包括”到所有.exe项目中。这意味着您只需生成一个.exe,而无需提供额外的DLL或在编译后使用ILMerge合并程序集。缺点是每次生成.exe时都必须生成所有库代码,因此生成速度可能会较慢。(无论您做什么,都不要复制源代码的多个副本-如果您希望更新共享库,那么所有源代码都必须只有一个主副本)

ILMerge正是我想要的!关于你的最后一个建议,我发现很难管理这样一个场景:我有多个项目,所有项目中都打开了相同的代码。共享文件中的一个更改可能会破坏其他项目。。。这就是你所说的“让你的构建更慢”的意思吗?ILMerge正是我想要的!关于你的最后一个建议,我发现很难管理这样一个场景:我有多个项目,所有项目中都打开了相同的代码。共享文件中的一个更改可能会破坏其他项目。。。这就是你所说的“让你的构建变慢”的意思吗?