shreesharao / aspnetcore-ConsoleToWeb

Convert Console project to web project for understanding the working of asp.net core mvc
0 stars 0 forks source link

How to use UserSecrets in Console application? #8

Closed shreesharao closed 6 years ago

shreesharao commented 6 years ago

Step 1 Right click project and hit edit projectName.csproj

Step 2 add <UserSecretsId>Insert New Guid Here</UserSecretsId>into csproj under TargetFramework

Step 3 open command prompt. enter dotnet user-secrets set YourSecretName "YourSecretContent" this will create a secrets.json file in: %APPDATA%\microsoft\UserSecrets\\secrets.json

Step 5 Add Microsoft.Extensions.Configuration.UserSecrets Nuget package to project

Add

var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddUserSecrets<YourClassName>().Build()

Step6 Use it as Console.WriteLine(configuration["test"]);

shreesharao commented 6 years ago

We can also use options pattern here like this -

We need to add

<PackageReference Include="microsoft.extensions.configuration" Version="2.1.1" />
    <PackageReference Include="microsoft.extensions.configuration.usersecrets" Version="2.1.1" />
    <PackageReference Include="microsoft.extensions.dependencyinjection" Version="2.1.1" />
    <PackageReference Include="microsoft.extensions.options" Version="2.1.1" />
    <PackageReference Include="microsoft.extensions.options.configurationextensions" Version="2.1.1" />
class Program
    {
        static void Main(string[] args)
        {

            IConfiguration configuration = new ConfigurationBuilder().AddUserSecrets<UserSecretsOption>().Build();
            var serviceProvider = new ServiceCollection().AddScoped<TestService>().Configure<UserSecretsOption>(configuration).BuildServiceProvider();
            var testService = serviceProvider.GetService<TestService>();
Console.Read();

        }
    }
    class TestService
    {
        public TestService(IOptionsSnapshot<UserSecretsOption> optionsSnapshot)
        {
            SystemConsole.WriteLine(optionsSnapshot.Value.test);
        }
    }