3

我有两个第 3 方集会。一个是为 x86 目标编译的,另一个是为任何 CPU 编译的。有没有办法从同一个应用程序中使用它们。

现在我的应用程序编译成功但无法运行。我尝试为 x86 和 Any CPU 构建我的 EXE 文件,但没有运气。我可以使用corflags更改目标平台位,但程序集已签名,我不想更改它们的签名。

有人可以帮忙吗?

4

1 回答 1

9

您可以引用它们 - 但只有在条目 .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 上运行它仍然可以工作。

入口程序集的风格决定了进程的位数;因此可以加载的任何程序集的预期位数。

在您的情况下,您关注的程序集可能不一定是问题 -他们引用的程序集。这个例外可能会告诉你更多。

于 2012-05-28T07:41:02.397 回答