【问题标题】:File Watcher in VSPackageVSPackage 中的文件观察器
【发布时间】:2015-05-08 07:17:53
【问题描述】:

我是 Visual Studio 开发的新手,所以我希望我的问题不会太愚蠢 :-) 我尝试在我的 VSPackage 中建立一个 FileWatcher 来检测在当前解决方案中执行的任何更改。 为此,我找到了 FileWatcher 类,在我看来,它可以检测任何文件更改。 但是我的代码中的任何内容都必须是错误的,因为没有触发任何事件。 或许你能帮帮我?

我想看的解决方案在 D:\\Test 但输入具体路径没有帮助

class Watcher
{
    FileSystemWatcher watcher = new FileSystemWatcher();

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    public void StartWatching()
    {
        Debug.WriteLine("in watcher method");
        watcher.Path = @"D:\\"; 
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;

        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        watcher.EnableRaisingEvents = true;
    }

    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        Debug.WriteLine("Changes in folder:" + e.FullPath);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        Debug.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }

    private static void OnDeleted(object source, RenamedEventArgs e)
    {
        Debug.WriteLine("deleted");
    }

    private static void OnCreated(object source, RenamedEventArgs e)
    {
        Debug.WriteLine("created");
    }
}

在我调用的 VSPackage 的初始化方法中: (“in watcher method”显示在输出中,所以这部分应该可以工作)

 watch = new Watcher();
        watch.StartWatching();

提前为您服务!

编辑

我发现,测试环境的路径发生了变化。 但是现在我遇到了问题,我无法获取更改文件的名称,因为更改事件只给了我 .opensdf 或 .sdf

你能帮帮我吗?

【问题讨论】:

    标签: file detect vspackage


    【解决方案1】:

    您可以使用 Visual Studio 提供的内置事件:SolutionEventsProjectItemEvents,而不是自己查看文件更改。这个Stack Overflow post 解释了如何在 vs 包中使用它们。

    【讨论】:

    • 嘿弗兰克,谢谢你的回答!花了一些时间,但现在我的解决方案/项目项目事件被触发:-)
    • 很高兴为您工作,如果您是 vsix 开发的新手,我建议您查看此excellent series of posts。这些信息参考了 VS 2010,但其中大部分仍然适用于较新的版本。当我第一次开始扩展开发时,我发现它非常有用。该链接从第 16 部分开始,但如果您滚动到最底部,则会有另一个链接指向第 1 - 15 部分。
    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多