40 .net-core asp.net-core-1.0 visual-studio-2017
当我创建一个新的ASP .NET Core Web -Application时,我可以在Visual Studio中右键单击该项目,然后我会看到一个名为"Manage User Secrets"的上下文菜单条目.
当我创建一个新的.NET Core Console -Application时,我没有看到这个上下文菜单条目.
但是,"Web" - 应用程序在项目设置中显示为"控制台"应用程序.有什么方法可以在控制台应用程序中获得此上下文菜单条目吗?
Gra*_*air 42
通过右键单击"管理用户机密"仅在Web项目中可用.
控制台应用程序的过程略有不同
它需要手动将所需元素键入csproj文件,然后通过PMC添加秘密
我在本博客文章中逐步概述了当前项目中对我有用的过程:
TL;博士
步骤1
右键单击项目,然后单击编辑projectName.csproj
第2步
<UserSecretsId>Insert New Guid Here</UserSecretsId>在TargetFramework下添加到csproj中
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0"/>在csproj中添加项目组
第3步
打开PowerShell(admin)cd到项目目录和
输入 dotnet user-secrets set YourSecretName "YourSecretContent"
这将创建一个secrets.json文件:
%APPDATA%\microsoft\UserSecrets\<userSecretsId>\secrets.json
Run Code Online (Sandbox Code Playgroud)
userSecretsId =您为csproj创建的新Guid
第4步
打开secrets.json并编辑看起来与此类似
{
"YourClassName":{
"Secret1":"Secret1 Content",
"Secret2":"Secret2 Content"
}
}
Run Code Online (Sandbox Code Playgroud)
通过添加类的名称,您可以将您的秘密绑定到要使用的对象.
创建一个与您在JSON中使用的名称相同的基本POCO.
namespace YourNamespace
{
public class YourClassName
{
public string Secret1 { get; set; }
public string Secret2 { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
第5步
将Microsoft.Extensions.Configuration.UserSecretsNuget包添加到项目中
加
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddUserSecrets<YourClassName>()
.AddEnvironmentVariables();
Run Code Online (Sandbox Code Playgroud)
&
var services = new ServiceCollection()
.Configure<YourClassName>(Configuration.GetSection(nameof(YourClassName)))
.AddOptions()
.BuildServiceProvider();
services.GetService<SecretConsumer>();
Run Code Online (Sandbox Code Playgroud)
到您的Program.cs文件.
然后注入IOptions<YourClassName>你的类的构造函数
private readonly YourClassName _secrets;
public SecretConsumer(IOptions<YourClassName> secrets)
{
_secrets = secrets.Value;
}
Run Code Online (Sandbox Code Playgroud)
然后通过使用访问秘密 _secrets.Secret1;
小智 11
Dotnet Core 3.1 - 我在只需要隐藏密码的情况下发现的最简单的方法。
使用命令行从项目文件夹创建用户机密
dotnet user-secrets init
dotnet user-secrets set mailpassword password1
Run Code Online (Sandbox Code Playgroud)
在 Program.cs 中
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
var secretProvider = config.Providers.First();
if (!secretProvider.TryGet("mailpassword", out var secretPass) ) return;
Run Code Online (Sandbox Code Playgroud)
如果您在配置方面做更多事情,您可能需要调整 .First()
1.添加到您的项目文件(仅限dotnet 2.1之前):
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
2.设置
<PropertyGroup>
<UserSecretsId>a random user id: manually add</UserSecretsId>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
移至Package Manager Console中的迁移项目文件夹并添加一个键:值如:
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "xxxxx"
Run Code Online (Sandbox Code Playgroud)记得要在该项目的目录中(对于包管理器控制台,这意味着进入项目,而不是解决方案级别)
Manage User Secrets现在,一旦引用Microsoft.Extensions.Configuration.UserSecretsNuGet ,即可从Visual Studio 2019(在版本16.1.3中验证)的.NET Core控制台项目(不仅是ASP.NET Core项目)的上下文菜单中使用。
小智 -3
如何在 .NET Core 控制台应用程序中获取 \xe2\x80\x9cManage User Secrets\xe2\x80\x9d?
\n\n使用带有更新 3 的 Visual Studio 2015 Community
\n\n以及您可以手动输入用户密码的位置。
\n\n我能够使用命令提示符来设置用户机密:
\n\nc:\\Projects\\ConsoleApp2\\src\\ConsoleApp2>dotnet 用户密码设置 BrainTree_sandbox:商户 ID:9rv9mhnb5gh7nnyx
\n| 归档时间: |
|
| 查看次数: |
11390 次 |
| 最近记录: |