.Net标准中的.Net核心库:核心长路径处理

时间:2017-12-01 12:51:56

标签: c# .net .net-core

如何在常规.Net应用程序中使用.Net Core库?我遇到了this Hanselman文章,解释说我应该使用.Net标准库。问题是,我的代码只适用于核心库(afaik)。

以下方法适用于Core但不适用于标准库。 Core似乎比常规.Net解决方案(Background)更好地处理长路径(超过250个字符限制)。

有没有办法在常规.Net库中使用Core库?

private static List<FileInfo> FastGetFileList(string myBaseDirectory, string searchString = "*.*")
{
    var dirInfo = new DirectoryInfo(myBaseDirectory);

    return dirInfo.EnumerateDirectories()
        .AsParallel()
        .SelectMany(di => di.EnumerateFiles(searchString, SearchOption.AllDirectories)).ToList()
        .Union(dirInfo.EnumerateFiles(searchString)).ToList();
}

完整的测试解决方案

这将在常规控制台应用程序中失败,并且在从.Net Standard 2.0库调用时也不起作用。在Core控制台应用中,它可以正常工作。

private string path =
            @"\\GREATER THAN 250 CHARACTERS NETWORK FOLDER LOCATION"
        ;

    static void Main(string[] args)
    {
        var temp = FastGetFileList(path);

        Console.WriteLine("Success");
        Console.ReadLine();
    }

    private static List<FileInfo> FastGetFileList(string myBaseDirectory, string searchString = "*.*")
    {
        var dirInfo = new DirectoryInfo(myBaseDirectory);

        return dirInfo.EnumerateDirectories()
            .AsParallel()
            .SelectMany(di => di.EnumerateFiles(searchString, SearchOption.AllDirectories)).ToList()
            .Union(dirInfo.EnumerateFiles(searchString)).ToList();
    }

0 个答案:

没有答案