使用cygwin sshd在MSBuild脚本中调用远程MSBuild脚本

时间:2013-11-02 14:04:11

标签: msbuild cygwin openssh

我正在尝试为部署和备份执行一些MSBuild自动化。我尝试了几个不同的远程执行平台(Powershell / WMI,PsExec和Cygwin),并且遇到了所有问题。

使用Powershell和PsExec,我认为问题是机器上使用的一些安全基准。我没有完全控制机器和域名。

我发现最稳定的情况是使用cygwin / openssh。但是当我在MSBuild中运行plink并尝试远程调用MSBuild时,msbuild挂起而没有告诉我错误。如果我从提示符直接运行plink,一切正常。

MSBuild脚本如下:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">   
    <PropertyGroup>
        <Plink>"c:\Program Files (x86)\PuTTY\plink.exe"</Plink>
        <UserName></UserName>
        <Password></Password>
        <HostName>localhost</HostName>
        <RemoteCommand2>/cygdrive/c/SandBox/remotemsbuild/echoalotoffiles.bat</RemoteCommand2>      
    </PropertyGroup>

    <Target Name="Build">       
        <Exec Command="$(Plink) -l $(UserName) -pw $(Password) -batch $(HostName) $(RemoteCommand2)" />
    </Target>

    <Target Name="EchoALotOfFiles">
        <ItemGroup>
            <SandBoxFiles Include="$(MSBuildProjectDirectory)\..\**\*.*" />
        </ItemGroup>
        <Message Text="@(SandBoxFiles)" />
    </Target>
 </Project>

当我运行第一个目标Build时,我遇到了问题(MSBuild挂起)

Microsoft (R) Build Engine version 4.0.30319.17929
[Microsoft .NET Framework, version 4.0.30319.17929]
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 02/11/2013 12:01:45.
Project "C:\SandBox\remotemsbuild\remotemsbuild.build" on node 1 (EchoALotOfF
iles target(s)).
EchoALotOfFiles:

如果我从命令行运行plink,一切正常。

任何猜测?

0 个答案:

没有答案