Azure 管道中的 EF Core class 库和迁移

EF Core class library and migrations in azure pipeline

我知道要在 class 库中使用 EF Core 需要一个启动项目,如下所述: 但是,我已经设法通过

使用单个 class 库项目(不使用启动项目)在本地 dotnet ef migrations bundle
  1. 为您的 dbcontext 添加一个 ConfigurationBuilder
  2. 覆盖“OnConfiguring”方法以使用 ConfigurationBuilder 读取您拥有的连接字符串。在我的例子中来自用户机密
    public partial class MyContext : DbContext
    {
        private readonly IConfiguration configuration;

        //will take the connection string from user secrets
        public MyContext()
        {
            this.configuration = new ConfigurationBuilder()
                .AddUserSecrets<ClpQUkMiContext>()
                .Build();
        }

        public MyContext(IConfiguration configuration)
        {
            this.configuration = configuration;
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                var connectionString = configuration["ConnectionStringInUserSecret"]
                optionsBuilder.UseSqlServer(connectionString);
            }
        }

但是,当我试图在 azure 管道中使用它时,它找不到连接字符串,我已将其存储在一个秘密变量中。 到目前为止我已经试过了

  1. 正在将 ".AddEnvironmentVariables()" 添加到配置生成器。
  2. 在yaml文件中映射secret变量,如
variables:
 MyConnectionString: $(MySecreatConnectionString) # Setting variable to be read by the context

如有任何帮助,我将不胜感激。

设法解决问题:要将秘密变量映射到配置可以读取的环境中,必须在每个任务中完成,正如这里清楚地解释的那样: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#secret-variables

dev variable inside the task