| File: FileSystem\IFileSystem.cs | Web Access |
| Project: src\msbuild\src\Framework\Microsoft.Build.Framework.csproj (Microsoft.Build.Framework) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Collections.Generic; using System.IO; #nullable disable namespace Microsoft.Build.Shared.FileSystem { /* * This is a clone of Microsoft.Build.FileSystem.MSBuildFileSystemBase. * MSBuildFileSystemBase is the public, reference interface. Changes should be made to MSBuildFileSystemBase and cloned in IFileSystem. * Any new code should depend on MSBuildFileSystemBase instead of IFileSystem, if possible. * * MSBuild uses IFileSystem internally and adapts MSBuildFileSystemBase instances received from the outside to IFileSystem. * Ideally there should be only one, public interface. However, such an interface would need to be put into the * Microsoft.Build.Framework assembly, but that assembly cannot take new types because it breaks some old version of Nuget.exe. * IFileSystem cannot be deleted for the same reason. */ internal interface IFileSystem { TextReader ReadFile(string path); Stream GetFileStream(string path, FileMode mode, FileAccess access, FileShare share); string ReadFileAllText(string path); byte[] ReadFileAllBytes(string path); IEnumerable<string> EnumerateFiles(string path, string searchPattern = "*", SearchOption searchOption = SearchOption.TopDirectoryOnly); IEnumerable<string> EnumerateDirectories(string path, string searchPattern = "*", SearchOption searchOption = SearchOption.TopDirectoryOnly); IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern = "*", SearchOption searchOption = SearchOption.TopDirectoryOnly); FileAttributes GetAttributes(string path); DateTime GetLastWriteTimeUtc(string path); bool DirectoryExists(string path); bool FileExists(string path); bool FileOrDirectoryExists(string path); } }