WinForms 应用程序 (.NET 6) 始终在 Microsoft Store 中以 32 位运行

问题描述 投票:0回答:1

我在 Microsoft Store 中发布了一个 WinForms 应用程序,但它只能在 64 位 Windows 11 操作系统上以 32 位运行。该应用程序使用 .NET 6 (C#) 开发并编译为“任何 CPU”。 “Desktop Bridge”msix 文件是否有仅允许 32 位的限制?

任务管理器显示以下内容:

我尝试更改解决方案和项目文件中的设置,但没有更改。

c# .net winforms .net-6.0 microsoft-store
1个回答
0
投票

让我们深入探讨您面临的问题。

Windows 11确实支持32位(x86)64位(x64)应用程序。但是,可能有一些因素会影响应用程序的行为。以下是需要考虑的几点:

  1. 编译目标(“任何CPU”)

    • 当您将应用程序编译为“任何 CPU”时,理论上它应该以 32 位或 64 位运行,具体取决于主机系统。
    • 但是,可能存在影响此行为的特定依赖项或配置。
  2. 桌面桥 (MSIX):

    • Desktop Bridge (MSIX) 允许您打包 Win32 应用程序以便通过 Microsoft Store 分发。
    • 默认情况下,MSIX 包应支持 32 位和 64 位体系结构。
    • 确保您的 MSIX 包已正确配置为处理这两种体系结构。
  3. 任务管理器显示

    • 您提到任务管理器将您的应用程序显示为 32 位。由于 Windows 报告进程的方式,这可能会产生误导。
    • Windows 通常根据主可执行文件(例如启动器)的体系结构来标记进程,即使它以不同的位数动态加载其他组件(例如 DLL)。
    • 要验证应用程序的实际位数,您可以使用 Process ExplorerDependency Walker 等工具。
  4. 依赖关系

    • 检查您的应用程序是否依赖于任何第三方库或组件。
    • 确保这些依赖项在 32 位和 64 位版本中均可用。
    • 如果这些组件中的任何一个仅是 32 位,则您的整个应用程序可能会被迫在 32 位模式下运行。
  5. 管理员权限:

    • 有时,以管理员身份运行应用程序可能会影响其行为。
    • 确保您的应用程序不需要提升权限即可正常运行。
  6. 测试环境:

    • 在不同的 Windows 11 计算机(32 位和 64 位)上测试您的应用程序,看看行为是否一致。
    • 考虑创建一个简单的测试应用程序(例如,“Hello World”WinForms 应用程序)并查看它是否出现相同的问题。
  7. 堆栈溢出讨论:

    • 您并不是唯一面临这个问题的人。有一个Stack Overflow 线程讨论了类似的情况。
    • 可能值得检查那里提出的解决方案。

请记住,Windows 11 应允许 32 位应用程序在 64 位系统上运行,不会出现任何问题。如果您仍然遇到问题,请考虑向社区或 Microsoft 支持寻求帮助。

© www.soinside.com 2019 - 2024. All rights reserved.