首页 > 解决方案 > 如何将 MongoDB.Driver.dll、MongoDB.Bson.dll 和 MongoDB.Driver.Core.dll 放入 GAC?

问题描述

我想使用 gacutil.exe 将这些程序集 MongoDB.Bson.dll、MongoDB.Driver 和 MongoDB.Driver.Core 添加到 GAC 中,但出现以下错误

将程序集添加到缓存失败:尝试安装没有强名称的程序集

因此,我使用 NuGet 包管理器在我的 c# 项目中安装了 MongoDB 驱动程序,当我尝试使用它为具有强名称的程序集签名 [assembly:AssemblyKeyFile("C:\\Users\\DELL\\Desktop\\MyStrongKeys.snk")]并构建我的项目时,它给了我以下三个警告

CSC:警告 CS8002:引用的程序集 'MongoDB.Driver,Version=2.8.0.0,Culture=neutral,PublicKeyToken=null' 没有强名称。CSC:警告 CS8002:引用的程序集 'MongoDB.Driver.Core,Version=2.8.0.0,Culture=neutral,PublicKeyToken=null' 没有强名称。CSC:警告 CS8002:引用的程序集 'MongoDB.Bson,Version=2.8.0.0,Culture=neutral,PublicKeyToken=null' 没有强名称。

当我尝试运行该项目时,它给了我以下异常

System.IO.FileLoadException:'无法加载文件或程序集'MongoDB.Bson,版本 = 2.8.0.0,文化 = 中性,PublicKeyToken = null'或其依赖项之一。需要强命名程序集。(来自 HRESULT 的异常:0x80131044)'

System.IO.FileLoadException:'无法加载文件或程序集'MongoDB.Driver,Version = 2.8.0.0,Culture = Neutral,PublicKeyToken = null'或其依赖项之一。需要强命名程序集。(来自 HRESULT 的异常:0x80131044)'

System.IO.FileLoadException:'无法加载文件或程序集'MongoDB.Driver.Core,版本 = 2.8.0.0,文化 = 中性,PublicKeyToken = null'或其依赖项之一。需要强命名程序集。(来自 HRESULT 的异常:0x80131044)'

我想知道我们如何将这些程序集添加到 GAC 中?

标签: c#mongodb.net-assembly

解决方案


您正在使用未签名的Nuget 包,并且需要对 dll 进行签名。可能是因为您的应用程序也已签名。

所以dll需要有一个强名称。正如 Selvin 所说,这可以做到:“你要么要求这个程序集的开发人员给它们签名……要么自己获取代码、生成密钥、编译和签名”。

官方的MongoDB驱动是没有签名的,但是有这三个文件的非官方签名的MongoDB驱动Nuget包。看这里这里这里。当您使用这些软件包时,您的问题可能会得到解决。

另一种解决方案是通过从源代码/从头开始构建驱动程序来自己签署驱动程序。

这里讨论是否签署您的申请。


推荐阅读