我需要使应用程序与所有.NET Framework兼容:2,3,3.5和4。
此外,我想开发一个应用程序,当使用仅安装了Framework 2的PC执行时,GUI是使用Windows窗体制作的,但如果PC使用Framework 3或更高版本,则GUI使用WPF完成
我使用NET 2和Windows Forms开发了一个应用程序。 我用NET 3,4和3.5测试了这个应用程序,它运行正常。
我最近使用WPF更新了GUI,这些更改很简单,因为我使用数据绑定范例开发了界面。 这个选择使我可以轻松地从Windows Forms切换到WPF。
我克服了使用本指南为任何框架创建单个应用程序(对于Windows窗体)的问题:http://msdn.microsoft.com/it-it/library/w671swch%28v=VS.100%29.aspx。
现在我想确保如果PC是NET 3.5或更高版本,则使用WPF制作的GUI安装应用程序。
我尝试遵循一些指导原则,例如:http://msdn.microsoft.com/it-it/library/433ysdt1.aspx,但未成功。 我对如何进行感到非常困惑。
应用程序不应在PC上安装任何东西,只需使用那里的东西。
提前致谢, Talao。
答案 0 :(得分:3)
如果您的应用程序需要与所有这些版本兼容,那么您真正要说的是:它需要是.NET 2应用程序。 .NET 3(或更高版本)应用程序根本无法正常工作,因为它无法在启动时找到所需的程序集。
也就是说,由于.NET 3是基于.NET 2构建的,因此我确信如果框架可用,您可以找到动态加载.NET 3程序集的方法。不过,这不会很漂亮。
然而,即使你管理这个,在WinForms和WPF下,应用程序的基本原理也大不相同,所以你会发现你正在重写 lot 代码。简单地替换MVC应用程序的视图是不够的(除非你愿意写一些非常复杂的视图......)。
我的建议是编写两个应用程序,或者 - 首选 - 将它写在.NET 4中,并将框架作为安装程序的一部分包含在内。假设这是一个商业应用程序,那么它或者只是坚持使用WinForms - 我无法想象开发开销可能是值得的。
答案 1 :(得分:1)
我能想到的最简单的解决方案是使用MVC / MVP模式开发GUI。视图是Winform表单或WPF表单。然后,您将每个视图开发为WinForm表单和WPF表单。
启动应用程序时,请调用Environment.Version
以获取框架版本。基于此版本,您可以告诉应用程序加载WPF或Winform视图。如果大于或等于3.5框架,请使用WPF,否则使用WinForm视图。
另一种方法是使用兼容的控件,你可以将WinForms放在WPF控件中,但是这样做会失去WPF的功能,所以这只是为一个大多数WPF应用程序带来一些WinForm控件。 / p>
答案 2 :(得分:0)
您是否考虑过为每个用户界面创建多个应用程序?如果您将业务逻辑和用户界面分开,那么这应该不是什么大问题。
然后安装程序分析目标系统并确定将安装哪个可执行文件Winforms或WPF。