微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在程序集上找不到“ UserSecretsIdAttribute”,但它存在并添加了正确的程序包

如何解决在程序集上找不到“ UserSecretsIdAttribute”,但它存在并添加了正确的程序包

我遵循本教程:https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1&tabs=windows#access-a-secret

对于我添加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 举报,一经查实,本站将立刻删除。