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

Fix race condition in SolutionExplorer_InProc.OpenFile

This change updates the file open implementation use VsShellUtilities.OpenDocument.
DTE plus waiting for the active window title alone proved insufficient, where some
tests were incorrectly operating on the previous active document.

Fixes #19191
Fixes #26037
上级 f56d67a6
......@@ -19,7 +19,7 @@ public CSharpWinForms(VisualStudioInstanceFactory instanceFactory)
{
}
[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/19191"), Trait(Traits.Feature, Traits.Features.WinForms)]
[WpfFact, Trait(Traits.Feature, Traits.Features.WinForms)]
public void AddControl()
{
var project = new ProjectUtils.Project(ProjectName);
......@@ -32,7 +32,7 @@ public void AddControl()
Assert.Contains(@"private System.Windows.Forms.Button SomeButton;", actualText);
}
[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/19191"), Trait(Traits.Feature, Traits.Features.WinForms)]
[WpfFact, Trait(Traits.Feature, Traits.Features.WinForms)]
public void ChangeControlProperty()
{
var project = new ProjectUtils.Project(ProjectName);
......@@ -45,7 +45,7 @@ public void ChangeControlProperty()
Assert.Contains(@"this.SomeButton.Text = ""NewButtonText""", actualText);
}
[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/19191"), Trait(Traits.Feature, Traits.Features.WinForms)]
[WpfFact, Trait(Traits.Feature, Traits.Features.WinForms)]
public void ChangeControlPropertyInCode()
{
var project = new ProjectUtils.Project(ProjectName);
......@@ -72,7 +72,7 @@ public void ChangeControlPropertyInCode()
Assert.Equal(expectedPropertyValue, actualPropertyValue);
}
[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/19191"), Trait(Traits.Feature, Traits.Features.WinForms)]
[WpfFact, Trait(Traits.Feature, Traits.Features.WinForms)]
public void AddClickHandler()
{
var project = new ProjectUtils.Project(ProjectName);
......
......@@ -49,7 +49,7 @@ End Sub
VisualStudio.Editor.Verify.CompletionItemDoNotExist("ToString");
}
[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/19191"), Trait(Traits.Feature, Traits.Features.WinForms)]
[WpfFact, Trait(Traits.Feature, Traits.Features.WinForms)]
public void AddControl()
{
var project = new ProjectUtils.Project(ProjectName);
......@@ -62,7 +62,7 @@ public void AddControl()
Assert.Contains(@"Friend WithEvents SomeButton As Button", actualText);
}
[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/19191"), Trait(Traits.Feature, Traits.Features.WinForms)]
[WpfFact, Trait(Traits.Feature, Traits.Features.WinForms)]
public void ChangeControlProperty()
{
var project = new ProjectUtils.Project(ProjectName);
......@@ -75,7 +75,7 @@ public void ChangeControlProperty()
Assert.Contains(@"Me.SomeButton.Text = ""NewButtonText""", actualText);
}
[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/19191"), Trait(Traits.Feature, Traits.Features.WinForms)]
[WpfFact, Trait(Traits.Feature, Traits.Features.WinForms)]
public void ChangeControlPropertyInCode()
{
var project = new ProjectUtils.Project(ProjectName);
......@@ -102,7 +102,7 @@ public void ChangeControlPropertyInCode()
Assert.Equal(expectedPropertyValue, actualPropertyValue);
}
[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/19191"), Trait(Traits.Feature, Traits.Features.WinForms)]
[WpfFact, Trait(Traits.Feature, Traits.Features.WinForms)]
public void AddClickHandler()
{
var project = new ProjectUtils.Project(ProjectName);
......
......@@ -10,6 +10,7 @@
using EnvDTE80;
using Microsoft.CodeAnalysis;
using Microsoft.VisualStudio.ProjectSystem.Properties;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.VisualStudio.Text.Editor;
using Microsoft.VisualStudio.TextManager.Interop;
......@@ -722,14 +723,7 @@ public void OpenFileWithDesigner(string projectName, string relativeFilePath)
public void OpenFile(string projectName, string relativeFilePath)
{
var filePath = GetAbsolutePathForProjectRelativeFilePath(projectName, relativeFilePath);
ExecuteCommand(WellKnownCommandNames.File_OpenFile, filePath);
var dte = GetDTE();
while (!dte.ActiveWindow.Caption.Contains(Path.GetFileName(filePath)))
{
Thread.Yield();
}
VsShellUtilities.OpenDocument(ServiceProvider.GlobalProvider, filePath, VSConstants.LOGVIEWID.Code_guid, out _, out _, out _);
}
public void CloseFile(string projectName, string relativeFilePath, bool saveFile)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册