簡體   English   中英

在 64 位機器上以 32 位方式運行 C# 應用程序

[英]Running a C# application as 32-bit on a 64-bit machine

如何強制我的應用程序在 64 位機器上作為 32 位運行?

代碼是用 C# 編寫的。

右鍵單擊您的項目,然后選擇屬性。

在屬性中,選擇構建選項卡。 在平台目標下,選擇 x86。

按 Ctrl + Shift + S保存所有文件,右鍵單擊解決方案並選擇“清理”以清除舊的二進制文件。 之后的任何構建都應該是 32 位

命令行形式:

corflags application.exe /32BIT+ 

當我們由於ClickOnce限制而無法將現有代碼從Any CPU更改為x86時,我是這樣做的:

創建一個 32 位(x86 必須在項目屬性下檢查)“啟動器”應用程序(Windows 應用程序但不是表單):

static void Main(string[] args)
{
    // Load the assembly    
    string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    string assemblyName = Path.Combine(directory, "YourAnyCPUApplication.exe");
    Assembly assembly = Assembly.LoadFile(assemblyName);
    assembly.EntryPoint.Invoke(null, null);
}

Any CPU項目的 Main 方法中添加以下代碼:

if (IntPtr.Size == 4)
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    // etc...
}
else
{
    // Launch application in 32-bit mode
    System.Diagnostics.Process.Start(Path.GetDirectoryName(Application.ExecutablePath)
                                     + @"\Your32BitApplicationLauncher.exe");
}

我希望這有幫助 :-)

如果您轉到 Visual Studio 中的配置管理器,您可以將平台設置為 x86 或 x64。

假設這是一個 Winforms、控制台應用程序或 Windows 服務,您必須為 x86 而不是任何 CPU 構建 exe。 它在配置管理器中。

將項目設置為 x86 將阻止文件在非 x86 平台(如 ARM)上執行。 從 Visual Studio 11 和 .NET 框架 4.5 開始,有一個名為Any CPU 32-bit preferred的新選項,從那時起這是默認設置。 生成的代碼將在任何平台上運行,但在 64 位平台上它們作為 32 位進程運行

進一步閱讀

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM