在MsBuild中声明动态配置文件路径

在MsBuild中声明动态配置文件路径,msbuild,msbuild-task,Msbuild,Msbuild Task,目前,我正在尝试将文件复制到用户配置文件中的某个位置,但在声明动态配置文件名称时遇到问题,例如: <Target Name="CopyScript"> <MsBuild Projects="JsProject.csproj" /> <Copy SourceFiles="$(ProjectDir)\myScript.js" DestinationFolder="$(systemdrive)\Documents and Settings\$(userPr

目前,我正在尝试将文件复制到用户配置文件中的某个位置,但在声明动态配置文件名称时遇到问题,例如:

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

声明动态用户配置文件名的语法是什么?我是否必须从某处获取配置文件名,或者是否有其他MsBuild任务可以为我找到它


谢谢。

您应该能够通过HOMEDRIVE和HOMEPATH env变量获得此信息。例如:

<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>

$(HOMEDRIVE)$(HOMEPATH)

当您执行演示目标时,您应该获得当前用户主目录的路径。

@Sayed:我使用了您的示例,它返回了“C:\Documents and Settings\Administrator”。如果我只想让它返回“Administrator”,我是否只需要使用$(username)?在这种情况下,您将使用env变量username,因此$(username)您还可以使用
$(USERPROFILE)
,这将消除连接
HOMEDRIVE
HOMEPATH
的需要。