ReSharper - Visual Studio中非活动文件的文档保存事件

问题描述 投票:0回答:1

我已经为Visual Studio设置了自己的源代码控制插件。

它已在visual studio中注册,可以从Source Control插件列表中选择。

我在使用Visual Studio中修改的文件时没有遇到任何问题,因为我在保存之前用来捕获事件:IVsRunningDocTableEvents3

如果文件未在Visual Studio中作为活动文档加载,我在检测它即将被编辑时遇到问题,因此我可以从源代码管理中检查它。

我尝试过使用ReSharper事件 - 这里建议使用DocumentManagerOperations:

https://resharper-support.jetbrains.com/hc/en-us/community/posts/205991489-Document-Saved-Event

我在检测是否需要检出这些类型的文件时遇到问题:

  • .DotSettings。 - 保存ReSharper选项设置时
  • csproj - 使用ReSharper添加Nuget包时。
  • .cs在编辑未使用ReSharper在VS中打开的文件时,即修复项目中的命名。

是否有一个在编辑文件但未加载时触发的事件?

谢谢!

resharper vsix
1个回答
0
投票

我使用了界面:IVsQueryEditQuerySave2

更多信息:https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.shell.interop.ivsqueryeditquerysave2?view=visualstudiosdk-2017

并利用:

public int QueryEditFiles(uint rgfQueryEdit, int cFiles, string[] rgpszMkDocuments, uint[] rgrgf,
        VSQEQS_FILE_ATTRIBUTE_DATA[] rgFileInfo, out uint pfEditVerdict, out uint prgfMoreInfo)

和:

public int QuerySaveFiles(uint rgfQuerySave, int cFiles, string[] rgpszMkDocuments, uint[] rgrgf,
        VSQEQS_FILE_ATTRIBUTE_DATA[] rgFileInfo, out uint pdwQsResult)

这样的事情:

if (rgfQueryEdit != (uint)tagVSQueryEditFlags.QEF_ReportOnly)
        {
            if (rgpszMkDocuments != null)
            {
                foreach (var doc in rgpszMkDocuments)
                {
                    //Do Something

希望能帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.