2009-09-22 6 views
2

Je suis en train de construire un projet modulaire et je cherche la meilleure façon de nous permettre de construire plusieurs angles de ce produit pour différents clients. Il doit être fait à l'intérieur du processus de construction afin de ne pas permettre au client de changer la valeur dans un fichier de configuration pour activer un module. Ma meilleure estimation serait une sorte d'ensemble de variables d'environnement associées à une construction spécifique. Un conseil?C# Réflexions multiples d'un produit

+3

Je pense que vous voulez dire SKU, pas de biais? –

Répondre

3

Les modules sont-ils dans des DLL séparées? Les deux approches que je peux penser sont:

  1. Utilisez les instructions de compilation conditionnelle dans les endroits où vous incluez les modules + set créer plusieurs configurations qui définissent les valeurs des variables correctes (par exemple Release_A, Release_B, etc.). Cela peut être difficile si les modules sont dans des DLL séparées, je ne suis pas sûr comment les références seraient traitées
  2. Ecrivez une architecture de plugin simple pour charger dynamiquement des modules basés sur le fichier de configuration. Cela ne fonctionne que lorsque les modules sont dans des DLL séparées - vous ne livrez que les DLLs payées par le client, donc ils ne peuvent pas vraiment activer quelque chose d'utile en utilisant le fichier de configuration.
+0

+1 pour l'approche du plugin. C'est tellement facile à faire dans .NET, et permet également d'autres personnalisations. – Lucero

1

La compilation conditionnelle est une option.

< shameless plug >

J'ai écrit un bref article sur conditional compilation avec quelques échantillons.

</prise sans vergogne >

Je ne décrirai pas encore, Grzenio donne un bon résumé, consultez sa réponse.