MSBuild 运行 从 PowerShell 脚本调用缓慢(Visual Studio 2019)
MSBuild Running Slow Called from PowerShell Script (Visual Studio 2019)
我最近设置了一个新的 TFS 构建服务器,我正在调查构建过程中的一些延长时间段。其中一个时期是重新编译我们的 Selenium 测试 .dll。首先,包通过 MSBuild 恢复,这很好。然后,脚本挂起大约 10 分钟,而 .dll 实际编译完成。
这在我们的 Visual Studio 2017 年构建服务器上运行良好(我相信编译需要几秒钟)但在 2019 年似乎有问题。
这是代码。我是否缺少一个或两个 MSBuild 参数?
$msbuild = """C:\Program Files (x86)\Microsoft Visual Studio19\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.0\Web\MyAppWeb\MyCo.SeleniumUITest\MyCo.SeleniumUITest.sln -DisableParallelProcessing
Write-Host "********** Selenium Packages Restored **********"
# Changes for new MSBuild....
$projfile = "$source\Development.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 是正确的位置,因为我希望它只是一个参数或调用调整。
MSBuild Running Slow Called from PowerShell Script (Visual Studio 2019)
状态:
(这个运行效率的问题很难准确回答,问题产生的原因有很多,大部分都和环境有关,让我们难以复现所以我们不能给出这个问题的直接正确答案,我们只能给你一些故障排除。为了避免在往返评论中失去联系,我post那些故障排除作为答案而不是评论。 )
首先,使用Azure devops服务的脚本,而不是TFS Build Server 2019,检查Azure devops服务是否仍然出现此问题,如果Azure devops服务也出现此问题,则表示此问题应该与 TFS 无关,与 MSBuild/environment/powershell 脚本更相关。
其次,使用内置任务 nuget restore 和 msbuild 任务代替 powershell 脚本,检查您是否有这个问题,如果也有这个问题,这个问题应该与脚本无关。如果不是,这个问题应该与脚本有关。我们需要检查此脚本是否需要更新,因为我们使用不同的 TFS 服务器。
三、检查Visual Studio2017 Build Server和Visual Studio2019 Build Server中的powershell版本,确保使用相同的版本。
如果还是找不到原因,可以开启调试日志,把挂起的日志分享给我们,让我们得到更多的信息。
希望对您有所帮助。
我将 MSBuild 脚本任务移出到构建定义任务以消除缓慢。当通过 PowerShell 脚本调用 MSBuild 时,我没有确定挂起的原因。
后来尝试通过 .proj 文件发布的问题在我注意到我使用的是 Visual Build 任务而不是更合适的 MSBuild 任务时得到了解决。
使用MSBuild步骤时需要注意的一件事。如果指向 .proj 文件并针对 Any CPU 进行编译,请在任务中将其设置为 AnyCPU,中间没有 space。
我最近设置了一个新的 TFS 构建服务器,我正在调查构建过程中的一些延长时间段。其中一个时期是重新编译我们的 Selenium 测试 .dll。首先,包通过 MSBuild 恢复,这很好。然后,脚本挂起大约 10 分钟,而 .dll 实际编译完成。
这在我们的 Visual Studio 2017 年构建服务器上运行良好(我相信编译需要几秒钟)但在 2019 年似乎有问题。
这是代码。我是否缺少一个或两个 MSBuild 参数?
$msbuild = """C:\Program Files (x86)\Microsoft Visual Studio19\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.0\Web\MyAppWeb\MyCo.SeleniumUITest\MyCo.SeleniumUITest.sln -DisableParallelProcessing
Write-Host "********** Selenium Packages Restored **********"
# Changes for new MSBuild....
$projfile = "$source\Development.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 是正确的位置,因为我希望它只是一个参数或调用调整。
MSBuild Running Slow Called from PowerShell Script (Visual Studio 2019)
状态:
(这个运行效率的问题很难准确回答,问题产生的原因有很多,大部分都和环境有关,让我们难以复现所以我们不能给出这个问题的直接正确答案,我们只能给你一些故障排除。为了避免在往返评论中失去联系,我post那些故障排除作为答案而不是评论。 )
首先,使用Azure devops服务的脚本,而不是TFS Build Server 2019,检查Azure devops服务是否仍然出现此问题,如果Azure devops服务也出现此问题,则表示此问题应该与 TFS 无关,与 MSBuild/environment/powershell 脚本更相关。
其次,使用内置任务 nuget restore 和 msbuild 任务代替 powershell 脚本,检查您是否有这个问题,如果也有这个问题,这个问题应该与脚本无关。如果不是,这个问题应该与脚本有关。我们需要检查此脚本是否需要更新,因为我们使用不同的 TFS 服务器。
三、检查Visual Studio2017 Build Server和Visual Studio2019 Build Server中的powershell版本,确保使用相同的版本。
如果还是找不到原因,可以开启调试日志,把挂起的日志分享给我们,让我们得到更多的信息。
希望对您有所帮助。
我将 MSBuild 脚本任务移出到构建定义任务以消除缓慢。当通过 PowerShell 脚本调用 MSBuild 时,我没有确定挂起的原因。
后来尝试通过 .proj 文件发布的问题在我注意到我使用的是 Visual Build 任务而不是更合适的 MSBuild 任务时得到了解决。
使用MSBuild步骤时需要注意的一件事。如果指向 .proj 文件并针对 Any CPU 进行编译,请在任务中将其设置为 AnyCPU,中间没有 space。