在TeamCity代理上运行Azure Compute Emulator

时间:2014-10-31 05:36:23

标签: azure teamcity xunit

我在TeamCity代理上运行计算模拟器时遇到问题,作为使用xunit进行集成测试的CI过程的一部分。 我在执行Xunit测试时使用以下代码启动模拟器并部署我的实例。

    ExecuteCsrunWith(serviceDirectory + " " + configurationFile);

    private ProcessExecutionResult ExecuteCsrunWith(string argument)
    {
        var result = new ProcessExecutionResult();
        using (var process = new Process())
        {
            process.StartInfo = new ProcessStartInfo(PathToCsrun, argument)
            {
                UseShellExecute = false,
                RedirectStandardOutput = true,
                RedirectStandardError = true
            };
            process.Start();
            result.Output = process.StandardOutput.ReadToEnd();
            result.Error = process.StandardError.ReadToEnd();
            process.WaitForExit();
           Log(result.Output);
           Log(result.Error);
        }
        return result;
    }

测试无效,我在事件日志中出现此错误:

  

应用程序:csmonitor.exe   框架版本:v4.0.30319   描述:由于未处理的异常,进程终止。   异常信息:System.InvalidOperationException   堆:      在System.Windows.Forms.MessageBox.ShowCore(System.Windows.Forms.IWin32Window,System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon,System.Windows.Forms.MessageBoxDefaultButton ,System.Windows.Forms.MessageBoxOptions,Boolean)      在System.Windows.Forms.MessageBox.Show(System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)      在Microsoft.ServiceHosting.Tools.CloudServicesMonitor.Program.Main(System.String [])

其次是:

  

错误应用程序名称:csmonitor.exe,版本:2.4.6489.1,时间戳:0x53bdc3cc   错误模块名称:KERNELBASE.dll,版本:6.2.9200.16864,时间戳:0x531d34d8   异常代码:0xe0434352   故障偏移:0x0000000000047b8c   错误进程id:0xe98   故障应用程序启动时间:0x01cff4c9c18a8431   错误应用程序路径:C:\ Program Files \ Microsoft SDKs \ Azure \ Emulator \ csmonitor.exe   错误模块路径:C:\ Windows \ system32 \ KERNELBASE.dll   报告编号:2321e30b-60bd-11e4-9406-00155dfd9db8   错误包全名:   错误的包相关应用程序ID:

我需要使用 UseShellExecute = false ,因为我需要重定向并读取输出。

1 个答案:

答案 0 :(得分:0)

问题是:Teamcity Agent作为(本地系统)帐户运行。 当csrun.exe进程开始使用(本地系统)帐户时,似乎是计算模拟器中的问题。

修复:我更改了Teamcity Agent(Windows服务)以开始使用自定义(构建主服务器)帐户,所有内容现在都按预期工作。