DbMigrator app settings environmentVariables
DbMigrator 預設其實是可以直接吃到不同環境的 appsettings.json 設定檔的,只要在啟動時指定環境變數即可。
但這邊要注意因為該專案不是 AspDotNet 專案,而是 Console 專案,
所以要特別注意環境變數是吃 DOTNET_ENVIRONMENT 而不是 ASPNETCORE_ENVIRONMENT。
# Windows
set DOTNET_ENVIRONMENT=Development
# Linux
export DOTNET_ENVIRONMENT=Development
csproj
我複製了一份 appsettings.json 並命名為 appsettings.Dev.json,但這樣的話在 publish 時該檔案不會被複製到 publish 資料夾中。
所以在 csproj 中把自動產生的 Content Update 改成 Include,讓該檔案在 publish 時一併複製到 publish 資料夾中。
<None Remove="appsettings.Dev.json" />
<Content Include="appsettings.Dev.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
launchSettings
建立 Properties/launchSettings.json 檔案, 並在 launchSettings.json 中加入環境變數的設定, 這樣在 Rider 中執行時就會帶入該環墖變數。
{
"profiles": {
"BookStore.DbMigrator": {
"commandName": "Project",
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development"
}
},
"BookStore.DbMigrator.Dev": {
"commandName": "Project",
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Dev"
}
}
}
}
這樣就可以在不同環境下使用不同的設定檔了。
注意
使用 Azure 時,如果連線字串包含建立資料庫權限,預設會自動建立一個新的挺貴的資料庫,所以要特別注意。
換句話說,請先於 Azure Portal 中建立好資料庫,再將連線字串貼到 appsettings..json 中。
Last modified: 26 August 2024