在不修复路径的情况下引用GAC外部的程序集

时间:2010-02-12 10:10:37

标签: .net assemblies reference shared-libraries

我目前正在为我们的团队研究最佳开发和部署实践。我们有大量类似的代码,我们将开始导入共享程序集库,以便在我们的(web& win)应用程序套件中使用。我开始清楚地知道我认为应该走向何方。随着这种精炼过程的进展,我无疑会有更多的问题。

我被W Craig Trader's回答this question所述结构的优雅所吸引。我们使用的是TFS而不是SVN,但这种方法同样适用。使用这种方法,每个开发人员都有一个本地工作空间,其中包含每个主要版本的最新共享程这些程序集中的每一个都将完全部署在目标主机的GAC中。

开发团队的每个成员都可以自由地布置他们认为最舒适的计算机,因此包含要在开发期间链接到的程序集的目录可以轻松地从dev更改为dev。我们不希望将程序集存储在开发人员机器的GAC中。并且不希望每个开发人员每次检查项目时都必须更新引用。

所以我的问题是:有没有办法配置一个文件夹,就像系统范围的装配商店一样?或者有没有办法配置VS2008来搜索特定位置的程序集?

展望未来我们将配置自动构建/ CI,在这种情况下我们可以解决这些问题,但在此期间,构建将在单个开发人员的机器上进行。但即使使用基于服务器的构建,每个开发人员都希望引用智能感知和测试构建的正确程序集。

欢迎任何想法或建议。

谢谢, 丹

经过一些内部讨论后,我们似乎可以在每个Dev的机器上找到一个固定的位置。这仍然不适合个人工作空间p-o-v,但这是最安全的方法。

另一种方法是编写一个客户端TFS事件监听器,它可以在签出时扩充项目文件并在签入时对其进行清理。但我不确定会有多安全。

干杯, 丹

2 个答案:

答案 0 :(得分:1)

在我以前的工作中,所有开发人员都有一个包含所有共享程序集的R:\驱动器。使用脚本,驱动器上的程序集通过从网络共享中复制它们来保持最新。

答案 1 :(得分:1)

NuGet有助于解决此问题。将您的共享代码构建为nuget包,然后您可以使用存储在网络驱动器或共享服务器上的local feeds来托管您的nuget包。我刚刚看到Teamcity 7现在支持托管nuget feed。

这样做的好处是可以轻松共享库而无需修复位置(例如,给定的开发人员或构建服务器如何组织其目录并不重要),并且您可以依赖于特定版本以及轻松保持最新版本。

除了提供简单的DLL引用之外,Nuget包还可以做一些事情:例如,可以分发javascript库或图像或任何其他内容。如果您构建了几个共享相同的常见设置(样式,表单,登录等)的Web应用程序,您可以将所需的文件/库/等打包到nuget包中,然后只需添加对该包的引用。