如何在Cake中找到IFile的完整目录?

时间:2017-05-24 01:10:18

标签: cakebuild

我正在编写一个脚本来从我的构建中生成一些文物,所以我想首先清理不需要的文件。我正在使用CleanDirectory(dirPath, predicate)

我发现很难找到一个文件的目录。如果我使用GetDirectoryName()似乎只是让我的直接父,而不是完整的目录路径。

Func<IFileSystemInfo, bool> predicate =
        fileSystemInfo => {

            // Dont filter out any directories
            if (fileSystemInfo is IDirectory)
                return false;

           var path = fileSystemInfo.Path.FullPath;

           var directory = ((DirectoryPath)path).GetDirectoryName();
           ...
}

显然我可以使用.NET Framework System.IO类来轻松地完成这个操作,但是我得到了带有错误方向的斜杠的字符串,并且事情与使用POSIX路径的Cake没有顺利的互操作。 / p>

1 个答案:

答案 0 :(得分:0)

好的,我已经找到了解决方案。 IFileSystemInfo的关键是尝试将Path转换为各种派生类型/接口,然后提供您可能正在寻找的功能。例如:

 Func<IFileSystemInfo, bool> predicate =
        fileSystemInfo => {

            // Dont filter out any directories
            if (fileSystemInfo is IDirectory)
                return false;

            // We can try and cast Path as an FilePath as know it's not a directory
            var file = (FilePath) fileSystemInfo.Path;

            if (file.FullPath.EndsWith("Help.xml", StringComparison.OrdinalIgnoreCase))
                        return false;

            // GetDirectory() returns a Path of type DirectoryPath
            var directory = file.GetDirectory().FullPath;
            ...
    }