我正在尝试使用Azure devops中的构建管道构建我的ASP.Net Core,并在运行脚本来编写ef迁移脚本时出错。
我故意在appsettings.json文件中没有生产连接字符串。生产连接字符串填充在应用服务的“配置”部分中。我知道Web应用程序可以连接到我使用Visual Studio发布的数据库,并且已在生产数据库中创建表,也可以读取/保存到数据库。
我正在运行的脚本是:
dotnet ef migrations script -i -o $(build.artifactstagingdirectory)\scripts.sql --project $(Build.SourcesDirectory)\MyApp\MyApp.csproj --startup-project $(Build.SourcesDirectory)\MyApp\MyApp.csproj
脚本输出中的错误是:
System.ArgumentNullException:值不能为null。参数名称:connectionString
所以我的问题是如何在没有appsettings.json文件中的连接字符串的情况下将生产连接字符串传递给ef迁移命令?
Azure DevOps无法立即访问您的WebApp配置。您可以使用Azure API使用自定义脚本读取它们,但我不建议这样做,因为该API还可以获取有关Azure安装程序的其他信息。
我建议您将配置(或其共享部分)移动到Azure Key Vault,然后您可以轻松使用.NET Core apps和Azure DevOps中的配置。
之后当Azure DevOps在其环境中配置了ConnectionString时,通常的dotnet ef migrations
命令应该可以正常工作。