是否可以通过Nuget包向GAC添加/更新程序集?

时间:2013-11-06 16:26:40

标签: nuget gac nuget-package

Nuget,毫无疑问是一个非常有效的包装和分销系统。但是,在某些情况下,管理程序集文件变得很麻烦。对于Web应用程序尤其明显,其中站点中的许多(30+)个子应用程序被设置为继承引用。在我的情况下,单点继承是可取的,因为可以轻松地为所有子项目更新库。我将这些程序集可靠地存储在根目录中已成为一个问题。为了帮助管理这个,我想将GAC用于这些特定的库..

有没有办法通过nuget包脚本将这些库安装/更新到GAC?我总是可以采用传统方式,但如果可能的话,我想利用Nuget。该程序集将添加到服务器GAC,但该程序包的目的是允许开发人员轻松地将程序集安装到本地GAC并在本地/服务器环境之间维护相同的引用。

1 个答案:

答案 0 :(得分:7)

您可以使用PowerShell GAC中的PowerShell脚本将程序集安装到GAC,因此您的install.ps1脚本肯定可以执行此操作。

但是有必要谨慎行事;这样做可能不会给大多数人他们想要的行为。每个项目都将使用对特定版本的强名称引用。仅仅因为一个项目更新包并不意味着其他项目将更新他们的包,他们也不会在GAC中使用更新的版本 - 他们将使用他们强烈约束的那个,除非程序集包含指定新版本的绑定策略将替换旧版本,在这种情况下,项目使用的版本将与安装的版本nuget相匹配!

因此,很难推断出正在使用哪个版本的组件。通常情况下,您只需查看nuget已安装的软件包,并立即了解您所拥有的软件。

在我的情况下,我们使用nuget将二进制文件保留在Git之外,但是一些二进制文件涉及WinForms设计器,如果程序集不在GAC中,它会非常非常生气。我们一遍又一遍地遇到无穷无尽的问题,直到我们咬紧牙关并将组件放入GAC。现在它完美无缺。因此,我们通过nuget在GAC中注册我们的私有自定义程序集,因此它将自动下载并注册它们,但我们有一个解决方案并保证所有项目同时升级。