2011-03-29 70 views
1

我目前正在Win 7 X64 PC上开发Visual Studio 2010 Pro中的简单C#GUI。我试图在不同的PC上运行应用程序时出现问题。这些版本似乎在所有的Win 7机器上都能正常工作,但是当我试图在Win XP 32bit机器上执行.exe时,我的x86版本立即失败。从Windows 7/VS2010开发平台编译用于win XP的C#GUI

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

是否存在任何已知问题为编译不同的平台或一些设置,我必须在项目属性页有正确的Win XP 32位上有一个可运行的应用程序?

+0

你使用的是WPF还是WinForms? – Zannjaminderson 2011-03-29 20:04:16

+0

“你瞬间失败”是你告诉我们的关于失败模式的全部内容。什么是完整的错误信息? – 2011-03-30 08:32:58

+0

C#不是解释型语言。它在.NET Framework中运行。在Visual Studio中编译应用程序时,您将在MSIL中获得生成输出。然后在应用程序运行之前将MSIL编译为本机代码。有关详细信息,请参阅以下文章:http://msdn.microsoft.com/en-us/library/ht8ecch6.aspx – tomfanning 2011-03-30 09:42:10

回答

2

您是否在Windows XP PC上安装了.NET Framework 4.0?如果由于某种原因部署.NET 4.0不受欢迎,并且假定您的应用程序不使用任何.NET 4.0功能,则可以使用Visual Studio 2010将早期版本的.NET定位到.NET 4.0。

See this MSDN article for more information.

你从任何x86的(32位),改变了你的构建目标而已?

什么是你看到的完整的错误信息?

+0

我确保在测试之前在所有XP机器上安装.net 4.0。我知道你可以在你的应用程序中添加.net 4.0作为相邻的强制/建议安装,但这对我的应用程序来说不是必需的,因为只有4-5个用户。但是,安装.net 4.0应用程序仍然无法启动。 – Tripplesixty 2011-03-29 22:56:14

+1

您是否将构建目标从Any更改为x86(32位)? – tomfanning 2011-03-30 09:34:12

+0

是的,我经历了所有的构建设置并设置了我认为对于x86构建来说是正确的。我将它设置为执行x86版本构建。 – Tripplesixty 2011-03-31 16:52:08

1

我的猜测是:您需要在这些XP机器上安装.net 4.0以使该可执行文件正常工作。

C#可执行文件在虚拟机内运行,但该虚拟机不一定安装在所有目标机器上。在VS2010的情况下,它的目标是最新版本的.net,4.0,这在旧版XP机器上通常不会出现。

您的VS2010将带有.net 4.0的可重新分发的软件包,因此应该很容易将它们推送到任何需要的地方。但是,您的具体做法取决于您当地的安排。