我刚刚将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编辑它,我的程序会保持沉默。为什么呢?
答案 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