如何解决在程序集上找不到“ UserSecretsIdAttribute”,但它存在并添加了正确的程序包
对于我添加了Microsoft.Extensions.Configuration.UserSecrets
包的.NET Core 3.1项目,我单击了该项目以管理机密,该文件已在AppData
目录和{{1}中创建}已自动添加到UserSecretsId
文件中。
由于.csproj
没有加载机密,因此我决定手动添加机密
Host.CreateDefaultBuilder
但是我明白了
if (hostContext.HostingEnvironment.IsDevelopment())
{
builder.AddUserSecrets(Assembly.GetExecutingAssembly());
}
})
.Build();
我已经检查了说明中的建议,两个难题都得到满足。
解决方法
您应该在.csproj文件中列出UserSecretsId。如果右键单击API层并管理用户密码,请确认GUID是否与AppData目录中的GUID与项目中的内容匹配。
<PropertyGroup>
<UserSecretsId>Your GUID</UserSecretsId>
您的Program.cs类应该使用CreateDefaultBuilder,当环境为“开发”时,您应该看到有一个部分包含Secrets。检查您的ASP "ASPNETCORE_ENVIRONMENT": "Development"
已设置为开发状态。最后,我假设您的执行程序集具有上述用户秘密的PropertyGroup。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
,
面临同样的运行时错误。我已经禁用了在 csproj 中为程序集自动创建 AssemblyInfo,因为我的系统 CI 会使用构建版本自动更新此文件
我的解决方法是添加
[assembly: UserSecretsId ("<Project guid>")]
在组装信息中。
,这里有同样的问题。在GitHub中检查源代码后 https://github.com/aspnet/Configuration/blob/f64994e0655659faefccead7ccb5c1edbfd4d4ba/src/Config.UserSecrets/UserSecretsConfigurationExtensions.cs#L94
检查.csproj文件中是否也有<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。