2017-05-24 13 views
0

ビルドからアーティファクトを生成するためのスクリプトを作成していますので、最初に不要なファイルをクリーンアップします。私はCleanDirectory(dirPath, predicate)を使用しています。CakeでIFileの完全なディレクトリを見つける方法を教えてください。

私はファイルのためにディレクトリを動かすことを戸惑いがたく見つけました。私が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パスを使用してケーキと相互動作しません。

答えて

0

OK解決策を見つけました。 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; 
      ... 
    } 
関連する問題