Macros/variable d'Environnement.la sln et.fichiers vcproj pour Visual studio

j'ai deux problèmes similaires:

a) j'ai une solution qui inclut plusieurs projets et je veux pouvoir facilement changer l'emplacement du projet en mettant une variable d'environnement/macro. Comme exemple de ce projet peut être situé dans SolutionDirDir1 ou SolutionDirDir2 Donc, je veux spécifier qu'il doit être situé dans SolutionDir$(Var) et juste définir la variable.

est-ce qu'il y a une façon de le faire dans Visual Studio?

Je ne connais actuellement que deux solutions - edit .la sln fichier de manuel d'/programme, afin de trouver ce projet et de définir chemin d'accès correct.

Je n'ai pas pu utiliser la variable d'environnement .la sln fichier.

b) j'ai un projet qui comprend des ressources (.rc et .h) des fichiers. Je veux être en mesure de définir leur emplacement par d'autres variables d'environnement ou macro.

quelque chose comme ProjectDir$(Var2)resource.rc

I j'ai trouvé des informations prometteuses sur les fiches de propriétés, mais Visual studio n'étend pas les macros quand je les utilise dans la balise de fichier .vcproj.

Merci pour toutes les idées sur la façon de résoudre ce problème.

en ce qui Concerne, Victor

29
demandé sur Rom 2009-05-08 19:39:11

5 réponses

il suffit d'utiliser la variable d'environnement dans le champ correspondant:

OutputDirectory="$(MyEnvVariableName)\Bin"

un truc est que vous devez redémarrer L'IDE Visual Studio à chaque fois que vous changez la variable.

il y a un article de MSDN justement à ce sujet: comment: utiliser des Variables D'environnement dans un Build

21
répondu Rom 2009-07-14 17:46:59

je pense que j'ai le même objectif que vous: je veux utiliser des variables d'environnement pour localiser certains projets dans un fichier de solution (.sln) et d'utiliser certaines variables d'environnement pour localiser certains fichiers dans mes projets.

j'ai trouvé un moyen de le faire et cela fonctionne très bien pour moi (avec Visual Studio 2005): - modifier la .fichier sln avec un éditeur de texte et utiliser des variables d'environnement avec la syntaxe suivante %MyEnvironmentVariable% - modifier la .vcproj file et remplacer le chemin vers le fichiers souhaités avec quelques variables, avec la syntaxe suivante $(MyEnvironmentVariable).

J'espère que ça aidera... Cyrille

17
répondu 2009-05-26 08:37:57

la meilleure façon d'obtenir ce que vous décrivez en b) est d'utiliser des feuilles de propriétés. Regardez aussi cette très question similaire .

j'ai trouvé des infos prometteuses sur feuilles de propriété, mais studio visuel n'étend pas les macros quand j'utilise dans le Fichier dans la balise .vcproj.

Je ne sais pas quelle version de VS vous utilisez. VS2008 vous permet de définir par exemple un répertoire comme ceci: "$(OpenCVInclude)\cxcore\include". Je l'utilise tout le temps. OpenCVInclude est une macro définie dans une feuille de propriétés.

quant à la question a), je pense qu'il n'y a pas de façon "propre" de faire ce que vous voulez. Comme alternative, vous pouvez utiliser le gestionnaire de configuration:

  • Comprennent tous les projets de la solution.
  • nommer le projet différemment, par exemple sur la base de L'OEM.
  • pour chaque projet définir release et debug configurations dans la solution
  • dans" Build->Configuration Manager", vous pouvez cocher ou décocher la colonne" Build " pour chaque configuration. Cochez la case "construire" pour le projet concerné.
2
répondu Dani van der Meer 2017-05-23 12:32:05

Je ne suis pas sûr si vous construisez juste des projets C++ ou si vous construisez aussi des projets C#\VB, mais une des grandes choses au sujet de Visual Studio est que tous les projets sont vraiment juste des projets MSBuild. Si vous modifiez un projet dans un éditeur de texte, vous verrez qu'à la fin du projet, il importe une .le fichier des cibles. Si vous trouvez et trouvez suivez les importations, vous verrez que presque tous les projets VS importent Microsoft.Commun.Cible. Microsoft.Commun.Objectifs importations Personnaliser.Avant.Microsoft.Commun.Cible. En utilisant cet import, vous pouvez importer vos propres fichiers cibles avec vos propres actions personnalisées.

j'ai par exemple un fichier cible qui a une propriété commune définie pour tous les projets dans une solution et un événement post-construction personnalisé qui traite à la fin de chaque bâtiment de projet.

en utilisant cette méthode d'extension et en créant des configurations personnalisées dans la solution en plus de la version\debug standard, vous devriez être capable de créer une configuration de construction aussi complexe que vous le souhaitez.

1
répondu mageos 2014-01-28 04:55:05

(un) Cyrille donne une bonne solution à ce que vous avez demandé. Une autre façon est de garder vos paramètres variables dans un endroit commun. Notez que cela ne fonctionnera pas pour les fichiers non-msbuild comme *.la sln et *.vcproj (jusqu'en 2010).

dossiers de projet: ... $(ChangeableDir)\foo.cs

commun.cible: ChangeThis ...

cependant, je ne pense pas que ce soit une bonne façon de faire les choses. Si l' les différences entre ce que vous construisez sont de grandes pièces de fonctionnalité, vous devriez envisager de créer une branche dans votre système de contrôle source. OTOH, si les différences sont mineures -- par exemple des chaînes codées en dur -- alors cela mène à votre deuxième question...

(b) Le type de gestion des ressources que vous décrivez est essentiellement le même problème auquel font face les gens qui localisent leur projet dans différentes langues. Heureusement, le support direct est intégré dans Visual Studio depuis 2005. Vérifier out questions précédentes comme: localisation dans Visual Studio 2008

0
répondu Richard Berg 2017-05-23 11:54:00