从PowerShell脚本调用运行缓慢的MSBuild(Visual Studio 2019)

从PowerShell脚本调用运行缓慢的MSBuild(Visual Studio 2019),powershell,tfs,msbuild,Powershell,Tfs,Msbuild,我最近设置了一个新的TFS构建服务器,我正在研究构建过程中的一些延长时间段。其中一个阶段是重新编译Selenium test.dll。首先,可以通过MSBuild恢复包。然后,脚本将挂起约10分钟,而.dll实际上已编译 这在我们的Visual Studio 2017 Build服务器上运行良好(我相信编译需要几秒钟),但在2019年似乎有问题 这是密码。我是否缺少一个或两个MSBuild参数 $msbuild = """C:\Program Files (x86)\Microsoft Visu

我最近设置了一个新的TFS构建服务器,我正在研究构建过程中的一些延长时间段。其中一个阶段是重新编译Selenium test.dll。首先,可以通过MSBuild恢复包。然后,脚本将挂起约10分钟,而.dll实际上已编译

这在我们的Visual Studio 2017 Build服务器上运行良好(我相信编译需要几秒钟),但在2019年似乎有问题

这是密码。我是否缺少一个或两个MSBuild参数

$msbuild = """C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe"""

# Rebuild the Test source .dll...
Write-Host "********** Running UI Tests **********"

# Restore Selenium packages...
Write-Host "********** Restoring Selenium Packages **********"
&"C:\Nuget.exe\Nuget.exe" restore  $source\Development\12.0\Web\MyAppWeb\MyCo.SeleniumUITest\MyCo.SeleniumUITest.sln -DisableParallelProcessing
Write-Host "********** Selenium Packages Restored **********"

# Changes for new MSBuild....
$projfile = "$source\Development\12.0\Web\MyAppWeb\MyCo.SeleniumUITest\MyCo.SeleniumUITest.sln"

try
{
    start-process $msbuild -ArgumentList @($projfile,'/t:Rebuild','/p:configuration=Release') -Wait
    Write-Host "********** Selenium .dll compiled successfully! **********"
}
catch
{
    Write-Host $_.Exception.Message
    exit 1
}
感谢您的帮助!如果这应该在PowerShell论坛上发布,请告诉我。我认为TFS/MSBuild应该是正确的位置,因为我希望它只是一个参数或调用调整

从PowerShell脚本调用运行缓慢的MSBuild(Visual Studio 2019)

状态:

(这个运营效率的问题很难给出一个准确的答案。这个问题有很多原因,其中大部分与环境有关,使我们很难复制它。因此我们无法对这个问题给出直接的正确答案,我们只能给您一些疑难解答。为了避免失去c在往返评论中,我将这些疑难解答作为答案而不是评论。)

首先,将脚本与Azure devops服务而不是TFS构建服务器2019一起使用,以检查此问题是否仍然发生在Azure devops服务上,如果此问题也发生在Azure devops服务上,这意味着此问题不应与TFS相关,而应与MSBuild/environment/powershell脚本相关

其次,使用内置任务nuget restore和msbuild任务(而不是powershell脚本)检查是否存在此问题,如果也存在此问题,则此问题不应与脚本相关。如果没有,则此问题应与脚本相关。我们需要检查此脚本是否需要更新,因为我们使用了不同的TFS服务器

第三,检查Visual Studio 2017构建服务器和Visual Studio 2019构建服务器中的powershell版本,确保它们使用相同的版本

如果仍然找不到原因,可以启用调试日志,并将有关挂起的日志共享给我们,以便我们可以获得更多信息


希望这能有所帮助。

我将MSBuild脚本化任务移出到生成定义任务中以消除慢度。在通过PowerShell脚本调用MSBuild时,我没有确定挂起的原因

当我注意到我使用的是可视化构建任务而不是更合适的MSBuild任务时,尝试通过.proj文件发布的后一个问题得到了解决


使用MSBuild步骤时需要注意的一件事。如果指向.proj文件并为任何CPU编译,请在任务中将其设置为AnyCPU,中间没有空格。

我将尝试所有这些内容,但我只是尝试在PowerShell ISE中运行生成后脚本的这一部分,似乎.dll的生成速度相当快,但过程请参见ms挂起,因为PowerShell环境在相当长的一段时间内不会返回提示。将这些内容切换到实际任务而不是脚本绝对是一个好主意。PowerShell版本被排除在外,因为两个生成服务器上的版本相同。@Giorgosmyriantous,请检查我的状态。我无法将所有内容添加为注释,长度限制!因此,发生了一件更奇怪的事情。在我的生成后脚本中,我也通过MSBuild发布了一个项目。这很好而且很快。这首先发生在我的脚本中,然后是上面提到的重新编译test.dll问题。一旦我将测试dll从脚本移植到MSBuild任务中,发布大约需要10分钟与之相对的坚果"错误:未为项目“MyBo.WebApi.csproj”设置OutputPath属性。请检查以确保为此项目指定了配置和平台的有效组合。Configuration='Release'Platform='Any CPU'。您可能看到此消息,因为您试图在没有解决方案文件的情况下生成项目,并且没有spe指定了此项目不存在的非默认配置或平台。“我目前正在尝试将平台作为任何CPU(没有空间),因此不确定这是否是问题所在。