14

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

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

4

1 回答 1

8

您可以使用来自PowerShell GAC的 PowerShell 脚本将程序集安装到GAC ,因此您的 install.ps1 脚本绝对可以做到这一点。

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

因此,很难准确推断正在使用哪个版本的程序集。通常,您只需查看 nuget 安装的软件包即可立即知道您拥有什么。

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

于 2014-04-17T18:52:09.187 回答