我正在研究Visual Studio的Roslyn插件。我正在尝试订阅文件重命名后将引发的事件。我正在使用Workspace.WorkspaceChanged,但不会引发DocumentRemoved。
这是我获得工作空间的方式:
SELECT DISTINCTROW tblToDo.ID, tblToDo.FROM tblToDo
LEFT JOIN tblToDoLabels ON tblToDo.ID = tblToDoLabels.ToDo
WHERE tblToDoLabels.Label In (3,20)
GROUP BY tblToDo.ID, tblToDo.ToDo
HAVING Count(tblToDoLabels.ToDo)=2;
答案 0 :(得分:2)
这已经两年了,我做了一些事情。我曾经写过一个VS插件,可以在解决方案中搜索文件。如果我记得的话,它也可以使用重命名(不幸的是我无法检查,因为它是针对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状态并将结果通过管道传递到插件逻辑的最简单方法。
我希望我能有所帮助或至少向您指出正确的方向。