我可以将c#类重定向到另一个dll吗



这是我的问题。有一个游戏引擎有一个核心库core2.dll,里面有一个C类

它是一个带有c包装的windows类。

我想主要使用core2.dll中的所有类,除了一个类,我想使用库core1.dll 的前一版本中的类

如果您尝试从core2.dll调用该类,它会显示"不推荐使用的错误消息"。

我认为这门课相当独立。(比如说它是一些数学函数(所以我的想法是在我的项目中包括core2.dll和core1.dll,但不知何故,只从core1.dll中生成类C

对如何(如果有的话(实现这一目标有什么想法吗?

如果您需要替换core2.dll中的部分代码,那么您可以使用ildasm对两者进行反编译,更改core2.dll内所需的部分,然后重新编译回来。

运行x64_x86 Cross Tools Command Prompt for VS 2017并执行

ildasm core1.dll /OUT=core1.il
ildasm core2.dll /OUT=core2.il

REM open il files with text editor, find classes in core1.il and replace them in core2.il 
REM note, that there might be no core2.res
ilasm core2.il /RESOURCE=core2.res /DLL

如果dll没有签名,这将完全正常工作。更好的是,你可以组装成代码,这样ilasm将确保你的代码在运行时工作。运行时不兼容是绑定重定向的一个非常烦人的问题。。。

确保你没有违反任何许可证和版权。

您需要为两个dll 使用外部别名

以下是一个示例:https://www.learningsomethingnew.com/how-to-use-two-versions-of-the-same-dll-in-the-same-project

最新更新