我正在使用EnumerateFiles
来获取目录中的所有* .md:
foreach (var mdName in Directory.EnumerateFiles(Path.Combine(BaseDirectory,
"assets/markdowns"), "*.md", SearchOption.AllDirectories))
{
// async md parser call goes here
}
我有三个测试文件a.md
,b.md
和c.md
。
现在,当我将a.md重命名为a1.md时,EnumerateFiles
将返回旧文件名和新文件名。来自PowerShell的结果显示我有3个文件,而EnumerateFiles返回4个文件。
我在某地读过EnumerateFiles做了某种缓存,有延迟加载?但重命名文件时不应该使缓存失效吗?
GetFiles / EnumerateFiles输出:
[0]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\a.md"
[1]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\b.md"
[2]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\c.md"
[3]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\_a.md"
[4]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\_a1.md"
[5]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\_a2.md"
[6]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\_a3.md"
答案 0 :(得分:1)
原来是我的错。有一个MSBuild
任务负责在Debug目录中创建实际资产的卷影副本。它包含所有以前的文件。 VS未清除Clean Solution上的文件夹。我想我需要修改此任务以观察源目录中的更改。