diff --git a/eng/Versions.props b/eng/Versions.props
index d023176a10f7ebcec8f47e0bbe8165fbc7c8cabb..6f17e8cc7390b93f0c2ae7d3c1ad891026706b65 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -117,7 +117,7 @@
15.7.7
1.15.103
16.0.28226-pre
- 16.0.28226-pre
+ 16.1.28917.181
15.7.27703
15.0.25415
15.0.25415
diff --git a/src/VisualStudio/IntegrationTest/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs b/src/VisualStudio/IntegrationTest/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs
index 5d7622af1f3af753a7bea2c3658f075a50eec5c3..c41e3e35defb86641c517a37484fedd76f979eeb 100644
--- a/src/VisualStudio/IntegrationTest/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs
+++ b/src/VisualStudio/IntegrationTest/TestUtilities/InProcess/VisualStudioWorkspace_InProc.cs
@@ -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().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());
+ var stageStatus = operationProgressStatus.GetStageStatus(CommonOperationProgressStageIds.Intellisense);
+ stageStatus.WaitForCompletionAsync().Wait(timeout);
+ }
private static void LoadRoslynPackage()
{
diff --git a/src/VisualStudio/IntegrationTest/TestUtilities/OutOfProcess/Editor_OutOfProc.Verifier.cs b/src/VisualStudio/IntegrationTest/TestUtilities/OutOfProcess/Editor_OutOfProc.Verifier.cs
index 10d73b8993db84763770dbe52f0dcee8d76879e2..1aae619b31ef71a406364e06a5bb36c392f36c07 100644
--- a/src/VisualStudio/IntegrationTest/TestUtilities/OutOfProcess/Editor_OutOfProc.Verifier.cs
+++ b/src/VisualStudio/IntegrationTest/TestUtilities/OutOfProcess/Editor_OutOfProc.Verifier.cs
@@ -189,6 +189,7 @@ public void ErrorTags(params string[] expectedTags)
{
_instance.Workspace.WaitForAllAsyncOperations(
Helper.HangMitigatingTimeout,
+ FeatureAttribute.Workspace,
FeatureAttribute.SolutionCrawler,
FeatureAttribute.DiagnosticService,
FeatureAttribute.ErrorSquiggles);