2010-04-20 5 views
1

ne peux pas comprendre comment obtenir la dernière partie de

$ (MSBuildProjectDirectory)

Par exemple, si la valeur est « c: \ développement \ projects \ project_branch " alors, je veux juste la dernière partie" project_branch ".

Des idées?

Merci,

Sean

+0

Pour quoi vous essayez d'utiliser cette valeur? –

+0

Vous souhaitez déployer des fichiers binaires pour les branches vers un emplacement qui organise les dossiers par nom de branche. Donc, la chose la plus proche sans se référer à subversion semble être le nom du dossier où se trouve notre fichier msbuild. Il existe une tâche de déploiement que nous utilisons pour la génération nocturne automatisée. L'objectif est donc d'ajouter une tâche de déploiement pour la branche. – Sean

Répondre

2
<Project DefaultTargets="BuildAll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <Target Name="GetMSBuildProjectLocalDirectory"> 
     <CreateItem Include="$(MSBuildProjectDirectory)"> 
      <Output ItemName="MSBuildProjectDirectoryMeta" TaskParameter="Include"/> 
     </CreateItem> 
     <CreateProperty Value="%(MSBuildProjectDirectoryMeta.Filename)"> 
      <Output PropertyName="LocalDirectory" TaskParameter="Value"/> 
     </CreateProperty> 
    </Target> 

    <Target Name="BuildAll" DependsOnTargets="GetMSBuildProjectLocalDirectory"> 
     <Message Text="$(LocalDirectory)" /> 
    </Target> 

</Project> 
4

En 4.0+, vous pouvez utiliser les fonctions de la propriété de faire cela en une ligne.

Dans ce cas, par exemple $ ([System.IO.Path] :: GetDirectoryName ($ (MSBuildProjectDirectory)))

ou vous pouvez utiliser une fonction de chaîne.

0

Si vous suivez les meilleures pratiques, votre répertoire de projet portera le même nom que votre fichier de projet. Par conséquent, vous devriez pouvoir employer:

$(MSBuildProjectName) 
Questions connexes