如何将对强命名.NET程序集的引用重定向到弱命名的本地构建

时间:2014-09-05 15:56:57

标签: .net .net-assembly

我在.NET中遇到一些强大的命名库依赖项问题。我的项目本身并不强大,我正在使用nuget用于所有第三方库 - 这些都是强大和弱名称的,通常是OSS项目的混合。

作为示例,假设以下依赖关系链

My Project ---> A ---> B

并说我在OSS库B中发现了一个问题,因此维护了一个带有错误修正和自定义的本地分支。但是B被强名称并且私钥不可用,所以我只能生成弱命名的本地构建。

如何构建我的项目,使A的二进制版本引用我B的本地副本?默认情况下,我在运行时收到程序集绑定错误,可能是因为我本地构建的程序集中的公钥标记是null,并且与A所期望的不一致。据我所知,binding-redirects中的App.config用于重定向程序集版本号,而不是公钥值。

我确实设法通过反汇编A来解决这个问题,删除IL中publickeytoken的程序集引用中的B字段并重新组装 - 这样可行,但看起来很糟糕。

有没有更好的方法来达到预期的结果?它似乎是一个主要缺点,并且在.NET上使用OSS软件包时会产生一定的反作用 - 相反,我必须等待一个新的二进制版本并希望它包含我所追求的修复。

0 个答案:

没有答案