[英]Matching application in C# that built on 64-bit system to running on 32-bit system
[英]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.