获取执行MSBuild的帐户的用户ID
我需要记录构建执行时所使用的域用户ID。我尝试点击WindowsIdentity.GetCurrent()。名称如下所示:获取执行MSBuild的帐户的用户ID,msbuild,Msbuild,我需要记录构建执行时所使用的域用户ID。我尝试点击WindowsIdentity.GetCurrent()。名称如下所示: <Target Name="Test123" BeforeTargets="BackupWebApp"> <PropertyGroup> <UserId>$([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)</UserId>
<Target Name="Test123" BeforeTargets="BackupWebApp">
<PropertyGroup>
<UserId>$([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)</UserId>
</PropertyGroup>
<Message Text="UserId : $(UserId)" Importance="high"/>
</Target>
$([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)
但我承认这个错误:
类型为“System.Security.Principal.WindowsIdentity”的函数“GetCurrent”不能作为MSBuild属性函数执行
是否有其他方法可以获取执行构建的人员或服务帐户的用户ID
我知道$(用户名)-但我使用的是NTLM,没有指定用户ID或密码,所以它似乎总是空的
谢谢-每当您想在MsBuild中运行某些代码,而它不能作为属性函数或类似函数使用时,请使用CodeTaskFactory。更多样板,但当然也更强大:
<UsingTask TaskName="GetUserName" TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll" >
<ParameterGroup>
<UserName ParameterType="System.String" Output="True"/>
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs">
UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
</Code>
</Task>
</UsingTask>
<Target Name="ShowUserName">
<GetUserName>
<Output PropertyName="UserName" TaskParameter="UserName" />
</GetUserName>
<Message Text="UserName = $(UserName)" />
</Target>
用户名=System.Security.Principal.WindowsIdentity.GetCurrent().Name;