Перейти к содержанию

Примеры : Файловая система

Отбор файлов по шаблонам

Получение списка файлов проекта, за исключением перечисленных в файле .ignore в корне проекта с использованием пакета Microsoft.Extensions.FileSystemGlobbing.

Исходник здесь

Пример на .NET5, причем список допустимых шаблонов ограниченный для Matcher - docs.microsoft.com

Для поддержки более сложных шаблонов можете воспользоваться

=== Program.cs

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    using System;
    using System.IO;
    using System.Threading.Tasks;
    using Microsoft.Extensions.FileSystemGlobbing;
    using Microsoft.Extensions.FileSystemGlobbing.Abstractions;

    namespace FS.Globing
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                var baseFolder = AppContext.BaseDirectory;
                var projectFolder = Directory.GetParent(baseFolder).Parent.Parent.Parent.FullName;
                var ignorePath = Path.Combine(projectFolder, ".ignore");
                var ignoreGlobs = await File.ReadAllLinesAsync(ignorePath);

                // Create and configure the FileSystemGlobbing Matcher using the ignore globs
                var matcher = new Matcher(StringComparison.OrdinalIgnoreCase);
                matcher.AddInclude("**/*");
                matcher.AddExcludePatterns(ignoreGlobs);
                // Execute the matcher the directory
                var result = matcher.Execute(
                    new DirectoryInfoWrapper(new DirectoryInfo(projectFolder)));

                foreach (var file in result.Files)
                    Console.WriteLine(file.Path);
            }
        }
    }

=== Файл .ignore

1
2
3
4
5
bin/
obj/
.git/
.vs/
.vscode/