微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在 c# 中使用 VS 快捷方式作为事件

如何解决是否可以在 c# 中使用 VS 快捷方式作为事件

希望创建一个 Hot Custom 热重载功能。我需要创建一个事件,他们应该能够收听 Save 命令。假设有两个项目 相同的解决方案。 解决方案: 项目A 班级考试 项目B 当我更改项目 A 类测试中的某些内容时,在使用 Ctrl+s 后,它应该触发项目 B 中的一个方法。我想听 File 将事件保存在项目 A 测试类中。有什么办法可以做到这一点。

我尝试了两种方案

尝试方法一:-

   public virtual event EnvDTE._dispDocumentEvents_DocumentSavedEventHandler DocumentSaved;
          

           public EnvDTE.DTE DTE { get; }
           private EnvDTE.Document document; 

          document = DTE.ActiveDocument;
          DocumentSaved?.Invoke(document);

这里我收到一个空引用错误在这种情况下,我不确定我是否传递了正确的 Document 来调用事件。

第二个是

   using (var filewatcher = new FileSystemWatcher(fullpath))
            {
                // filewatcher.IncludeSubdirectories = false;
                filewatcher.InternalBufferSize = 32768;
                filewatcher.Filter = "*.cs";
                filewatcher.NotifyFilter = NotifyFilters.LastWrite;
                filewatcher.EnableRaisingEvents = true;
                filewatcher.Changed += FileChanged;
             
                Console.ReadLine();
            }

        private  void FileChanged(object sender,FileSystemEventArgs e)
    {

        Console.WriteLine($"File Changed:{e.Name}-path{e.FullPath}");
    }

通过这种方式,如果该文件在 Visual Studio 外发生更改,我就能够收听保存命令。但是当试图观察 Vs FileSystemWatcher 内部的变化时,无法捕捉到文件修改

解决方法

您可以像这样订阅 DocumentSaved 事件:

events = DTE.Events;
documentEvents = events.DocumentEvents;
documentEvents.DocumentSaved += OnDocumentSaved;

OnDocumentSaved 是您的处理程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?