如何将文件作为其他用户从msbuild复制?

Grz*_*nio 4 .net c# msbuild

我试图将文件复制到远程服务器,我运行我的构建服务器的帐户虽然没有权限.如何使用不同的凭据进行操作?

And*_*y K 11

这是最好创建一个使用CallTarget任务的迅速扩大,冒领乌韦·凯姆,就像这样:

public class Impersonate : CallTarget
{
    public string Domain { get; set; }

    [Required]
    public string UserName { get; set; }

    [Required]
    public string Password { get; set; }

    public override bool Execute()
    {
        using (new Impersonator(this.UserName, this.Domain, this.Password))
        {
            return base.Execute();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后呼叫将如下所示:

<Target Name="DoSms">
    <....>
</Target>

<Target Name="Impersonate">
    <Impersonate Targets="DoSms" UserName="username" Password="password" Domain="domain"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

  • 是的,我做了,实际上这个代码现在可以在我们的构建服务器上运行.您描述的问题是由特定的MSBuild引起的:$(USERNAME)实际上是环境变量,它们在项目启动时加载到属性中一次.因此它将始终显示用户启动项目的用户名.如果你想看到它以这种方式工作,你可以创建打印当前线程用户名的原始任务,然后调用它.由于你已经将项目与任务链接到项目文件,它不会是一个大问题;) (2认同)

zvo*_*kov 5

尝试使用Exec任务执行运行xcopy.exe的RunAs.exe