C# TFS单元测试在开发人员计算机上通过,但在生成计算机上失败

C# TFS单元测试在开发人员计算机上通过,但在生成计算机上失败,c#,asp.net,tfs,tdd,build-automation,C#,Asp.net,Tfs,Tdd,Build Automation,我有一些单元测试在开发人员机器上通过,但在TFS构建机器上失败。这些测试失败的原因各不相同。我对制造这台机器的权限非常有限。但是我可以查看drop文件夹,看看部署了哪些DLL文件等等 我还看到pdb文件部署在构建机器上 是否有任何方法可以调试和逐步检查代码,了解其在生成计算机上唯一失败的原因?尝试使用批处理文件运行msbuild,然后您可以在控制台中查看整个过程的进度。下面是一些ya的入门代码: ECHO Starting Build :: Change to MSBuild Director

我有一些单元测试在开发人员机器上通过,但在TFS构建机器上失败。这些测试失败的原因各不相同。我对制造这台机器的权限非常有限。但是我可以查看drop文件夹,看看部署了哪些DLL文件等等

我还看到pdb文件部署在构建机器上


是否有任何方法可以调试和逐步检查代码,了解其在生成计算机上唯一失败的原因?

尝试使用批处理文件运行msbuild,然后您可以在控制台中查看整个过程的进度。下面是一些ya的入门代码:

ECHO Starting Build 
:: Change to MSBuild Directory
CD C:\Windows\Microsoft.NET\Framework\v4.0.30319
PAUSE
:: READY TO RUN?
ECHO READY TO RUN...
MSBuild.exe "C:\Users\PATH TO YOUR PROJECT HERE\.csproj" /t:MsDeployPublish /p:MsDeployServiceUrl=https://DOMAINHERE.com:8172/msdeploy.axd;DeployIisAppPath="IIS SITE NAME HERE";username=USERNAME;password=PASSWORD;AllowUntrustedCertificate=True;Configuration=Release
:: Outputs tons of network information into the command prompt
ECHO All done.
PAUSE 
无论我在哪里用你的设置替换大写。。。。保存.bat文件,双击,您可以在控制台中跟踪所有内容

有没有什么方法可以调试代码并逐步了解它的唯一原因 构建机器失败

是的,您可以附加到生成计算机上的进程。。。但是您必须登录到构建机器,并在服务器上运行VS实例,并且具有附加到线程的管理员权限

如果管理员愿意打开服务器进行远程调试,您也可以这样做。但是,由于这会带来更多的安全风险,而不仅仅是让您访问服务器,因此此选项也不太可能可行


所以对你来说,不。你需要看看失败是什么,并找出是什么导致了这种情况的发生。然后您可以尝试修复该问题。

测试结果文件.trx显示了什么?它应该有一些信息,可以帮助?但更多的诊断代码到位,并检查日志。测试输出(解决方案目录中的“测试结果”文件夹)应提供堆栈跟踪。此外,如果您的测试没有提供有用的错误,那么您可能会遇到严重的故障,或者您的测试/代码编写得不好(或者两者都不好)。您可能会被否决,因为这不是一个问题。调查远程调试。请投反对票。这是一个很好的合法任务。我不会去远程调试,因为它有点麻烦。单元测试应该在您已经知道的任何pc上运行。因此,我会调整nunit/mstest输出,逐一检查失败的测试。他们总是在一些显而易见的事情上失败。也许你可以发布其中一个测试?PS给了你一个+1,让这个简单的考虑将下面的代码添加到你的单元测试:Stask.MyTycasy.Cu调器.RunCh()中;然后RDP进入服务器,它会提示您进行调试!这比尝试设置远程调试或将其正确连接到要容易得多QAgent@ProVega-我不确定这是否可行,但假设可行,我会将其扩展为一个答案,并包括一个关于其工作原理的小演练。我将包括您在服务器上需要的权限。问题是单元测试失败,而不是构建解决方案。使用MSTEST.exe而不是MSBUILD.exe的示例更容易接受