2010-01-04 16 views
4

Existe-t-il un moyen de substituer une variable d'environnement dans un fichier de projet (avec ou sans vsprops) qui, si la variable n'est pas trouvée, est remplacée par une valeur par défaut? Je n'ai trouvé aucun moyen de le faire, car tout semble remplacer les variables d'environnement.Variables d'environnement optionnelles avec vcproj/vsprops

EDIT: J'ai besoin que cela fonctionne pour une propriété, pas pour une variable d'environnement. Plus précisément, devenv peut être invoqué à partir d'une autre source avec une variable d'environnement spécifiant le répertoire de construction cible. Si cette variable n'existe pas (peut-être parce que devenv est juste utilisée comme IDE), elle devrait utiliser une valeur par défaut.

Je l'ai déjà pour MSBuild; J'en ai maintenant besoin pour travailler sur VCBuild.

Répondre

0

Je sais qu'il est techniquement hors du champ de ma question initiale, mais je suis allé à résoudre ce problème en écrivant un complément qui permettra de détecter si la variable d'environnement est se t et, si ce n'est pas le cas, construit la valeur par défaut de la variable et la stocke. Ce n'est pas la solution la plus élégante, mais cela fonctionne.

0

hmm, apparemment, je ne sais pas comment FROMAT XML ici

<PropertyGroup Condition=" '$(your_var)' == '' "> 
    <your_var>default</your_var> 
</PropertyGroup> 
+1

C'est pour MSBuild, pas pour VCBuild, malheureusement. J'aimerais que ce soit aussi simple. – coppro

+0

mes excuses j'ai manqué votre référence à VCBuild – mfeingold

1

Je ne pense pas que cela peut être fait au niveau du projet: le dossier du projet vc ne sont pas analysées pour les états logiques pour autant que je sais (Mis à part les événements de génération dans lesquels vous pouvez utiliser la syntaxe du fichier de commandes, mais c'est parce qu'ils sont exécutés en tant que fichier batch). La seule chose que vous pouvez faire est de créer une variable d'environnement globale qui a la variable par défaut. Il sera remplacé si l'environnement dans lequel devient le devient également le spécifie.

environnement:

MYVSOUTDIR="c:/temp" 

vcproj/vsprops:

OutputDirectory="$(MYVSOUTDIR)\_$(ConfigurationName)_$(PlatformName)" 

remplacer ce dans un fichier batch:

set MYVSOUTDIR="d:/mytemp" 
devenv