我正在编写一个脚本来从我的构建中生成一些文物,所以我想首先清理不需要的文件。我正在使用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>
答案 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;
...
}