2011-02-24 96 views
3

我需要与所有.NET框架应用程序兼容:2,3,3.5和4共存Windows窗体和WPF

此外,我想开发一个应用程序,当有一台PC进行只安装了Framework 2,GUI是用Windows Forms制作的,但如果PC使用的是Framework 3或更高版本,则GUI是使用WPF完成的。


我开发了一个应用程序与NET 2和Windows窗体。 我用NET 3,4和3.5测试了这个应用程序,它工作正常。

我最近用WPF更新了GUI,这些更改很简单,因为我开发了与数据绑定范例的接口。 这个选择让我可以轻松地从Windows窗体切换到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

Ouch。这些都是非常繁重的要求... – Paddy 2011-02-24 14:23:45

+0

鉴于您的更新,它可能值得发布一些你已经尝试过,以及你的具体问题是什么。你的原始问题非常通用。现在看起来相当具体,但缺乏我们需要提供答案的细节。 – 2011-02-24 23:58:00

+0

鉴于更新,我必须同意。将其构建为.net 2.0或更高版本的应用程序。并建立一个单独的应用程序为.net 4.0或更高版本。支持这两种应用程序的开发可能不值得。尽管使用MVC/MVP是可行的,但我同意WinForms和WPF是不同的,因此视图最终会包含应该测试的代码。 – JonWillis 2011-02-27 17:47:26

回答

1

我能想到的最简单的解决方案是使用MVC/MVP模式开发GUI。视图是Winform表单或WPF表单。然后,您将每个视图开发为WinForm表单和WPF表单。

在应用程序启动时,请致电Environment.Version以获取框架版本。基于这个版本,你可以告诉应用程序加载WPF或Winform视图。如果大于或等于3.5框架,请使用WPF,否则使用WinForm视图。

另一种方法是使用兼容控件,您可以将WinForms放入WPF控件中,但这样做会失去WPF的强大功能,因此这只能将几个WinForm控件引入到大多数WPF应用程序中。

+0

虽然我真的没有看到这样做的好处,除非您使用WPF来利用WPF功能,比如您可以创建的图形美。一个好处是与MVVM的数据绑定,而MVC/MVP模式则不会。这也意味着创建视图的工作量增加了一倍,因为至少业务逻辑是分离的,应该是设计视图的拖放操作。 – JonWillis 2011-02-24 14:28:09

+0

我会注意到这也意味着你不能使用你的业务逻辑中不存在的.net 2.0中的任何语言功能...... – Paddy 2011-02-24 14:31:43

+0

非常真实!如果你想支持更多的.net框架版本,那么你的版本号最低限制。除非你为每个版本编写代码等特殊情况。 – JonWillis 2011-02-24 14:40:06

3

如果您的应用程序需要与所有这些版本兼容,那么您真正说的是:它需要是.NET 2应用程序。 .NET 3(或更高版本)的应用程序根本无法工作,因为它在启动时找不到所需的程序集。这就是说,由于.NET 3构建于.NET 2上,因此如果框架可用,我相信您可以找到动态加载.NET 3程序集的方法。虽然这不会很漂亮。

即使你管理这个,但是,在WinForms和WPF下,应用程序的基础是非常不同的,所以你会发现你正在重写一个批次的代码。简单地替换MVC应用程序的视图不太可能(除非您愿意编写一些非常复杂的视图...)。

我的建议是编写两个应用程序或 - 首选 - 将其写入.NET 4,并将该框架作为安装程序的一部分包含在内。假设这是一个商业应用程序,那么它就是要么坚持使用WinForms--我无法想象开发开销可能是值得的。

+0

不幸的是,应用程序不应该在PC上安装任何东西,只要使用它就可以。 – McTALAO 2011-02-24 15:17:03

0

您是否考虑创建多个应用程序,每个用户界面一个?如果您将业务逻辑和用户界面分开,那么这应该不是什么大问题。

然后安装程序分析目标系统并确定要安装哪个可执行文件Winforms或WPF。

+0

理想情况下,应用程序应该准备好转移到WPF。 安装应用程序后,用户可以决定安装Framework 3.5或更高版本,在这种情况下,应用程序应该转到使用WPF制作的GUI。 – McTALAO 2011-02-24 15:53:51