| File: Commands\Workload\Install\IInstaller.cs | Web Access |
| Project: src\sdk\src\Cli\dotnet\dotnet.csproj (dotnet) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #nullable disable using Microsoft.DotNet.Cli.Commands.Workload.Install.WorkloadInstallRecords; using Microsoft.DotNet.Cli.ToolPackage; using Microsoft.Extensions.EnvironmentAbstractions; using Microsoft.NET.Sdk.WorkloadManifestReader; namespace Microsoft.DotNet.Cli.Commands.Workload.Install; internal interface IInstaller : IWorkloadManifestInstaller { int ExitCode { get; } WorkloadSet GetWorkloadSetContents(string workloadVersion); void InstallWorkloads(IEnumerable<WorkloadId> workloadIds, SdkFeatureBand sdkFeatureBand, ITransactionContext transactionContext, DirectoryPath? offlineCache = null); void RepairWorkloads(IEnumerable<WorkloadId> workloadIds, SdkFeatureBand sdkFeatureBand, DirectoryPath? offlineCache = null); void GarbageCollect(Func<string, IWorkloadResolver> getResolverForWorkloadSet, DirectoryPath? offlineCache = null, bool cleanAllPacks = false); WorkloadSet InstallWorkloadSet(ITransactionContext context, string workloadSetVersion, DirectoryPath? offlineCache = null); void InstallWorkloadManifest(ManifestVersionUpdate manifestUpdate, ITransactionContext transactionContext, DirectoryPath? offlineCache = null); IWorkloadInstallationRecordRepository GetWorkloadInstallationRecordRepository(); IEnumerable<WorkloadDownload> GetDownloads(IEnumerable<WorkloadId> workloadIds, SdkFeatureBand sdkFeatureBand, bool includeInstalledItems); void AdjustWorkloadSetInInstallState(SdkFeatureBand sdkFeatureBand, string workloadVersion); void WriteWorkloadHistoryRecord(WorkloadHistoryRecord workloadHistoryRecord, string sdkFeatureBand); IEnumerable<WorkloadHistoryRecord> GetWorkloadHistoryRecords(string sdkFeatureBand); /// <summary> /// Replace the workload resolver used by this installer. Typically used to call <see cref="GetDownloads(IEnumerable{WorkloadId}, SdkFeatureBand, bool)"/> /// for a set of workload manifests that isn't currently installed /// </summary> /// <param name="workloadResolver">A new workload resolver to use</param> void ReplaceWorkloadResolver(IWorkloadResolver workloadResolver); void Shutdown(); /// <summary> /// Delete the install state file at the specified path. /// </summary> /// <param name="sdkFeatureBand">The SDK feature band of the install state file.</param> void RemoveManifestsFromInstallState(SdkFeatureBand sdkFeatureBand); /// <summary> /// Writes the specified JSON contents to the install state file. /// </summary> /// <param name="sdkFeatureBand">The SDK feature band of the install state file.</param> /// <param name="manifestContents">The JSON contents describing the install state.</param> void SaveInstallStateManifestVersions(SdkFeatureBand sdkFeatureBand, Dictionary<string, string> manifestContents); void UpdateInstallMode(SdkFeatureBand sdkFeatureBand, bool? newMode); void RecordWorkloadSetInGlobalJson(SdkFeatureBand sdkFeatureBand, string globalJsonPath, string workloadSetVersion); } public class WorkloadDownload(string id, string nuGetPackageId, string nuGetPackageVersion) { /// <summary> /// The ID of the workload pack or manifest to be downloaded (not necessarily the same as the <see cref="NuGetPackageId"/>) /// </summary> public string Id { get; } = id; public string NuGetPackageId { get; } = nuGetPackageId; public string NuGetPackageVersion { get; } = nuGetPackageVersion; }