2008-09-17 7 views

Répondre

1

Si vous voulez faire quelque chose comme ceci, vous devrez utiliser des commandes de préprocesseur et des symboles de compilation conditionnelle.

J'utiliser des symboles qui indiquent clairement la version de .NET que vous ciblez (par exemple NET11 et Net20), puis enveloppent le code correspondant à ceci:

#if NET11 
// .NET 1.1 code 
#elif NET20 
// .NET 2.0 code 
#endif 

La raison de le faire de cette façon plutôt que un simple if/else est une couche de protection supplémentaire au cas où quelqu'un oublierait de définir le symbole. Cela étant dit, vous devriez vraiment explorer le cœur de la raison pour laquelle vous voulez/devez faire cela.

0

Je poserais la question de pourquoi vous devez maintenir deux bases de code, je choisirais un et irais avec si il y a une chance de cela.

Essayer de conserver deux bases de code en synchronisation avec le nombre de changements, et les types de changements seraient très complexes, et un processus de construction à construire pour l'une ou l'autre version serait très complexe.

+0

Le point est d'avoir une base de code qui prend en charge être construit pour l'une ou l'autre plate-forme cible. – minty

2

Il y a beaucoup d'options différentes ici. Là où je travaille, nous utilisons #if pragmas mais cela pourrait aussi être fait avec des assemblages séparés pour les versions séparées.

Idéalement, vous devez au moins conserver le code dépendant de la version dans des fichiers de classe partielle séparés et rendre la version correcte disponible au moment de la compilation. J'appliquerais ceci si je pouvais remonter dans le temps, notre base de code a maintenant beaucoup de # pragmas et parfois il peut être difficile à gérer. La pire partie de l'ensemble du pragma #if est que Visual Studio ignore tout ce qui ne sera pas compilé avec les définitions actuelles et il est donc très facile de vérifier les changements de rupture.

NUnitNUnit prend en charge à la fois 1.1 et 2.0 et est donc un bon choix pour un cadre de test. Il n'est pas trop difficile d'utiliser quelque chose comme NAnt pour créer des versions 1.1 et 2.0 séparées, puis d'exécuter automatiquement les tests NUnit.

0

Nous avons eu ce problème et nous nous sommes retrouvés avec une "couche de compatibilité" où nous avons implémenté un ensemble unique d'interfaces et de code utilitaire pour .NET v1.1 et v2.0.

Ensuite, notre installateur a défini le bon code pour la bonne version. Nous avons utilisé NSIS (gratuit!), Et ils ont des fonctions que vous pouvez appeler pour déterminer la version .NET.

Questions connexes