2011-02-24 3 views
3

je dois faire une application compatible avec le tout NET Framework: 2, 3, 3,5 et 4.Coexistence de Windows Forms et WPF

En outre, je veux développer une application qui lorsqu'elle est effectuée avec un PC qui a seulement installé Framework 2 l'interface graphique est faite avec Windows Forms, mais si le PC utilise le Framework 3, ou plus tard, l'interface graphique est faite avec WPF.


J'ai développé une application avec NET 2 et Windows Forms. J'ai testé cette application avec NET 3, 4 et 3.5 et cela fonctionne correctement.

J'ai récemment mis à jour l'interface graphique avec WPF, ces changements étaient simples, car j'ai développé l'interface avec le paradigme de la liaison de données. Ce choix m'a permis de passer facilement de Windows Forms à WPF.


J'ai surmonté le problème de la création d'une seule application (pour Windows Forms) à effectuer avec un cadre à l'aide de ce guide: http://msdn.microsoft.com/it-it/library/w671swch%28v=VS.100%29.aspx.

Maintenant, je voulais m'assurer que si le PC était le NET 3.5 ou supérieur installé l'application en utilisant l'interface graphique faite avec WPF.

J'ai essayé de suivre certaines directives, telles que: http://msdn.microsoft.com/it-it/library/433ysdt1.aspx, mais sans succès. Je suis très confus sur la façon de procéder.


L'application ne doit rien installer sur le PC, il suffit d'utiliser ce qui est là. Merci d'avance, Talao.

+0

Ouch. Ce sont des exigences assez lourdes ... – Paddy

+0

Compte tenu de vos mises à jour, il pourrait être utile de poster quelques-unes de vos expériences et de vos problèmes spécifiques. Votre question initiale était très générique. maintenant, il semble assez spécifique, mais il manque le détail dont nous aurions besoin pour fournir une réponse. –

+0

Compte tenu des mises à jour, je suis d'accord. Construisez-le en tant qu'application .net 2.0 ou supérieure. Et créez une application distincte en tant que .net 4.0 ou supérieur. Le développement requis pour supporter les deux dans une seule application ne vaut probablement pas la peine. Bien qu'il soit possible d'utiliser MVC/MVP, je suis d'accord WinForms et WPF sont différents, et en tant que tel, les vues finiront par contenir du code qui devrait être testé. – JonWillis

Répondre

1

La solution la plus simple à laquelle je puisse penser est de développer l'interface graphique en utilisant le modèle MVC/MVP. Où l'affichage est un formulaire Winform ou un formulaire WPF. Vous avez ensuite développé chaque vue en tant que formulaire WinForm et en tant que formulaire WPF.

Au démarrage de l'application, appelez le Environment.Version pour obtenir la version du framework. En fonction de cette version, vous pouvez indiquer à l'application de charger avec les vues WPF ou Winform. Si supérieur ou égal au cadre 3.5, utilisez WPF, sinon utilisez les vues WinForm. L'autre approche consiste à utiliser des contrôles compatibles, où vous pouvez placer WinForms dans les contrôles WPF. Cependant, vous perdez la puissance de WPF. Il est donc préférable d'ajouter quelques contrôles WinForm à une application principalement WPF.

+0

Bien que, honnêtement, je ne vois aucun avantage à le faire, sauf si vous utilisez WPF pour tirer parti des fonctionnalités WPF comme la beauté graphique que vous pouvez créer. Un avantage est la liaison de données avec MVVM que vous n'aurez pas avec les modèles MVC/MVP. Cela signifie également doubler la charge de travail en termes de création de vues, car au moins la logique métier est séparée et il devrait s'agir d'un glisser/déposer des exercices pour la conception des vues. – JonWillis

+0

Je voudrais noter que cela signifie également que vous ne pouvez pas utiliser des fonctionnalités de langage dans votre logique métier qui n'existent pas dans .net 2.0 ... – Paddy

+0

Très vrai! Si vous voulez supporter plus de versions de framework .net, vous êtes limité par le numéro de version le plus bas. Sauf si vous faites des cas spéciaux comme la vue où vous écrivez du code pour chaque version. – JonWillis

3

Si votre application doit être compatible avec toutes ces versions, ce que vous dites vraiment est: il doit s'agir d'une application .NET 2. Une application .NET 3 (ou supérieure) ne fonctionnera tout simplement pas, car elle ne trouvera pas les assemblages dont elle a besoin au démarrage. Cela dit, étant donné que .NET 3 est construit sur .NET 2, je suis sûr que vous pouvez trouver un moyen de charger dynamiquement les assemblys .NET 3 si le framework est disponible. Cela ne va pas être joli, cependant.

Même si vous gérez cela, cependant, les principes de base d'une application sont très différents sous WinForms et WPF, vous trouverez donc que vous réécrivez un lot de code. Le simple remplacement de la vue d'une application MVC ne sera probablement pas suffisant (sauf si vous êtes prêt à écrire des vues vraiment compliquées ...).Ma suggestion serait soit d'écrire deux applications ou - de préférence - l'écrire dans .NET 4 et d'inclure le framework dans votre installateur. En supposant qu'il s'agisse d'une application commerciale, c'est soit cela ou simplement coller avec WinForms - je ne peux pas imaginer que les frais généraux de développement en valent la peine.

+0

Malheureusement, l'application ne devrait rien installer sur le PC, il suffit d'utiliser ce qui est là. – McTALAO

0

Avez-vous envisagé de créer plusieurs applications, une pour chaque interface utilisateur? Si vous avez une logique métier et une interface utilisateur séparées, cela ne devrait pas poser trop de problèmes. Ensuite, le programme d'installation analyse le système cible et détermine quel exécutable, Winforms ou WPF, va être installé.

+0

Idéalement, l'application devrait être prête à passer à WPF. Après l'installation de l'application, l'utilisateur peut décider d'installer le Framework 3.5 ou supérieur, dans ce cas l'application doit aller à l'interface graphique faite avec WPF. – McTALAO