我有两个第 3 方集会。一个是为 x86 目标编译的,另一个是为任何 CPU 编译的。有没有办法从同一个应用程序中使用它们。
现在我的应用程序编译成功但无法运行。我尝试为 x86 和 Any CPU 构建我的 EXE 文件,但没有运气。我可以使用corflags更改目标平台位,但程序集已签名,我不想更改它们的签名。
有人可以帮忙吗?
我有两个第 3 方集会。一个是为 x86 目标编译的,另一个是为任何 CPU 编译的。有没有办法从同一个应用程序中使用它们。
现在我的应用程序编译成功但无法运行。我尝试为 x86 和 Any CPU 构建我的 EXE 文件,但没有运气。我可以使用corflags更改目标平台位,但程序集已签名,我不想更改它们的签名。
有人可以帮忙吗?
您可以引用它们 - 但只有在条目 .exe 程序集设置为 x86或设置为任何 CPU 并在 x86 机器上运行时,应用程序才会运行。在 IIS 托管进程的情况下,位数由 IIS 本身决定。
举例来说 - 我刚刚创建了这个 vs2010 解决方案:https ://docs.google.com/open?id=0Bw_NnV9fhgmgSGxGOEZXSnVsd1k
控制台应用程序可以是 x86/Any APU 并引用两个库 - 一个是 x86,一个是 Any CPU。
如果您将 exe 设置为 x86 并在 x64 上运行它,那么它工作正常(显然它在 x86 上工作没有问题)。但是,如果您将 exe 设置为 Any CPU 并在 x64 上运行它,它将崩溃(带有BadImageFormatException
)。同样,在 x86 上运行它仍然可以工作。
入口程序集的风格决定了进程的位数;因此可以加载的任何程序集的预期位数。
在您的情况下,您关注的程序集可能不一定是问题 -他们引用的程序集。这个例外可能会告诉你更多。