2009-09-14 69 views
2

我负责开发和维护用于构建我们的产品应用程序的一组通用框架程序集。这些组件相对较新,并且在实现新功能时处于不断变化的状态等等。因此,它们经常被重建和重新分配并不罕见。我预计这会随着议会的稳定而下降,但这是今天的情况。如何引用仍在开发中的共享程序集(.NET)

现在,程序集被放置在一个公共文件夹中,开发项目可以引用相同的程序集。应用更新与替换文件一样简单,开发项目在下次加载和构建时自动获取更改。

我遇到的问题是,我们可能有几个构建在框架上的程序集“层” - 例如,我们有一个由所有应用程序共享的Core库和一个引用Core并由所有Server应用程序共享的服务器库。每次更新框架程序集时,所有的依赖关系都必须重新构建,这是一项非常大的任务。我不相信我可以使用GAC,因为这会要求所有开发人员在每次发布新版本时都更新其系统。

我已经调查出版商政策,但有一些疑问,这将解决我的问题的几个原因:

  • 原因之一,我不希望我每次重建要创建这个文件我框架程序集 - 有没有办法让这个过程自动化?

  • 我不清楚它是否需要组件进入GAC。正如我所说的,每次我们发布新版本的程序集时,我都不想强迫我的开发人员重新安装,更新等。

  • 我对网络设置和配置没有任何控制权,因此有必要通过将文件放置在网络共享中来避免整个“信任”问题。此外,我们的许多开发人员都以有时连接的方式工作,我们希望在断开连接时可以使用这些文件。

目标是让我们的应用程序开发人员更新这些程序集,使他们消耗它们。在安装应用程序时,我们无疑将这些程序集安装到目标机器上的GAC中,但我们不希望为了开发目的而这样做。将项目包含在每个应用程序的解决方案中也是不合理的,因为它们是由不同团队开发的。

我无法想象自己在这些需求中孤身一人,希望有人可以分享他们的经验和智慧来指导我解决问题。谢谢!

回答

0

NuGet已经解决了这个问题。通过从我们网络上的私有存储库分发作为NuGet包的共享程序集,框架等,我们可以轻松发布更新并适当地将它们应用于客户端代码。

1

您不一定需要将程序集安装到GAC中 - 您的设置中没有任何程序需要这样做。

这里的主要问题是确保程序集强制重建所有依赖项,并将所有这些依赖项都放在共享位置。

这里最简单的选择可能是建立一个构建服务器,只要其中一个共享程序集被更新,就可以重建所有的东西。这也有一个好处,就是可以在构建时潜在地运行其他“脚本”,例如进行代码度量,静态代码分析等,只要签入内部版本。

然后,您可以让构建服务器将所有内容到一个共享的位置。如果项目从共享位置引用,并明确表示不限制为特定版本,则所有内容都应该正常工作。

+0

退房http://stackoverflow.com/questions/tagged/continuous-integration – TrueWill 2009-09-14 22:37:15

+0

是的,CI使这很容易。 – 2009-09-14 23:16:57

相关问题