如何在64位环境中运行32位.NET应用程序?

时间:2009-07-10 07:15:33

标签: .net 64-bit

我们使用.NET Framework 2.0开发了一个C#应用程序,它在32位计算机上运行良好。但是当我在64位环境中运行我的应用程序时,它会崩溃。

我需要让我的应用程序在64位环境中运行。

我该怎么做?

8 个答案:

答案 0 :(得分:9)

您可以为x86编译它而不是任何cpu,它将在64位Windows上对32位库运行。

或者在64位窗口上安装时,将64位库交换为64位。其中一些Sqlite dll特定于32/64位

答案 1 :(得分:6)

如果您使用的是Windows,则应使用 CorFlags 转换工具( CorFlags.exe )。这样,您可以强制application / dll在32/64位空间中运行。有关使用的详细信息和示例,请访问http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx

答案 2 :(得分:4)

在项目的构建设置中,将平台目标设置为x86而不是任何CPU。这将解决您的项目对64位不可用的32位子系统具有“隐藏”依赖性的问题。然后,您的应用程序将在64位Windows上的32位susbsystem中运行。

答案 3 :(得分:4)

如果您希望避免重新编译,那么这似乎是一个很好的解决方案。请注意,它确实需要更改每台目标计算机。

  

如果您有64位计算机并且想要运行.NET应用程序   仅适用于32位CLR,您必须对其进行更改   您计算机上的.NET框架

     

设置.NET框架以通过此方式在WOW模式下加载CLR   命令

     

打开命令提示符并输入此命令

     

C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Ldr64.exe SetWow

     

现在,您应该能够运行仅使用.NET 32位CLR的应用程序。

     

要恢复到默认的64位框架运行

     

C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Ldr64.exe Set64

source

答案 4 :(得分:2)

只是扩展Fredrik Leijon的答案,我认为这就是你所追求的目标。

它将告诉64位和32位窗口在32位环境中运行您的应用程序。

请记住为“发布”配置执行相同操作。

enter image description here

这将反过来更新MSBuild的* .csproj文件,如下所示(请查看下面的<PlatformTarget/>元素):

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 <OutputPath>bin\Debug\</OutputPath>
 <ErrorReport>prompt</ErrorReport>
 <WarningLevel>4</WarningLevel>
 <PlatformTarget>x86</PlatformTarget>
</PropertyGroup>

答案 5 :(得分:1)

我遇到了同样的问题。我的情况就足以编译我的应用程序的主程序集(.exe),尤其是“x86”。其他程序集(.dll)使用“Any CPU”进行编译。

我们的应用程序可以在32Bit和64Bit系统上正常工作。

答案 6 :(得分:0)

除非您引用专门用于32位的库(Jet DB驱动程序是一个示例),或者除非您已经告诉编译器将应用程序编译为仅32位,否则它应该运行。

崩溃是什么意思?

答案 7 :(得分:0)

是Windows / ASP.NET应用程序吗?

如果是ASP.NET应用程序。您可以同时运行32/64位模式。 为此,

案例1.您需要在IIS中的应用程序池上Enable32bitApplication。           然后重置IIS。

案例2.在regedit中检查相应的DLL。

如果是基于Windows的,请从Visual Studio提示符

运行此命令
CorFlags.exe TheApp.exe /32BIT+ //Enables 32 bit application.