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

Yod*_*oda 8 asp.net-core secretsmanager

我按照这个教程: https://learn.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();
Run Code Online (Sandbox Code Playgroud)

但后来我明白了

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
Run Code Online (Sandbox Code Playgroud)

我已经检查了expecion描述中的建议,并且这两个困境都得到了满足。

小智 10

这里同样的问题。检查GitHub中的源代码后 https://github.com/aspnet/Configuration/blob/f64994e0655659faefccead7ccb5c1edbfd4d4ba/src/Config.UserSecrets/UserSecretsConfigurationExtensions.cs#L94

<GenerateAssemblyInfo>true</GenerateAssemblyInfo>检查.csproj 文件中是否也有。

  • @麦克风。您可以将其添加到启动类或 SharedAssemblyInfo.cs `[ assembly: UserSecretsId("XXXguidXXX")]` (2认同)
  • @Yoda - 我有同样的问题并以相同的方式修复。我花了几个小时才找到这个答案。非常感谢您的解决方案! (2认同)

小智 8

面临同样的运行时错误。AssemblyInfo我已经禁用了在 中自动创建for 程序集csproj,因为我的系统 CI 自动使用构建版本更新此文件

我的解决方法是添加

[assembly: UserSecretsId ("<Project guid>")] 
Run Code Online (Sandbox Code Playgroud)

AssemblyInfo


Dar*_*ren 4

您应该在 .csproj 文件中列出 UserSecretsId。如果右键单击 API 层并管理用户机密,请确认 AppData 目录中的 GUID 与项目中的内容匹配。

<PropertyGroup>
<UserSecretsId>Your GUID</UserSecretsId>
Run Code Online (Sandbox Code Playgroud)

您的 Program.cs 类应该使用 CreateDefaultBuilder,当环境为 Development 时,您应该看到有一个包含 Secrets 的部分。检查您的 ASP "ASPNETCORE_ENVIRONMENT": "Development"是否设置为开发。最后,我假设您的执行程序集具有上述用户机密的 PropertyGroup。

 public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
Run Code Online (Sandbox Code Playgroud)