Mysql 运行不带强名称签名的第三方程序集的自定义版本

Mysql 运行不带强名称签名的第三方程序集的自定义版本,mysql,asp.net,strongname,Mysql,Asp.net,Strongname,我想更改程序集mysql连接器网络,我成功构建了DLL,但当我尝试运行我的web解决方案时,我得到: 无法加载文件或程序集“MySql.Data”或其依赖项之一。无法验证强名称签名。程序集可能已被篡改,或者已延迟签名但未使用正确的私钥完全签名 当然,在构建dll时,我没有要签名的强名称密钥文件 如何使我的项目能够识别dll而不必使用强名称签名进行验证?或者还有其他的工作吗?这里可能会发生一些事情,需要一些工作才能解决 数据是强名称签名的。要生成其他已编译代码可以引用的MySql.Data.dll

我想更改程序集mysql连接器网络,我成功构建了DLL,但当我尝试运行我的web解决方案时,我得到:

无法加载文件或程序集“MySql.Data”或其依赖项之一。无法验证强名称签名。程序集可能已被篡改,或者已延迟签名但未使用正确的私钥完全签名

当然,在构建dll时,我没有要签名的强名称密钥文件

如何使我的项目能够识别dll而不必使用强名称签名进行验证?或者还有其他的工作吗?

这里可能会发生一些事情,需要一些工作才能解决

数据是强名称签名的。要生成其他已编译代码可以引用的MySql.Data.dll文件,您需要访问用于签名MySql.Data.dll文件的密钥对。你没有访问权限,我们希望只有MySql的人可以访问,因为泄漏会让人创建一个恶意的MySql.Data.dll,并让引用它的其他组件使用该.dll。强命名旨在防止这种情况

我猜MySql.Data项目被配置为使用密钥对的公共部分对.dll进行延迟签名。您没有该密钥对的私有部分,因此无法自己完成签名过程

解决方案是生成一个新的key.snk文件,将项目配置为使用该密钥,禁用该项目上的延迟签名并重建

您将遇到的问题是,引用MySql.Data.dll的任何其他库都将使用正确的MySql.Data.dll中使用的强名称。因此,您正在使用的引用MySql.Data.dll的任何其他库都需要使用您的库现在具有的强名称修改它们的引用

您需要通过获取源代码或使用ildasm.exe来修改这些库的引用。然后,您必须更改引用,以使用新的强名称使用库,并重建这些库。如果这些引用也是强名称签名的,则必须使用新密钥退出,并对引用该库的任何库重复相同的过程

你可以想象这是如何迅速失控的。如果可能的话,一个更好的选择是创建一个引用MySql.Data.dll的新库,并扩展您自定义的类/组件,而不涉及MySql.Data.dll库的代码。这可能是可能的,也可能不是,这取决于您对该库改变了哪些行为