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