| File: Commands\Workload\Install\WorkloadResolverFactory.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.Deployment.DotNet.Releases; using Microsoft.DotNet.Configurer; using Microsoft.NET.Sdk.WorkloadManifestReader; using Product = Microsoft.DotNet.Cli.Utils.Product; namespace Microsoft.DotNet.Cli.Commands.Workload.Install; internal interface IWorkloadResolverFactory { public class CreationResult { public string DotnetPath { get; set; } public string UserProfileDir { get; set; } public ReleaseVersion SdkVersion { get; set; } public IWorkloadResolver WorkloadResolver { get; set; } } CreationResult Create(string globalJsonStartDir = null); IWorkloadResolver CreateForWorkloadSet(string dotnetPath, string sdkVersion, string userProfileDir, string workloadSetVersion); } internal class WorkloadResolverFactory : IWorkloadResolverFactory { public IWorkloadResolverFactory.CreationResult Create(string globalJsonStartDir = null) { var result = new IWorkloadResolverFactory.CreationResult(); result.SdkVersion = new ReleaseVersion(Product.Version); result.DotnetPath = Path.GetDirectoryName(Environment.ProcessPath); result.UserProfileDir = CliFolderPathCalculator.DotnetUserProfileFolderPath; globalJsonStartDir = globalJsonStartDir ?? Environment.CurrentDirectory; string globalJsonPath = SdkDirectoryWorkloadManifestProvider.GetGlobalJsonPath(globalJsonStartDir); var sdkWorkloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(result.DotnetPath, result.SdkVersion.ToString(), result.UserProfileDir, globalJsonPath); result.WorkloadResolver = WorkloadResolver.Create(sdkWorkloadManifestProvider, result.DotnetPath, result.SdkVersion.ToString(), result.UserProfileDir); return result; } public IWorkloadResolver CreateForWorkloadSet(string dotnetPath, string sdkVersion, string userProfileDir, string workloadSetVersion) { var manifestProvider = SdkDirectoryWorkloadManifestProvider.ForWorkloadSet(dotnetPath, sdkVersion, userProfileDir, workloadSetVersion); return WorkloadResolver.Create(manifestProvider, dotnetPath, sdkVersion, userProfileDir); } }