提交 d61a6352 编写于 作者: S Sam Harwell

Wait for project system before waiting for workspace

上级 ebefc05d
......@@ -117,7 +117,7 @@
<MicrosoftVisualStudioSDKAnalyzersVersion>15.7.7</MicrosoftVisualStudioSDKAnalyzersVersion>
<MicrosoftVisualStudioSetupConfigurationInteropVersion>1.15.103</MicrosoftVisualStudioSetupConfigurationInteropVersion>
<MicrosoftVisualStudioShell150Version>16.0.28226-pre</MicrosoftVisualStudioShell150Version>
<MicrosoftVisualStudioShellFrameworkVersion>16.0.28226-pre</MicrosoftVisualStudioShellFrameworkVersion>
<MicrosoftVisualStudioShellFrameworkVersion>16.1.28917.181</MicrosoftVisualStudioShellFrameworkVersion>
<MicrosoftVisualStudioShellDesignVersion>15.7.27703</MicrosoftVisualStudioShellDesignVersion>
<MicrosoftVisualStudioShellImmutable100Version>15.0.25415</MicrosoftVisualStudioShellImmutable100Version>
<MicrosoftVisualStudioShellImmutable110Version>15.0.25415</MicrosoftVisualStudioShellImmutable110Version>
......
......@@ -10,6 +10,7 @@
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.VisualStudio.LanguageServices;
using Microsoft.VisualStudio.OperationProgress;
using Microsoft.VisualStudio.Shell.Interop;
using Roslyn.Hosting.Diagnostics.Waiters;
......@@ -109,10 +110,31 @@ private static TestingOnly_WaitingService GetWaitingService()
=> GetComponentModel().DefaultExportProvider.GetExport<TestingOnly_WaitingService>().Value;
public void WaitForAsyncOperations(TimeSpan timeout, string featuresToWaitFor, bool waitForWorkspaceFirst = true)
=> GetWaitingService().WaitForAsyncOperations(timeout, featuresToWaitFor, waitForWorkspaceFirst);
{
if (waitForWorkspaceFirst || featuresToWaitFor == FeatureAttribute.Workspace)
{
WaitForProjectSystem(timeout);
}
GetWaitingService().WaitForAsyncOperations(timeout, featuresToWaitFor, waitForWorkspaceFirst);
}
public void WaitForAllAsyncOperations(TimeSpan timeout, params string[] featureNames)
=> GetWaitingService().WaitForAllAsyncOperations(timeout, featureNames);
{
if (featureNames.Contains(FeatureAttribute.Workspace))
{
WaitForProjectSystem(timeout);
}
GetWaitingService().WaitForAllAsyncOperations(timeout, featureNames);
}
private static void WaitForProjectSystem(TimeSpan timeout)
{
var operationProgressStatus = InvokeOnUIThread(_ => GetGlobalService<SVsOperationProgress, IVsOperationProgressStatusService>());
var stageStatus = operationProgressStatus.GetStageStatus(CommonOperationProgressStageIds.Intellisense);
stageStatus.WaitForCompletionAsync().Wait(timeout);
}
private static void LoadRoslynPackage()
{
......
......@@ -189,6 +189,7 @@ public void ErrorTags(params string[] expectedTags)
{
_instance.Workspace.WaitForAllAsyncOperations(
Helper.HangMitigatingTimeout,
FeatureAttribute.Workspace,
FeatureAttribute.SolutionCrawler,
FeatureAttribute.DiagnosticService,
FeatureAttribute.ErrorSquiggles);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册