2010-08-06 6 views
2

Pardonnez-moi si c'est trop simple - Je suis presque complètement nouveau à MS Build. J'ai un projet qui crée deux solutions Silverlight différentes et la hiérarchie des fichiers ressemble à ceci:MSBuild: Chemin Relatif Arrière dans Inclure

+ Project123 
    + Assets 
    + Images 
    + Fonts 
    + Video 
    + Source 
    + SL3 
     - Project123-SL3.sln 
     + Solution 
     - App.xaml 
     + Pages 
    + SL4 
     - Project123-SL4.sln 
     + Solution 
     - App.xaml 
     + Pages

Ce que je voudrais avoir cela se produise est pour MSBuild pour atteindre au-dessus de son parent (qui est soit SL3 ou SL4) parent (qui est Source), puis dans le dossier soeur de Assets pour inclure ce dossier. Je ai regardé Spécification des entrées avec des caractères génériques sur How to: Use Wildcards to Build All Files in a Directory, mais cela ne dit pas vraiment comment monter l'arbre relatif, puis redescendre. Est-ce possible avec MSBuild?

+0

Hm ... Pourquoi vos solutions n'incluent-elles pas les actifs, même s'ils se trouvent là? Les projets peuvent être partagés entre les solutions, alors pourquoi ne pas en abuser :)? –

+0

@Hamish Grubijan: Je n'ai qu'un seul ensemble d'Actifs. Avec les vidéos, ce dossier pourrait devenir assez volumineux. La dupliquer sous chaque solution serait un gaspillage d'espace et d'argent (c'est sur un serveur de cloud que je paye aussi pour le stockage - comme Azure). –

+0

dossiers virtuels devraient alléger le besoin de copier. Maintenant, 'MsBuild' devrait fonctionner sur n'importe quelle solution Visual Studio basée sur MsBuild. Utiliser le dernier et le meilleur (VS2010, .Net 4.0) est généralement une bonne idée. Maintenant, MsBuild n'est pas le seul outil qui peut construire votre solution sur la ligne de commande; devenv.exe peut aussi bien http://msdn.microsoft.com/en-us/library/xee0c8y7(VS.80).aspx En fait, msBuild et devenv.exe peuvent produire des résultats différents, mais lors de l'utilisation de devenv.exe sur ligne de commande devrait compiler le même que si vous avez travaillé à partir de GUI. Recherchez les dossiers virtuels dans VS2010, ou quel que soit leur nom. –

Répondre

3

Vous pouvez utiliser quelque chose comme ça dans votre fichier de projet Silverlight.

<Content Include="..\..\Assets\**\*"/> 
+0

Parfait, c'est génial, merci! –