Не удалось найти атрибут UserSecretsIdAttribute в сборке, но он существует и добавлен правильный пакет.
Я следую этому руководству: https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1&tabs=windows#access-a-secret
В проект.NET Core 3.1 я добавил
Microsoft.Extensions.Configuration.UserSecrets
пакет, я щелкнул проект, чтобы управлять секретами, файл был создан в
AppData
каталог и
UserSecretsId
был добавлен автоматически в
.csproj
файл. Поскольку
Host.CreateDefaultBuilder
не загружал секреты решил добавить их вручную
if (hostContext.HostingEnvironment.IsDevelopment())
{
builder.AddUserSecrets(Assembly.GetExecutingAssembly());
}
})
.Build();
Но потом я получаю
System.InvalidOperationException
HResult=0x80131509
Message=Could not find 'UserSecretsIdAttribute' on assembly 'XXX'.
Check that the project for 'XXX' has set the 'UserSecretsId' build property.
If the 'UserSecretsId' property is already set then add a reference to the Microsoft.Extensions.Configuration.UserSecrets package.
Source=Microsoft.Extensions.Configuration.UserSecrets
Я проверил предложение в описании expecion, и оба затруднения выполнены.
5 ответов
Здесь та же проблема. после проверки исходного кода в GitHubhttps://github.com/aspnet/Configuration/blob/f64994e0655659faefccead7ccb5c1edbfd4d4ba/src/Config.UserSecrets/UserSecretsConfigurationExtensions.cs#L94
Проверьте, есть ли у вас
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
в вашем файле.csproj.
Столкнулся с той же ошибкой во время выполнения. Я отключил автоматическое создание AssemblyInfo для сборки в csproj, потому что мой системный CI автоматически обновляет этот файл версией сборки
Мое решение - добавить
[assembly: UserSecretsId ("<Project guid>")]
в AssemblyInfo.
У вас должен быть указан UserSecretsId в вашем файле.csproj. Если вы щелкните правой кнопкой мыши слой API и управляете секретами пользователей, убедитесь, что GUID в каталоге AppData совпадает с тем, что есть в проекте.
<PropertyGroup>
<UserSecretsId>Your GUID</UserSecretsId>
Ваш класс Program.cs должен использовать CreateDefaultBuilder, вы должны увидеть, что есть раздел для включения секретов, когда среда является разработкой. Проверьте свой ASP
"ASPNETCORE_ENVIRONMENT": "Development"
настроен на разработку. Наконец, я предполагаю, что ваша исполняемая сборка имеет PropertyGroup для пользовательских секретов, упомянутых выше.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Просто используйте контекстное меню в своем проекте и выберите "Управление секретами пользователя..." и сохраните пустой файл конфигурации секретов пользователя. Visual Studio должна автоматически создавать необходимые записи файла проекта.
System.InvalidOperationException: «Не удалось найти UserSecretsIdAttribute в сборке». Убедитесь, что в проекте для '' установлено свойство сборки UserSecretsId. Если свойство UserSecretsId уже установлено, добавьте ссылку на пакет Microsoft.Extensions.Configuration.UserSecrets».
Добавление этого пакета решило проблему. Microsoft.Extensions.Configuration.UserSecrets