使共享库可用于多个应用程序的最佳方法是什么?

时间:2011-09-01 19:56:16

标签: c# version-control dll shared-libraries gac

与大多数商店一样,我们有一群人从事各种项目,他们都需要访问与我们业务相关的相同核心信息和功能,通常是在C#中。我们目前只是将普通类从一个项目复制到一个项目,但每个人都开始有自己的风格,我们想要巩固。

我们使用Tortoise SVN并决定维护一个单独的项目来包含我们的公共类,但不确定将这个公共代码部署到各种应用程序的最佳方法。我们为一家内部IT商店工作,该商店可以决定用户如何访问应用程序,我们不必担心将产品发布到现实世界中。

我们的一些想法是:

  1. 将类编译为单个DLL并将其加载到全局程序集缓存(GAC)
  2. 将类编译为单个DLL并将其保存到位于中央的共享驱动器以供所有其他项目引用
  3. 将类编译为单个DLL并将其包含在每个项目中
  4. 在启动项目时只需获取最新的类,但没有中央共享库(我们对此的解释:http://www.yosefk.com/blog/redundancy-vs-dependencies-which-is-worse.html
  5. SVN Externals http://svnbook.red-bean.com/en/1.0/ch07s03.html
  6. 我知道这是一个常见问题,如果你花时间研究这些或其他选项,你总会找人解释每种方法的缺陷(版本控制,回归测试,“DLL地狱”,“GAC糟透了”等)。我几乎找不到任何人谈论什么工作和原因。有没有首选方法?

1 个答案:

答案 0 :(得分:2)

在我公司,我们遇到同样的问题。目前,我们只使用转到SVN Trunk的.bat文件并提取最新的.dll引用并填写您正在处理的项目的本地References文件夹。

但是,我们目前正在努力将此系统转换为NuGet。我不是100%确定它是如何工作的,但它绝对值得研究。看起来您可以将其设置为可以将其指向共享代码存储库的位置,然后在使用插件的Visual Studio中,只需右键单击并在每次需要获取最新代码时点击“更新”即可。< / p>