9

因此,我有一个用 C# 2.0 编写的第 3 方 .dll,需要强类型化,而且我无权访问源代码。我找到了几篇关于如何反汇编 .dll 并使用强命名密钥文件重新组装它的文章。

我遇到的问题是 VS2010 将其重新编译为 .NET 4.0 .dll 而不是 2.0 .dll(我们的应用程序当前所在的版本)。我不能在我的项目中包含“新”dll,因为它给了我一个运行时错误:“这个程序集是由比当前加载的运行时更新的运行时构建的,无法加载。” 如果我不签署 dll,我会得到“程序集不是强类型的”。错误。

有没有办法使用VS2010 ilasm.exe在2.0框架中重新编译这个.dll?

4

2 回答 2

14

您可能正在使用 Visual Studio 2010 命令提示符。当您键入“ilasm.exe”时,它将设置环境以运行 C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe。版本错误,您需要 v2.0.50727\ilasm.exe。输入全名。或者复制并编辑 vc\bin\vsvarsall.bat

于 2011-05-07T01:52:35.210 回答
1

不可以,不能使用 4.0 的 ilasm 编译成 2.0;您应该使用 2.0 框架目录中的 ilasm.exe;例如C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

请注意,您需要的只是运行时,而不是 SDK 或 VS 2005 / 2008。

于 2011-05-07T01:52:17.533 回答