2008-10-06 74 views
2

我在想什么是构建可用于不同项目的公共实用程序库的最佳方法。我正在使用.Net和C#。什么是建立一个公用事业图书馆的最佳途径?

我应该为每个实用程序(例如日志记录,身份验证,Excel等)创建一个单独的项目,并将它们与相关性分开发布,或者应该将所有实用程序包括在一个常见的utils程序集中,项目中使用通用utils的依赖关系?

回答

2

我可能会弄清楚你想提供什么功能(至少一般),然后定义一个逻辑命名空间层次结构。一旦你有了全面的定义,你应该能够创建所有的库文件并构建它的模块化,所以你没有一个庞然大物的“所有”库,但可以有像“你的文件/目录帮助器装配“.dll,”你的数据包封装程序集“.dll,”你的UI组件“.dll等。

1

这取决于两件事情。

首先,你捆绑在一起的东西之间有什么关系?将它们放在一个图书馆里是否有意义?

二,什么是使用模式?如果它是一组标准实用程序,您可以将它们与每个项目链接在一起,但是如果您使用的是运行时插件样式模型,其中您动态加载不同模块以提供功能,则可能需要更多分离。

1

我已经走下了创建主ProductivityLibrary的路线 - 是的,这是愚蠢的命名空间 - 只是发现我有一个我使用最多的类的子集,而设计的宏伟计划 - 每当一系列想法出现时,模式瑞士军刀总是在重新编译。因为它变得如此混乱,所以对所有东西都进行插件是没有意义的。

构建解决一个问题的分立组件 - 它更容易管理。

0

我发现了一种在我的项目之间共享通用源代码和实用程序的好方法!在每个新项目中,我创建了一个“连接点” - 文件夹,指向同一个源文件的存储库。然后在Visual Studio的项目树中选择“显示所有文件”和“包含”我需要的文件。这工作真的很棒!容易和强大...

而不是有一个单片common.dll与各种代码,你可能没有任何用于某些项目,我确切地添加我真正需要的文件,我得到一个单一的exe文件没有很多松散的dll文件。

另一个技巧是让不同的文件具有相同的部分静态实用程序类,例如EncryptionUtils.cs和NetworkUtils.cs。当它们都可以从同一个静态类访问时,很容易从代码中找到实用程序。因为我只包含了我真正需要的文件,所以我只在Utilities类中获得这些utils。