我们使用.NET Framework 2.0开发了一个C#应用程序,它在32位计算机上运行良好。但是当我在64位环境中运行我的应用程序时,它会崩溃。
我需要让我的应用程序在64位环境中运行。
我该怎么做?
答案 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位环境中运行您的应用程序。
请记住为“发布”配置执行相同操作。
这将反过来更新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.