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

标签 nuget gac nuget-package

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

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

最佳答案

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

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

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

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

关于nuget - 是否可以通过 Nuget 包向 GAC 添加/更新程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19817378/

相关文章:

.net - GAC 文件夹 - 太多?

asp.net-mvc - Asp .Net Core - 无法安装 Microsoft.AspNet.Mvc nuget 包

asp.net-mvc-4 - 如何最好地从 Nuget 写入 BundleConfig

c# - NuGet - 以编程方式安装包(多个来源)

c# - 如何使用 msbuild 15 从生成的 nuget 包中的 nuspec 文件中删除依赖项部分

c# - 升级到 NetCore 3.1 后找不到版本 (= 2.2.7) 的软件包 Microsoft.NETCore.App.Host.win-x64

Azure Pipelines .net core 3.1 库以及对其他库的引用如何创建一个 nuget 包

c# - GAC是内存区还是硬盘区?

c# - 从 GAC 动态加载最新的程序集版本

sqlite - 错误 NU1202 Package Microsoft.Data.Sqlite.Core 2.0.0 与 uap10.0.14393 (UAP,Version=v10.0.14393)/win10-x64 不兼容。