2011-11-30 3 views
0

Je ne comprends peut-être pas complètement le wiki article sur la portée, alors pardonnez-moi si cela semble stupide.
Utilisation de OpenWrap avec Scope

Intro:
J'ai une solution (ABC.sln) avec plus de 40 projets et essaie de mettre en œuvre OpenWrap de gestion des paquets. Je l'ai fait ce qui suit dans le dossier racine de la solution:

o init-wrap -all 

Cela a bien fonctionné: J'ai maintenant un fichier appelé SLN.wrapdesc dans le dossier racine de la solution. Tous les fichiers .csproj dans les sous-dossiers contiennent la ligne de cibles OpenWrap.
Je puis proceded d'ajouter les différents enveloppements à la solution:

o add-wrap -Name xxx 

Encore une fois, cela a bien fonctionné: J'ai des enveloppes dans le dossier enveloppements, et la construction ne rompt pas après avoir enlevé les anciennes références de les projets.

Problème:
Tous les contenus des enveloppes vont tous les projets, même pour ceux qui ne ont pas besoin. Je voudrais pouvoir spécifier quels wraps vont où, par exemple AjaxControlToolkit ne va que dans des projets web.

Ce que j'ai essayé
D'abord, je l'ai enlevé la AjaxControlToolkit du wrapdesc:

o remove-wrap AjaxControlToolkit 

Cela provoque l'accumulation de briser (comme prévu). Alors j'ai essayé les éléments suivants: 1.
Essayez d'ajouter l'enveloppe de retour avec une portée:

o add-wrap -Name AjaxControlToolkit -scope webproject 

Cela met simplement l'enveloppe de retour dans le dossier enveloppements. J'ai alors ajouté <OpenWrap-Scope>customscope</OpenWrap-Scope> au fichier de projet, mais la construction a encore cassé.
2. Essayez d'ajouter manuellement un fichier appelé ABC.webproject.wrapdesc au dossier racine. Cela provoque l'erreur suivante lorsque je tente d'ouvrir la solution:

The "exists" function only accepts a scalar value, but its argument "@(_WrapFile->'%(FullPath)')" evaluates to "D:\Projects\ABC.webproject.wrapdesc;D:\Projects\ABC.wrapdesc" which is not a scalar value. 

Je suppose que ce n'aime pas 2 fichiers wrapdesc. C'est étrange parce que le wiki dit "... vous pouvez ajouter un second descripteur à côté de votre descripteur par défaut ..."

Alors maintenant je suis coincé. Quelqu'un a des idées?

Répondre

1

Le fichier par-msbuild n'est vraiment pas recommandé pour la gestion des dépendances. Le faire par projet n'est pas tout à fait la philosophie de conception derrière OpenWrap, donc le système n'est pas tout à fait optimisé pour ces scénarios.

Si vous ne besoin quelque chose de ces assemblées alors la meilleure façon de le résoudre est de ne pas utiliser les références en n'utilisant un code de ces paquets. Cela résout le problème très facilement car rien ne sera chargé (ou même besoin d'être sur le disque) si aucun code n'a été ajouté. Cela dit, add-wrap -scope newscope va créer un fichier .wrapdesc supplémentaire qui ajoutera la nouvelle dépendance à la nouvelle portée, en créant un fichier myProject.newscope.wrapdesc indépendamment de l'original myProject.wrapdesc.

Si vous voulez faire cela par projet, avez-vous essayé d'utiliser la portée conventionnelle? Quelque chose comme:

directory-structure: src\*{scope: Web=WebProjects}* 

prendrait-tout projet chez un enfant de dossier de src contenant Web au nom et affecter ceux à la portée de WebProjects.

Je sais que l'on a bien fonctionné pour mes projets jusqu'à présent, bien que vous deviez redémarrer VS car il met agressivement en cache certains fichiers et ne verra pas le changement. La personnalisation du fichier msbuild lui-même n'est pas entièrement testée (et l'entrée wiki était plus une spécification de conception que de la documentation finale, elle n'a pas été construite de cette manière), cela peut ou non fonctionner. Si vous pouvez ouvrir un ticket de bogue sur http://github.com/openrasta/openwrap/issues

+0

o add-wrap -Name AjaxControlToolkit -scope webproject n'ajoute que le retour au dossier wraps, il ne crée pas le fichier .wrapdesc supplémentaire. Aussi, je ne veux pas changer ma disposition de source pour tous être dans un dossier src. Cela pourrait-il être ce qui ne va pas avec ça? – CarllDev

+0

Donc d'abord cela ne devrait pas arriver, quelle version d'OpenWrap utilisez-vous? J'ai juste essayé et cela a fonctionné comme prévu. En ce qui concerne la mise en page, non, ce n'est pas grave du tout, le système est content de mettre du code où vous voulez – SerialSeb