System.IO.FileSystemWatcher不会监视Visual Studio 2013更改的文件

时间:2013-11-11 11:24:23

标签: c# visual-studio-2013

我刚刚将Visual Studio升级到2013版Ultimate,我发现System.IO.FileSystemWatcher类无法观看Visual Studio 2013编辑的文件。假设我有以下代码

class Program
{
    static void Main(string[] args)
    {
        var watcher = new FileSystemWatcher(@"C:\test", "*.txt");
        watcher.Changed += watcher_Changed;
        watcher.EnableRaisingEvents = true;
        Console.Read();
        watcher.Changed -= watcher_Changed;
    }

    static void watcher_Changed(object sender, FileSystemEventArgs e)
    {
        Console.WriteLine("file is changed");
    }
}

如果我用记事本编辑文件C:\test\a.txt,程序将报告文件发生变化,但如果我用Visual Studio 2013编辑它,我的程序会保持沉默。为什么呢?

2 个答案:

答案 0 :(得分:8)

我注意到在Visual Studio 2013中编辑文件时,它会创建临时文件,然后删除原始文件并将临时文件重命名为相同的名称。因此,要捕获正常编辑处理System.IO.FileSystemWatcher的{​​{1}}事件,对于Visual Studio中的编辑,请处理Changed事件。

答案 1 :(得分:7)

我检查了Marcus和Shuping的解决方案,但在我的情况下,他们没有工作。 我为解决这个问题所做的就是设置:

watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.CreationTime;

Changed事件开始起作用。

VS 2013版:12.0.30501.00 Update 2