2010-01-13 3 views
2

В настоящее время я пытаюсь скопировать файл в папку внутри профиля пользователя, но попал в проблему с объявляя динамическое имя профиля, например:Декларирование путь динамического профиля в MSBuild

<Target Name="CopyScript"> 
    <MsBuild Projects="JsProject.csproj" /> 
    <Copy SourceFiles="$(ProjectDir)\myScript.js" DestinationFolder="$(systemdrive)\Documents and Settings\$(userProfileName)" /> 
</Target> 

Что такое синтаксис объявление динамического имени профиля пользователя? Должен ли я получить имя профиля где-нибудь, или есть еще одна задача MsBuild, которая найдет это для меня?

Спасибо.

ответ

5

Вы должны иметь возможность получить это с помощью переменных env и hOMEPATH. Например:

<Project ToolsVersion="3.5" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <PropertyGroup> 
    <UserDir>$(HOMEDRIVE)$(HOMEPATH)</UserDir> 
</PropertyGroup> 

    <Target Name="Demo"> 
<Message Text="UserDir : $(UserDir)" Importance="High" /> 
    </Target> 

</Project> 

Когда вы выполняете цель Demo, вы должны получить путь к домашнему каталогу текущих пользователей.

+0

@ Sayed: Я использовал ваш пример, и он вернул «C: \ Documents and Settings \ Администратор». Если я только хочу, чтобы он вернул «Администратор», я просто использую что-то вроде $ (username)? – BeraCim

+0

В этом случае вы должны использовать переменную env USERNAME, чтобы $ (USERNAME) –

+1

вы также могли использовать '$ (USERPROFILE)', что устранило бы необходимость конкатенации 'HOMEDRIVE' и' HOMEPATH'. – bsara