是否可以强制使用“任何”体系结构标记编译的C#应用​​程序作为64位窗口上的32位应用程序运行?

我有一个.Net应用程序,使用为该体系结构types设置的“Any”标志进行编译。

我想知道是否有可能强制应用程序运行在一个(任何)64位版本的Windows上的32位应用程序,而无需重新编译应用程序到32位可执行文件。

是的,如果您将项目属性设置为使用32位(x86我认为)显式它将始终运行在该模式下。 我们在使用SQLite ADO.Net提供程序(它只查找在x64系统上运行时无法加载的32位版本)时遇到了这个问题。

您可以使用corflags来设置可执行文件上的32位(哈哈)标志。 这是一个例子 。 总之,你会运行:

corflags /32BIT+ assembly.exe-or.dll 

你会发现与Visual Studio一起安装的corflags.exe (installed in C:\Program Files\Microsoft SDK\6.0a or 7.0\bin)或者你可以从Microsoft Windows SDK for Windows 7和.NET框架3.5 SP1 。