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

Renaming only fails for DTE renames in CPS projects

See #30599
上级 96199e52
......@@ -99,7 +99,7 @@ End Sub
Assert.Equal("Sub Program.M(p As Object) (+ 1 overload)", VisualStudio.Editor.GetQuickInfo());
}
[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/30599")]
[WpfFact]
public void RenamingOpenFiles()
{
var project = new ProjectUtils.Project(ProjectName);
......@@ -113,5 +113,20 @@ public void RenamingOpenFiles()
// ...and after.
Assert.Contains(ProjectName, VisualStudio.Editor.GetProjectNavBarItems());
}
[WpfFact]
public virtual void RenamingOpenFilesViaDTE()
{
var project = new ProjectUtils.Project(ProjectName);
VisualStudio.SolutionExplorer.AddFile(project, "BeforeRename.cs", open: true);
// Verify we are connected to the project before...
Assert.Contains(ProjectName, VisualStudio.Editor.GetProjectNavBarItems());
VisualStudio.SolutionExplorer.RenameFileViaDTE(project, "BeforeRename.cs", "AfterRename.cs");
// ...and after.
Assert.Contains(ProjectName, VisualStudio.Editor.GetProjectNavBarItems());
}
}
}
......@@ -59,5 +59,13 @@ public override void ProjectProperties()
VisualStudio.SolutionExplorer.RestoreNuGetPackages(project);
base.ProjectProperties();
}
[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/30599")]
[Trait(Traits.Feature, Traits.Features.Workspace)]
[Trait(Traits.Feature, Traits.Features.NetCore)]
public override void RenamingOpenFilesViaDTE()
{
base.RenamingOpenFilesViaDTE();
}
}
}
......@@ -132,6 +132,17 @@ public string[] GetAssemblyReferences(string projectName)
}
public void RenameFile(string projectName, string oldFileName, string newFileName)
{
var project = GetProject(projectName);
var projectDirectory = Path.GetDirectoryName(project.FullName);
VsShellUtilities.RenameDocument(
ServiceProvider.GlobalProvider,
Path.Combine(projectDirectory, oldFileName),
Path.Combine(projectDirectory, newFileName));
}
public void RenameFileViaDTE(string projectName, string oldFileName, string newFileName)
{
var projectItem = GetProjectItem(projectName, oldFileName);
......
......@@ -121,6 +121,13 @@ public void RenameFile(ProjectUtils.Project project, string oldFileName, string
_instance.Workspace.WaitForAsyncOperations(FeatureAttribute.Workspace);
}
public void RenameFileViaDTE(ProjectUtils.Project project, string oldFileName, string newFileName)
{
// Wireup to open files can happen asynchronously in the case we're being notified of changes on background threads.
_inProc.RenameFileViaDTE(project.Name, oldFileName, newFileName);
_instance.Workspace.WaitForAsyncOperations(FeatureAttribute.Workspace);
}
public void CloseFile(ProjectUtils.Project project, string fileName, bool saveFile)
=> _inProc.CloseFile(project.Name, fileName, saveFile);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册