2012-04-28 125 views
0

我的任务是制作一个连接到互联网(使用Wininet)并下载文本文件的简单应用程序。然后它将数据显示在一个listBox小部件中。要求是制作基于GUI的应用程序,因此我在Visual Studio Express 2010中使用了Windows Forms。Windows窗体应用程序(visual studio 2010)兼容性问题

该应用程序在我的PC上运行良好,但是我意识到它只在我的PC上运行。我在另一台PC上安装了.NET 4和Visual Studio 2010可再发行组件,并且在那里运行得很好。现在,我正在为之制作的这个人需要在Windows PC上具有最大的兼容性。我完全卡在这里..我应该切换到旧版本的VSE?

从我可以搜索的内容来看,使用/ MT代替/ MD会导致应用程序静态链接,但是我的应用程序也使用/ CLR,这些不兼容。

任何想法?

注意:我以前用控制台输出做了一个类似的应用程序(下载和显示),它在任何地方都能很好地工作。

+0

您不能在Winforms应用程序中使用/ MT。这与“最大兼容性”无关,当然他需要一个安装程序,所以他不必亲自安装依赖关系。在Express版本中不支持创建安装程序,您需要更新或使用其他工具。像WiX或InstallShield一样。 – 2012-04-28 17:02:09

+0

该应用程序本身非常简单,他只需要在单个exe文件中的应用程序。通过启用/ MT,我认为静态链接是可能的,因此可以确保兼容性,但事实证明,WinForms不接受/ MT。 – tecfreak 2012-04-28 17:04:25

+0

@HansPassant:作为一个侧面问题,是否可以在安装程序中将依赖项安装为后台操作(对用户不可见)? – tecfreak 2012-04-28 17:05:21

回答

0

“windows PC上最大兼容性”是什么意思。如果您可以捆绑必需的可再分发组件,只要PC上的窗口能够执行二进制文件(例如,不是试图执行64位二进制文​​件的32位PC),就应该运行程序(如您在第二台PC上找到的那样)

+0

我不认为发布resdistributables是可以接受的。他想要一个简单的.exe文件。 – tecfreak 2012-04-28 16:59:02

+0

如果没有.Net框架,你就无法运行.Net程序......它类似于在没有JVM的情况下运行java字节码 – Attila 2012-04-28 17:05:55

+0

当然,我并不热衷于在没有框架的情况下运行应用程序。我的问题是,我是否应该选择旧版本的VSE(2008?),因为今天大多数PC都安装了2008年的可再发行组件。它会使用旧的.Net版本吗? – tecfreak 2012-04-28 17:32:06

0

我一直在你的情况。

我可以为您提供免费的.NET应用程序运行器(RunNetApp.exe),可在第一次运行应用程序之前自动安装.NET Framework 4。如果框架已经安装在目标机器上,它只会运行你的应用程序。

我还建议将应用程序框架更改为“.NET Framework 4 Client Profile”。它的设置大约是40MB(相比200MB的完整“.NET框架4”)。

它有帮助吗?

+0

谢谢,但我不认为我现在需要它。 – tecfreak 2012-04-28 17:29:31

相关问题