2011-02-24 97 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