首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构建引用相同项目的x64和x86项目

如何构建引用相同项目的x64和x86项目
EN

Stack Overflow用户
提问于 2013-03-19 12:29:46
回答 2查看 2.3K关注 0票数 3

我有三个项目:ProjectA (exe)ProjectB (exe)ProjectD (类库)

项目A引用System.Data.OracleClient.dll和ProjectD。项目B只是引用了ProjectD。安装了32位客户端版本的oracle,因此ProjectA必须是32位应用程序。项目B可以作为64位应用程序构建.

项目A构建设置:

平台:活动(x86)

平台目标: x86

项目B构建设置:

平台:活动(任意CPU)

平台目标:任意CPU

我的问题是,ProjectD (类库)的构建设置应该是什么?当构建ProjectA和ProjectB时,它构建ProjectD的方式不同吗?就项目的沟通而言,对CLR作更深入的解释将是很好的。

ProjectA和ProjectB将用于64位Windows 2008.没有安装,只有独立的exe。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-19 12:57:11

只有EXE项目的平台目标设置才重要。这是首先加载并确定整个进程的比特性的程序集。

DLL没有选择,它必须与EXE项目所选择的任何内容兼容。因此,为DLL项目选择AnyCPU几乎总是正确的选择。

在一些情况下,可以使用显式设置。只有当您知道类库依赖于某种类型的本机代码时才会这样做,比如Oracle、,它们试图在错误的bitness中运行本机代码会产生一个完全无法理解的异常。您可以避免该异常,并通过为DLL选择平台目标获得(稍微)更好的异常,当程序试图加载程序集时,程序将在早期使用BadImageFormatException失败。尽管这一例外并不是一个非常有用的例外。一些可能性,管理员将尝试重新安装DLL几次,然后决定真正的问题是在其他地方。

因此,基本的基本规则是:为EXE项目选择x86,为所有其他类库项目选择AnyCPU,为Oracle选择nastygram,因为它不做任何事情来使这件事变得简单。

票数 6
EN

Stack Overflow用户

发布于 2013-03-19 12:39:43

我的问题是,ProjectD (类库)的构建设置应该是什么?当构建ProjectA和ProjectB时,它构建ProjectD的方式不同吗?就项目的沟通而言,对CLR作更深入的解释将是很好的。

只需在库中使用Any CPU即可。它将构建一个独特的程序集,可以在32位en 64位环境中执行。

从技术上讲,实时编译可以生成32位代码,也可以在运行时生成64位代码.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15499553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档