0

这是我的场景。我很少有使用 ABCD.dll(用 C# .net 编写)的应用程序,这个旧 DLL 没有强名称签名。

我修改了这个dll,基本上保持同名ABCD.dll,并用密钥签名。请注意没有代码更改

我想我应该能够将这个新更新的 DLL 放到不同的应用程序文件夹中,它应该可以工作。我错了吗?

我收到以下错误

BadImageFormatException: Could not load file or assembly 'ABCD, Version=7.2.1.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

如何在不编译所有旧应用程序的情况下使用这个新的 dll?

4

2 回答 2

1

我错了吗?

是的,基本上。更改 DLL 上的签名,包括从“没有一个”到“有一个”是一项重大更改 - 就 CLR 而言,它会更改 DLL 的标识。

如何在不编译所有旧应用程序的情况下使用这个新的 dll?

据我所知,你没有。我不知道有什么办法让它发挥作用。我建议你接受打击并重建一切。

于 2020-09-08T20:41:23.927 回答
0

如果幸运的话,您可以“只是”更改对新 .DLL 的引用。有这方面的工具。

你可以试试这个:https ://marketplace.visualstudio.com/items?itemName=markkemper1.ReferenceSwitcher

于 2020-09-08T20:43:24.647 回答