C#:los secretos de usuario no se cargan cuando usa GenerateAssemblyInfo=false

C#:los secretos de usuario no se cargan cuando usa GenerateAssemblyInfo=false

Problema

Configuró los secretos de usuario correctamente, pero el marco no intercambiará el valor del secreto en tiempo de ejecución. Parece que no está cargando secrets.json en absoluto.

Compruebe si está utilizando GenerateAssemblyInfo=false en su archivo .csproj.

Cuando agrega un archivo de secretos de usuario, genera un GUID de secretos de usuario y lo coloca en su .csproj como UserSecretsId propiedad. También coloca este GUID en un atributo de información de ensamblado llamado UserSecretsIdAttribute. Si tiene GenerateAssemblyInfo=false , no agregará UserSecretsIdAttribute por usted, razón por la cual no cargará el archivo de secretos de usuario en tiempo de ejecución.

Si ha puesto GenerateAssemblyInfo=false en su archivo .csproj, su archivo .csproj puede verse así:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <UserSecretsId>b5dc3595-d335-49aa-b0a6-96e2f08e2206</UserSecretsId>
  </PropertyGroup>

</Project>
Code language: HTML, XML (xml)

Solución

Para usar GenerateAssemblyInfo=false y secretos de usuario al mismo tiempo, deberá agregar UserSecretsIdAttribute en tu proyecto, así:

using System;
using System.Reflection;

[assembly: Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute("b5dc3595-d335-49aa-b0a6-96e2f08e2206")]

Code language: C# (cs)

Nota:debe usar el mismo GUID que está en la propiedad .csproj UserSecretsId. En este ejemplo, es b5dc3595-d335-49aa-b0a6-96e2f08e2206 .

Si no necesita usar GenerateAssemblyInfo=false , luego elimínelo de su archivo .csproj.