Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以通过Nuget包向GAC添加/更新程序集?_Nuget_Gac_Nuget Package - Fatal编程技术网

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

是否可以通过Nuget包向GAC添加/更新程序集?,nuget,gac,nuget-package,Nuget,Gac,Nuget Package,Nuget无疑是一个极其有效的包装和分销系统。但是,在某些情况下,管理程序集文件变得很麻烦。这对于web应用程序尤其明显,其中站点中的许多(30+)子应用程序被设置为继承引用。在我的例子中,单点继承是可取的,因为可以轻松地为所有子项目更新库。对于我来说,将这些程序集可靠地存储在根目录中已成问题。为了帮助管理这一点,我想为这些特定的库使用GAC 有没有办法通过nuget包脚本将这些库安装/更新到GAC?我总是可以求助于传统的方式,但如果可能的话,我想利用Nuget。程序集将被添加到服务器GAC,但

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


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

您可以使用PowerShell脚本从,所以你的install.ps1脚本绝对可以做到这一点

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

因此,很难对正在使用的程序集的确切版本进行推理。通常,您只需查看nuget安装的软件包,就可以立即知道您拥有什么


在我的例子中,我们使用nuget将二进制文件保存在Git之外,但是有些二进制文件涉及WinForms设计器,如果程序集不在GAC中,WinForms设计器会非常非常生气。我们一次又一次地讨论无休止的问题,直到我们咬紧牙关,把装配件放到GAC。现在它可以完美地工作。因此,我们正在通过nuget在GAC中注册我们的私有自定义程序集,这样它将自动下载并注册它们,但我们有一个解决方案,并保证所有项目同时升级

这将彻底挫败NuGet软件包的主要优势之一,即本地部署。我明白这一点。这只是一种高度的便利和熟悉。我想在此期间我会看看巧克力。谢谢你的回答。我理解你的谨慎,但我们的处境与你所描述的相似。我们希望在目标服务器上自动将新二进制文件部署到GAC,类似于“apt get install Understand upgrades”,但具有windows容量。使用类似于您所描述的系统,我们还可以通过软件包安装程序守护程序将“pre”标记的软件包自动安装到我们的开发环境中,并将最终版本安装到更高的环境中。