1

展開とバックアップのために 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 を実行すると、すべて正常に動作します。

推測はありますか?

4

0 に答える 0