2013-11-24 5 views
5

से बचने के लिए मैं EnumerateFiles उपयोग कर रहा हूँ सब * निर्देशिका में .md पाने के लिए:EnumerateFiles कैशिंग

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 को a.md का नाम बदलता हूं, EnumerateFiles पुराना और नया फ़ाइल नाम देता है .. पावरशेल का नतीजा है कि मेरे पास 3 फाइलें हैं, जबकि एन्युमरेटफाइल 4 फाइलें लौटाती हैं।

मैंने कहीं पढ़ा है एन्युमेरेटफाइल आलसी लोडिंग के साथ किसी प्रकार का कैशिंग करता है? लेकिन फ़ाइल का नाम बदलने पर कैश को अमान्य नहीं करना चाहिए?

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

जब आप फ़ाइल का नाम बदल रहे हैं? जबकि 'फॉरच' लूप चल रहा है या 2 कॉल के बीच है? यूनिट टेस्ट में –

+0

@ डारिनडिमिट्रोव, मैं विभिन्न चीजों की कोशिश कर रहा था। परीक्षण विफल रहे थे। तो मैंने सभी परीक्षण मामलों को हटा दिया और सबकुछ मैन्युअल रूप से किया। मैं foreach से पहले इसे नाम बदल रहा था। मैंने मैन्युअल नामकरण, पुन: संकलन और परीक्षणों को फिर से शुरू करने का भी प्रयास किया। अब यह 7 फाइलें दिखा रहा है .. फ़ाइल एक्सप्लोरर और पावरशेल 3 फाइलें दिखाएं। Msdn से – Annie

+1

यह कहता है कि यह कैशिंग नहीं है 'लौटाया गया संग्रह कैश नहीं किया गया है; संग्रह पर GetEnumerator को प्रत्येक कॉल एक नई गणना शुरू करेगा। यदि आप इसके बजाय 'GetFiles' का उपयोग करते हैं तो क्या होता है? –

उत्तर

1

पता चला मेरी ग़लती के रूप में। डीबग निर्देशिका में वास्तविक संपत्ति की छाया प्रतिलिपि बनाने के लिए MSBuild कार्य जिम्मेदार है। इसमें सभी पिछली फाइलें हैं। वीएस स्वच्छ समाधान पर फ़ोल्डर को साफ़ नहीं कर रहा है। मुझे लगता है कि मुझे स्रोत निर्देशिका में परिवर्तनों का निरीक्षण करने के लिए इस कार्य को संशोधित करने की आवश्यकता है।

संबंधित मुद्दे