visual tools studio standard para net mac framework for and .net-core asp.net-core-1.0 visual-studio-2017

tools - ¿Cómo obtener "Administrar los secretos del usuario" en una aplicación de consola.NET Core?



net framework (6)

  1. Haga clic derecho en el proyecto y haga clic en editar archivo csproj.
  2. En la primera línea, reemplace <Project Sdk="Microsoft.NET.Sdk"> con <Project Sdk="Microsoft.NET.Sdk.Web"> y guarde.

Ahora puede acceder para administrar el menú de secretos de usuario, editarlo y guardarlo. Luego, debe restaurar la primera línea del archivo csproj a sus valores predeterminados para volver a ser una aplicación de consola.

Es estúpido pero funciona. Recuerde reemplazar la propiedad usersecretsid para cada proyecto o solo tendrá un secrets.json para todos sus proyectos.

Cuando creo una nueva aplicación Web ASP .NET Core, puedo hacer clic con el botón derecho en el proyecto en Visual Studio y ver una entrada en el menú contextual llamada "Administrar los secretos del usuario".

Cuando creo una nueva aplicación .NET Core Console : no veo esta entrada del menú contextual.

Sin embargo, una aplicación "Web" se muestra como una aplicación de "consola" en la configuración del proyecto. ¿Hay alguna manera de que pueda obtener esta entrada del menú contextual en una aplicación de consola?


"Administrar secretos de usuario" con un clic derecho solo está disponible en proyectos web.

Hay un proceso ligeramente diferente para las aplicaciones de consola.

Requiere escribir manualmente los elementos requeridos en su archivo csproj y luego agregar secretos a través del PMC

He descrito el proceso que me funcionó en mi proyecto actual paso a paso en esta publicación del blog:

https://medium.com/@granthair5/how-to-add-and-use-user-secrets-to-a-net-core-console-app-a0f169a8713f

tl; dr

Paso 1

Haga clic derecho en el proyecto y pulse editar projectName.csproj

Paso 2

agregue <UserSecretsId>Insert New Guid Here</UserSecretsId> en csproj bajo TargetFramework

agregue <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0"/> dentro del grupo de artículos en csproj

Paso 3

Abra el CD de PowerShell (admin) en el directorio del proyecto y

ingrese dotnet user-secrets set YourSecretName "YourSecretContent"

Esto creará un archivo secrets.json en:

%APPDATA%/microsoft/UserSecrets/<userSecretsId>/secrets.json

Donde userSecretsId = el nuevo Guid que creó para su csproj

Etapa 4

Abre secrets.json y edita para que sea similar a esto

{ "YourClassName":{ "Secret1":"Secret1 Content", "Secret2":"Secret2 Content" } }

Al agregar el nombre de su clase, puede vincular sus secretos a un objeto que se utilizará.

Cree un POCO básico con el mismo nombre que acaba de usar en su JSON.

namespace YourNamespace { public class YourClassName { public string Secret1 { get; set; } public string Secret2 { get; set; } } }

Paso 5

Agregue Microsoft.Extensions.Configuration.UserSecrets paquete Nuget de Microsoft.Extensions.Configuration.UserSecrets al proyecto

Añadir

var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddUserSecrets<YourClassName>() .AddEnvironmentVariables();

Y

var services = new ServiceCollection() .Configure<YourClassName>(Configuration.GetSection(nameof(YourClassName))) .AddOptions() .BuildServiceProvider(); services.GetService<NameOfClass>();

A su archivo Program.cs.

Luego inyecte IOptions<YourClassName> en el constructor de su clase

private readonly YourClassName _secrets; public SecretConsumer(IOptions<YourClassName> secrets) { _secrets = secrets.Value; }

Luego acceda a los secretos usando _secrets.Secret1;


¿Cómo obtener "Administrar los secretos del usuario" en una aplicación de consola .NET Core?

Usando la comunidad de Visual Studio 2015 con la actualización 3

  1. Archivo -> Nuevo-> Proyecto
  2. Seleccione la aplicación de consola (.NET Core)
  3. Presione CTRL + ALT + L
  4. Haga clic en el proyecto para obtener "Administrar secretos de usuario" que abrirá un archivo llamado secrets.json

y donde puede introducir manualmente los secretos de usuario.

Pude usar el símbolo del sistema para configurar los secretos del usuario:

c: / Projects / ConsoleApp2 / src / ConsoleApp2> dotnet user-secrets set BrainTree_sandbox: ID del comerciante: 9rv9mhnb5gh7nnyx


1.Agregue a su archivo de proyecto (antes de dotnet 2.1 solamente):

<ItemGroup> <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" /> </ItemGroup>

2.Set

<PropertyGroup> <UserSecretsId>a random user id: manually add</UserSecretsId> </PropertyGroup>

  1. Vaya a la carpeta del proyecto de migración en la Consola del administrador de paquetes y agregue una clave: valor como:

    dotnet user-secrets set "ConnectionStrings:DefaultConnection" "xxxxx"

Recuerde estar en el directorio de ese proyecto (para la consola del Administrador de paquetes, esto significa ingresar en el proyecto, no a nivel de solución)


Parece que no lo han agregado (al menos a Visual Studio 2015) como una opción para aplicaciones de consola o DLL.

Puede usar esto como una solución alternativa, pero hacerlo bajo su propio riesgo , engañará a Visual Studio para que crea que el proyecto dll también tiene capacidades web.

Asumiendo el sistema operativo Windows

  1. Abra el Explorador de archivos en C:/Program Files (x86)/MSBuild/Microsoft/VisualStudio/v{Version Number}/DotNet nota: 14.0 es VS 2015, 15.0 es 2017, etc.

  2. copia de seguridad del archivo llamado Microsoft.DotNet.targets

  3. Agregue esta línea a Microsoft.DotNet.targets junto a la otra etiqueta ProjectCabability

    <ProjectCapability Include="DotNetCoreWeb" />

  4. Guarde el archivo, descargue y vuelva a cargar su proyecto / reinicie Visual Studio.

Es posible que también deba eliminar su archivo .suo y / o su carpeta .vs

Ahora debería ver el menú contextual. También cambia el icono por desgracia. Parece que funciona bien, pero esto no se ha probado tan seriamente, úsalo bajo tu propio riesgo.


Ya hay un problema abierto relacionado con esto en GitHub .

Lo que puede hacer hasta que lo resuelvan, es usar el enfoque de línea de comando como se describe en Visual Studio Code o Command Line: Instalar la herramienta Secret Manager . Esto no significa que obtenga el elemento del menú contextual, pero funciona de todas formas.

Una nota, la documentación se refiere a <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.1" /> mientras que la versión 2.0.0 ya está disponible y se puede usar.