Rui*_*mba 5 c# .net-core azure-devops
我有一个 .NET Core 构建管道,用于在 Azure DevOps 上运行一些测试。每个环境的设置都存储在配置文件中,例如:
appsettings.jsonappsettings.qa.jsonappsettings.test.json构建是非常基础的——它包含一个dotnet restore,dotnet build和dotnet test任务:
在ASPNETCORE_ENVIRONMENT环境变量设置的变量构建管道的部分:
这些构建在包含多个构建代理(私有,非托管)的 VM 上运行。
现在是奇怪的部分 -有时构建会选择错误的设置!.
经过一些调查并添加更多日志记录后,我们意识到ASPNETCORE_ENVIRONMENTvalue 有时是Development-Selfhost,而不是QA。该值似乎来自launchsettings.json测试项目引用的项目文件:
{
"profiles": {
"MyProject.PublicApi": {
"commandName": "Project",
"launchBrowser": false,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development-Selfhost"
},
"applicationUrl": "http://localhost:5028/"
}
}
}
Run Code Online (Sandbox Code Playgroud)
据在ASP.NET核心使用多个环境,launchSettings.json当一个应用程序与启动时使用的文件dotnet run:
launchSettings.json如果可用,则读取。覆盖环境变量中的environmentVariables设置launchSettings.json。
添加launchSettings.jsonto.gitignore解决了我的问题,但如果我不在dotnet run构建管道中执行命令,我试图理解为什么它会使用这些设置。另外,为什么这种行为如此随意?有时它使用正确的设置,有时它没有。
我检查了日志,可以确认文件launchSettings.json已复制到bin测试项目的文件夹中。
我试过设置一个不同的值,ASPNETCORE_ENVIRONMENT它没有在其他任何地方设置:
{
"profiles": {
"MyProject.PublicApi": {
"commandName": "Project",
"launchBrowser": false,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Rui"
},
"applicationUrl": "http://localhost:5028/"
}
}
}
Run Code Online (Sandbox Code Playgroud)
行为基本相同——有时使用管道中设置的值,有时使用管道中设置的值launchSettings.json会失败,因为没有对应的配置文件:
System.IO.FileNotFoundException :未找到配置文件“appsettings.Rui.base.json”,该文件不是可选的。
看起来您有一个测试,也许不止一个,正在启动并运行一个应用程序。这将导致在 dotnet 测试任务期间读取启动设置并设置环境变量。这可以解释:
System.IO.FileNotFoundException:找不到配置文件“appsettings.Rui.base.json”并且不是可选的。
| 归档时间: |
|
| 查看次数: |
4340 次 |
| 最近记录: |