【问题标题】:Compiling C# GUI for win XP from a Windows 7 / VS2010 Dev Platform从 Windows 7 / VS2010 开发平台为 win XP 编译 C# GUI
【发布时间】:2011-07-25 14:12:21
【问题描述】:

我目前正在 Win 7 X64 电脑上的 Visual Studio 2010 Pro 中开发一个简单的 C# GUI。当我尝试在不同的 PC 上运行应用程序时,我的问题就出现了。这些构建似乎在所有 Win 7 机器上都可以正常工作,但是当我尝试在 Win XP 32 位机器上执行 .exe 时,我的 x86 版本构建立即失败。

我认为 C# 是一种解释性语言,可以在任何运行当前版本 .net 的机器上运行。我的源代码正在使用一些 .net 库,例如“System.IO.Ports”(主要是 SerialPort)“System.Linq”库中的一些函数以及“BackgroundWorker”

是否存在针对不同平台进行编译的任何已知问题,或者我必须在项目属性页面中正确设置才能在 Win XP 32 位上运行应用程序?

【问题讨论】:

  • 您使用的是 WPF 还是 WinForms?
  • “立即失败”是您告诉我们的有关失败模式的全部内容。完整的错误信息是什么?
  • C# 不是解释型语言。它在 .NET Framework 中运行。在 Visual Studio 中编译应用程序时,您会在 MSIL 中获得生成输出。然后在您的应用程序运行之前将 MSIL 编译为本机代码。详情见这篇文章:msdn.microsoft.com/en-us/library/ht8ecch6.aspx
  • 1.我相信我只使用 Windows 窗体的基本功能。 2. 尝试运行时发生的第一件事是我得到 win XP 错误屏幕,显示程序已崩溃,你想将错误数据发送到 Microsoft 3。是的,我理解即时编译的概念和很抱歉我错过了说话和解释性的松散......

标签: .net visual-studio-2010 windows-7 c#-4.0


【解决方案1】:

您是否在 Windows XP PC 上安装了 .NET Framework 4.0?

此外,如果出于某种原因不希望部署 .NET 4.0,并且假设您的应用程序不使用任何 .NET 4.0 功能,您可以使用 Visual Studio 2010 定位早期版本的 .NET。

See this MSDN article for more information.

您是否将构建目标从 Any 更改为仅 x86(32 位)?

您看到的完整错误消息是什么?

【讨论】:

  • 在测试之前,我确保在所有 xp 机器上都安装了 .net 4.0。我知道您可以将 .net 4.0 添加为与您的应用程序相邻的强制/建议安装,但这对于我的应用程序来说不是必需的,因为只有 4-5 个用户。但是安装了 .net 4.0 后,应用程序仍然无法启动。
  • 您是否将构建目标从 Any 更改为仅 x86(32 位)?
  • 是的,我完成了所有构建设置并设置了我认为对于 x86 构建正确的内容。我将它设置为执行 x86 版本构建。
  • 当您的程序崩溃时,它是否让您能够将其连接到调试器?如果是这样,您是否尝试过查看 Visual Studio 中是否可见异常?另外,您是否尝试过运行调试模式代码而不是发布模式代码来诊断问题?
  • 同样在您的 Main 方法中,您可以使用 try {} catch (Exception ex){MessageBox.Show(ex.ToString());} 临时包装所有内容,这将捕获您的任何异常应用程序。
【解决方案2】:

我的猜测:您需要在那些 XP 机器上安装 .net 4.0 才能使该可执行文件运行。

C# 可执行文件在虚拟机内运行,但该虚拟机不一定安装在所有目标机器上。就 VS2010 而言,它针对的是 .net 的最新版本 4.0,而旧版 XP 机器上通常不存在该版本。

您的 VS2010 将附带用于 .net 4.0 的可再分发包,因此应该很容易将它们推送到需要的任何地方。但是,具体如何操作取决于您当地的安排。

【讨论】:

    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 2010-10-23
    • 2011-03-03
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多