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

像大多数商店一样,我们有一群人在开展各种项目,他们都需要访问与我们业务相关的相同核心信息和function,通常是在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

我知道这是一个常见问题,如果你花时间研究这些或其他选项,你总会找人解释每种方法的缺陷(版本控制,回归测试,“DLL地狱”,“GAC糟透了”等) 。 我几乎找不到任何人谈论什么工作和原因。 有首选方法吗?

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

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