internal static FileInfo GetEntryPointAssemblyPath( this IHaveADirectory hasDirectory, bool usePublishDir) { var directory = hasDirectory.Directory; var depsFile = directory.GetFiles("*.deps.json", SearchOption.AllDirectories) .FirstOrDefault(); if (depsFile == null) { return(null); } var entryPointAssemblyName = DepsFileParser.GetEntryPointAssemblyName(depsFile); var path = Path.Combine( directory.FullName, "bin", "Debug", GetTargetFramework(hasDirectory)); if (usePublishDir) { path = Path.Combine(path, "publish"); } return(new FileInfo(Path.Combine(path, entryPointAssemblyName))); }
public static async Task <bool> Create( this IHaveADirectory packageBase, IPackageInitializer initializer) { using (var operation = Logger <PackageBase> .Log.OnEnterAndConfirmOnExit()) { if (!packageBase.Directory.Exists) { operation.Info("Creating directory {directory}", packageBase.Directory); packageBase.Directory.Create(); packageBase.Directory.Refresh(); } using (await FileLock.TryCreateAsync(packageBase.Directory)) { if (!packageBase.Directory.GetFiles("*", SearchOption.AllDirectories).Where(f => !FileLock.IsLockFile(f)).Any()) { operation.Info("Initializing package using {_initializer} in {directory}", initializer, packageBase.Directory); await initializer.Initialize(packageBase.Directory); } } operation.Succeed(); return(true); } }
internal static string GetTargetFramework(this IHaveADirectory ihad) { var runtimeConfig = ihad.Directory .GetFiles("*.runtimeconfig.json", SearchOption.AllDirectories) .FirstOrDefault(); return(runtimeConfig != null?RuntimeConfig.GetTargetFramework(runtimeConfig) : "netstandard2.0"); }
public static void CleanObjFolder(this IHaveADirectory packageBase) { var targets = packageBase.Directory.GetDirectories("obj"); foreach (var target in targets) { target.Delete(true); } }
public static IEnumerable <FileInfo> FindBinLogs(this IHaveADirectory package) => package.Directory .GetFiles("*.binlog") .Where(f => f.FullName.EndsWith(PackageBase.FullBuildBinlogFileName) || f.FullName.EndsWith(Package.DesignTimeBuildBinlogFileName));
public static FileInfo FindLatestBinLog(this IHaveADirectory package) => package.FindBinLogs().OrderByDescending(f => f.LastWriteTimeUtc).FirstOrDefault();
public static FileInfo GetProjectFile(this IHaveADirectory packageBase) => packageBase.Directory.GetFiles("*.csproj").FirstOrDefault();