2012-11-06 36 views
1

试图通过使用PowerShell脚本来自动执行早晨更新多个颠覆工作副本的仪式。该svn update工作正常,但它很好挂钩到SvnUpdateResult显示更改或任何冲突。如何连接PowerShell中的SharpSvn.SvnUpdateResult

我已经尽可能为更新结果指定输出参数,但不知道如何克服模糊的重载异常?我已经指定的参数类型:

try { 
    Add-Type -Path "C:\Program Files\SharpSVN\SharpSvn.dll" 
} 
catch [System.BadImageFormatException] { 
    Write-Host "LFMF: You're probably using 32bit SharpSVN.dll in 64bit powershell ;-)" 
} 
$paths = @("Project-Trunk", "Project-Branch"); 
$currentPath = (Get-Location).Path 
$svnClient = New-Object SharpSvn.SvnClient 
foreach ($path in $paths) { 
    Write-Host "Updating" $path 
    $svnLocalPath = Join-Path $currentPath $path; 
    # Throws: Multiple ambiguous overloads found for "Update" and the argument count: "2". 
    $svnClient.Update([string]$svnLocalPath, [ref][SharpSvn.SvnUpdateResult]$result) 
} 

我明白我可以只使用SVN客户端或tortoiseproc,但我想更多地了解PowerShell的。

回答

1

结果参数是一个C#出参数,而不是参数参数。 (在IL级别上,输出参数是参考参数,但我猜想powershell会以不同的方式处理它)

如果输出参数是一个问题,那么也可以从通知处理程序获取相同的信息。

+0

感谢伯特,我会看看通知处理程序。你是对的,powershell使用'[ref]'处理'out',参见:http://stackoverflow.com/q/5276700/44540 – si618