Asp.net core 找不到';UserSecretsIdAttribute';但它存在并且添加了正确的包

Asp.net core 找不到';UserSecretsIdAttribute';但它存在并且添加了正确的包,asp.net-core,secretsmanager,Asp.net Core,Secretsmanager,我将遵循以下教程: 我在一个.NET Core 3.1项目中添加了Microsoft.Extensions.Configuration.UserSecrets包,我单击了该项目以管理机密,该文件已在AppData目录中创建,并且UserSecretsId已自动添加到.csproj文件中。 因为Host.CreateDefaultBuilder没有加载机密,所以我决定手动添加它们 if (hostContext.HostingEnvironment.IsDevelopment())

我将遵循以下教程:

我在一个.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

我已经检查了专家描述中的建议,两个难题都得到了解决。

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

<PropertyGroup>
<UserSecretsId>Your GUID</UserSecretsId>

同样的问题。在检查GitHub中的源代码之后


检查.csproj文件中是否也有
true

遇到了相同的rantime错误。我已禁用在csproj中为程序集自动创建AssemblyInfo,因为我的系统CI会自动使用生成版本更新此文件

我的解决办法是添加

[assembly: UserSecretsId ("<Project guid>")] 
[程序集:UserSecretsId(“”]

在AssemblyInfo中。

您提供的所有内容都已完成。但是,我在项目属性中有SharedAssemblyInfo.cs,如果我将id放在那里,它将在运行时加载,但是VS也需要在csproj中加载它以了解机密文件。这很奇怪。我使用了共享程序集,这就是为什么我需要在代码(运行时)和项目级别(VS的编译时)手动添加此参数的原因。var attribute=assembly.GetCustomAttribute();如果GenerateAssemblyInfo设置为false,则无法在.csproj中获取UserSecretsId。试着调试这个code@Mike. 您可以将其添加到startup类或SharedAssemblyInfo.cs
[assembly:UserSecretsId(“XXXguidXXX”)]
@Yoda将其添加到SharedAssemblyInfo.cs中成功了,再次感谢@尤达-我有同样的问题,并以同样的方式修复。我花了几个小时才找到这个答案。非常感谢您的解决方案!
[assembly: UserSecretsId ("<Project guid>")]