VSPackage中的文件监视器

时间:2015-05-08 07:17:54

标签: file detect vspackage

我是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的初始化方法中,我打电话: (“观察者方法”显示在输出中,因此该部分应该有效)

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

提前坦克!

修改

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

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

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