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