2009-04-21 7 views
2

J'ai une solution plutôt importante composée d'environ 10 projets différents. Jusqu'à présent, nous avons livré la totalité de la solution à nos clients, mais nous envisageons d'expédier une version dépouillée de nos logiciels.références d'assemblages conditionnels basés sur la solution

À cette fin, je voudrais exclure plusieurs projets de la solution. Je sais que vous pouvez empêcher la création de projets dans le gestionnaire de configuration de la solution. En utilisant des macros, toutes les références de code peuvent être désactivées lorsque la configuration supprimée est choisie. Malheureusement, cela ne prend pas en compte les références du projet. Puis-je rendre ces références conditionnelles en fonction de la configuration choisie?

Répondre

1

Ce devrait être une question assez simple pour supprimer les références de projet du fichier de projet en utilisant un petit script - ce serait juste un cas de suppression de lignes ajoutant ces références. Le format de fichier du projet est assez simple. Je soupçonne que c'est probablement la solution la plus facile.

+2

Je préférerais une solution statique à une solution dynamique, personnellement. Exécuter des macros sur vos fichiers de projet est un bon moyen de vous tirer une balle dans le pied. – Randolpho

+0

Eh bien, je n'ai jamais suggéré de macros réelles - juste des scripts qui savaient quoi enlever. Je soupçonne que cela peut finir par être une solution plus simple (et qui facilite le développement) que d'utiliser plusieurs solutions. –

0

Votre meilleur pari est de créer des projets séparés pour votre solution "dépouillée" qui ne référence que les autres projets que vous voulez. Référence le même code. Créez une solution distincte pour regrouper ces projets.

Ils peuvent tous vivre ensemble dans la même structure de dossiers.

Par exemple:

  • MySolution/MySolution.sln
  • MySolution/MyStrippedDownSolution.sln
  • MySolution/MyProject1/MyProject1.csproj
  • MySolution/MyProject1/MyStrippedDownProject1.csproj
  • MySolution /MyProject1/MyClass1.cs
  • MySolution/MyProject2/MyProject2.csproj
  • MySolution/MyProject2/MyStrippedDownProject2.csproj
  • MySolution/MyProject2/MyClass2.cs
  • MySolution/MyProject2/MyProject3.csproj
  • MySolution/MyProject2/MyClass3.cs

    • référence MyProject1 et MyStrippedDownProject1 MyClass1
    • MyProject2 et MyStrippedDownProject2 référence MyClass2
    • MyProject3 et MyStrippedDownProject3 référence MyClass3
  • références MySolution MyProject1 et MyProject2 et MyProject3

  • références MyStrippedDownSolution MyStrippedDownProject1 et MyStrippedDownProject2
  • références MyProject1 MyProject2 et MyProject3
  • MyStrippedDownProject1 fait référence uniquement MyStrippedDownProject2 - il ne fait pas référence - MyProject3
+0

Cela ne fonctionnera malheureusement pas car l'un des projets est le système de menu qui fait référence à presque tous les autres projets. – Wouter

+0

Je ne suis pas. Comment ça ne marchera pas? Vous copiez le fichier projet, le renommer "StrippedDownProject" ou autre, et supprimez les références que vous ne voulez pas. – Randolpho

0

Je pense que cela devrait être fait lorsque vous construisez vos projets pour la production.Entourez simplement tout le code qui doit disparaître entre un IF au niveau du compilateur, qui vérifie une directive de compilateur définie. Si cette option est activée, le code entre IF et ENDIF ne sera pas compilé. Cela fonctionne uniquement pour les fichiers de code.

Pour tout ce que vous devez sortir, faites votre propre choix, en fonction du format de fichier, comme Jon Skeet l'a mentionné. Mais une fois que vous avez mis cela dans des scripts de construction, vous n'avez plus besoin de vous en soucier - pas de configuration de commutation, etc.

Questions connexes