// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.ComponentModel.Composition; using Microsoft.VisualStudio.ProjectSystem; using Microsoft.VisualStudio.Shell; namespace Microsoft.VisualStudio.SecretManager { internal class SecretManagerFactory { // This is capability is set in Microsoft.Extensions.Configuration.UserSecrets private const string CapabilityName = "LocalUserSecrets"; private readonly Lazy _secretManager; private readonly UnconfiguredProject _project; [ImportingConstructor] public SecretManagerFactory(UnconfiguredProject project, SVsServiceProvider vsServiceProvider) { _project = project; var serviceProvider = new Lazy(() => vsServiceProvider); _secretManager = new Lazy(() => { var propertiesProvider = _project.Services.ActiveConfiguredProjectProvider.ActiveConfiguredProject.Services.ProjectPropertiesProvider; return new ProjectLocalSecretsManager(propertiesProvider, serviceProvider); }); } [ExportVsProfferedProjectService(typeof(SVsProjectLocalSecrets))] [AppliesTo(CapabilityName)] public SVsProjectLocalSecrets ProjectLocalSecretsManager => _secretManager.Value; } }