C# Roslyn:WorkspaceChangeKind.DocumentRemoved从未引发
我正在开发Roslyn到Visual Studio的插件。我正在尝试订阅文件重命名后将引发的事件。我正在使用Workspace.WorkspaceChanged,但它不会引发文档删除C# Roslyn:WorkspaceChangeKind.DocumentRemoved从未引发,c#,roslyn,visual-studio-extensions,vsix,roslyn-code-analysis,C#,Roslyn,Visual Studio Extensions,Vsix,Roslyn Code Analysis,我正在开发Roslyn到Visual Studio的插件。我正在尝试订阅文件重命名后将引发的事件。我正在使用Workspace.WorkspaceChanged,但它不会引发文档删除 重命名项后不应该引发WorkspaceChanged(Kind=DocumentRemoved)吗 是否有其他方法获取有关解决方案项重命名的通知?我试图订阅DTE活动,但也没有成功 这是我获得工作区的方式: var componentModel = (IComponentModel)serviceProvider.
var componentModel = (IComponentModel)serviceProvider.GetService(typeof(SComponentModel));
_myWorkspace = componentModel.GetService<VisualStudioWorkspace>();
var componentModel=(icomonentmodel)serviceProvider.GetService(typeof(scocomponentmodel));
_myWorkspace=componentModel.GetService();
这几年来我一直在做一些事情。我曾经写过一个VS插件,在解决方案中搜索文件。如果我记得的话,rename也可以使用(不幸的是,我无法检查,因为它是针对VS 2015的)。我是用DTE事件做的,比。我创建了一个DteEventHandler并将其添加到DocumentEvents.DocumentSaved函数中
dte = Package.GetGlobalService(typeof(DTE)) as DTE2;
events = dte.Events;
docEv = events.DocumentEvents;
docEv.DocumentSaved += ScanDocumentForFunction;
另一种方法可能是浏览解决方案文件。solutionfile包含所有csproj文件,您可以从中获取所有文件
dte = FillIndexListCommandPackage.GetGlobalService(typeof(DTE)) as DTE2;
var solutionnamearr = dte.Solution.FullName.Split('\\');
...
如果您使用git,那么在命令窗口中调用git状态并将结果传递到插件逻辑可能是最简单的方法
我希望我能为你提供一些帮助,或者至少为你指明了正确的方向。几年来我一直在做这件事。我曾经写过一个VS插件,在解决方案中搜索文件。如果我记得的话,rename也可以使用(不幸的是,我无法检查,因为它是针对VS 2015的)。我是用DTE事件做的,比。我创建了一个DteEventHandler并将其添加到DocumentEvents.DocumentSaved函数中
dte = Package.GetGlobalService(typeof(DTE)) as DTE2;
events = dte.Events;
docEv = events.DocumentEvents;
docEv.DocumentSaved += ScanDocumentForFunction;
另一种方法可能是浏览解决方案文件。solutionfile包含所有csproj文件,您可以从中获取所有文件
dte = FillIndexListCommandPackage.GetGlobalService(typeof(DTE)) as DTE2;
var solutionnamearr = dte.Solution.FullName.Split('\\');
...
如果您使用git,那么在命令窗口中调用git状态并将结果传递到插件逻辑可能是最简单的方法
我希望我能为您提供一些帮助,或者至少为您指明了正确的方向。DocumentInfoChanged呢?也许你可以从这两个问题中得到一些帮助:和。DocumentInfoChanged没有被提出。@Piotr有什么被提出的吗?如果您只打印所有事件的
WorkspaceChangeEventArgs.Kind
,那么重命名文档时您会得到什么吗?@JoshVarty我只得到:1。项目已更改-未包含文档Id 2。DocumentChanged by old and new solution指向新文档。DocumentInfoChanged呢?也许你可以从这两个问题中得到一些帮助:和。DocumentInfoChanged没有被提出。@Piotr有什么被提出的吗?如果您只打印所有事件的WorkspaceChangeEventArgs.Kind
,那么重命名文档时您会得到什么吗?@JoshVarty我只得到:1。项目已更改-未包含文档Id 2。DocumentChanged by old and new solution指向新文档。文档保存时会引发DocumentSaved,而不是重命名?文档保存时会引发DocumentSaved,而不是重命名?