【问题标题】:Run AnyCPU as 32-bit on 64-bit systems在 64 位系统上以 32 位运行 AnyCPU
【发布时间】:2012-06-12 07:48:14
【问题描述】:

我们使用的第三方程序集似乎被编译为 AnyCPU。

但是,我们安装了许多应用程序,这会导致问题。此第三方程序集使用 oracle 数据访问库,不适用于仅安装了 32 位 oracle 客户端的 64 位计算机。

安装一个额外的 64 位 oracle 客户端是可能的,但也很昂贵(需要很多时间,许多机器必须更新等)

有没有办法强制 AnyCPU .Net 程序集在不重新编译的情况下以 32 位运行?

【问题讨论】:

    标签: .net 32bit-64bit


    【解决方案1】:

    看看CorFlags.exe

    示例(设置 32BIT 标志):

    corflags [path]\[YourAssembly.exe] /32Bit+
    

    【讨论】:

    • 如果加载到 64 位进程中,所有更改第 3 方程序集上的标志都会导致运行时错误(请参阅 doco msdn.microsoft.com/en-us/library/ms164699(v=vs.110).aspx)。 OP 已经 运行时错误,所以我看不出这有多大帮助:-/。他需要更改启动进程的 EXE 上的标志,虽然他可以为此使用 corflags(即现场),但从长远来看,在编译时重新定位到 x86 会非常简单
    • @piers7 “他需要更改启动进程的 EXE 上的标志”:是的,这就是我的回答。 “虽然他可以为此使用 corflags(即在现场)”:是的,这就是 OP 的要求。
    【解决方案2】:

    假设您正在构建引用 AnyCPU 第三方程序集的 .EXE,您需要将项目构建为 x86。该项目可以引用 AnyCPU 程序集,但被标记为 x86,它将在 32 位和 64 位 Windows 上作为 32 位进程运行。

    【讨论】:

    • 这是 OP 实际问题的更好答案
    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多