private string GetAssetsFilePath(LockFile lockFile) { var projectLockFilePath = _request.LockFilePath; if (string.IsNullOrEmpty(projectLockFilePath)) { if (_request.ProjectStyle == ProjectStyle.PackageReference || _request.ProjectStyle == ProjectStyle.Standalone) { projectLockFilePath = Path.Combine(_request.RestoreOutputPath, LockFileFormat.AssetsFileName); } else if (_request.ProjectStyle == ProjectStyle.DotnetCliTool) { var toolName = ToolRestoreUtility.GetToolIdOrNullFromSpec(_request.Project); var lockFileLibrary = ToolRestoreUtility.GetToolTargetLibrary(lockFile, toolName); if (lockFileLibrary != null) { var version = lockFileLibrary.Version; var toolPathResolver = new ToolPathResolver(_request.PackagesDirectory); projectLockFilePath = toolPathResolver.GetLockFilePath( toolName, version, lockFile.Targets.First().TargetFramework); } } else { projectLockFilePath = Path.Combine(_request.Project.BaseDirectory, LockFileFormat.LockFileName); } } return(Path.GetFullPath(projectLockFilePath)); }
/// <summary> /// This method will resolve the cache/lock file paths for the tool if available in the cache /// This method will set the CacheFilePath and the LockFilePath in the RestoreMetadat if a matching tool is available /// </summary> public static void UpdateRequestBestMatchingToolPathsIfAvailable(RestoreRequest request) { if (request.ProjectStyle == ProjectStyle.DotnetCliTool) { // Resolve the lock file path if it exists var toolPathResolver = new ToolPathResolver(request.PackagesDirectory); var toolDirectory = toolPathResolver.GetBestToolDirectoryPath( ToolRestoreUtility.GetToolIdOrNullFromSpec(request.Project), request.Project.TargetFrameworks.First().Dependencies.First().LibraryRange.VersionRange, request.Project.TargetFrameworks.SingleOrDefault().FrameworkName); if (toolDirectory != null) // Only set the paths if a good enough match was found. { request.Project.RestoreMetadata.CacheFilePath = NoOpRestoreUtilities.GetToolCacheFilePath(toolDirectory, ToolRestoreUtility.GetToolIdOrNullFromSpec(request.Project)); request.LockFilePath = toolPathResolver.GetLockFilePath(toolDirectory); } } }
internal static string GetToolCacheFilePath(RestoreRequest request, LockFile lockFile) { if (request.ProjectStyle == ProjectStyle.DotnetCliTool && lockFile != null) { var toolName = ToolRestoreUtility.GetToolIdOrNullFromSpec(request.Project); var lockFileLibrary = ToolRestoreUtility.GetToolTargetLibrary(lockFile, toolName); if (lockFileLibrary != null) { var version = lockFileLibrary.Version; var toolPathResolver = new ToolPathResolver(request.PackagesDirectory); return(GetToolCacheFilePath(toolPathResolver.GetToolDirectoryPath( toolName, version, lockFile.Targets.First().TargetFramework), toolName)); } } return(null); }
internal static string GetToolCacheFilePath(RestoreRequest request, LockFile lockFile) { if (request.ProjectStyle != ProjectStyle.DotnetCliTool) { var toolName = ToolRestoreUtility.GetToolIdOrNullFromSpec(request.Project); var lockFileLibrary = ToolRestoreUtility.GetToolTargetLibrary(lockFile, toolName); if (lockFileLibrary != null) { var version = lockFileLibrary.Version; var toolPathResolver = new ToolPathResolver(request.PackagesDirectory); var projFileName = Path.GetFileName(request.Project.RestoreMetadata.ProjectPath); return(PathUtility.GetDirectoryName(toolPathResolver.GetLockFilePath( toolName, version, lockFile.Targets.First().TargetFramework)) + $"{projFileName}.nuget.cache"); } } return(null); }