如何引用仍在开发中的共享程序集(.NET)

如何引用仍在开发中的共享程序集(.NET),.net,publisher-policy,.net,Publisher Policy,我负责开发和维护一组用于构建产品应用程序的通用框架组件。这些程序集相对较新,并且随着新功能的实现等而处于不断变化的状态。因此,对它们进行重建和重新分发并不罕见。我预计随着议会的稳定,这一数字会下降,但这就是今天的情况 现在,程序集被放置到一个公共文件夹中,开发项目可以在其中引用相同的程序集。应用更新就像替换文件一样简单,开发项目在下次加载和构建更改时自动拾取这些更改 我遇到的问题是,我们可能在框架上构建了几个“层”的程序集—例如,我们有一个由所有应用程序共享的核心库和一个引用核心并由所有服务器应

我负责开发和维护一组用于构建产品应用程序的通用框架组件。这些程序集相对较新,并且随着新功能的实现等而处于不断变化的状态。因此,对它们进行重建和重新分发并不罕见。我预计随着议会的稳定,这一数字会下降,但这就是今天的情况

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

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

我已经调查了出版商的政策,但出于以下几个原因,我怀疑这会解决我的问题:

  • 首先,我不想在每次重建框架程序集时都重新创建该文件——有什么方法可以使这个过程自动化吗

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

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

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


我无法想象在这些需求中我是孤独的,希望有人能分享他们的经验和智慧来指导我找到解决方案。谢谢

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

这里的主要问题是确保程序集强制重新生成其所有依赖项,并且所有这些依赖项都放置在共享位置

这里最简单的选择可能是拥有一个生成服务器,每当更新一个共享程序集时,该服务器都会重建所有内容。这也有可能在构建上运行其他“脚本”的优势,例如在每次签入构建时执行代码度量、静态代码分析等


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

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