我有一个 ASP.NET Core API DemoApi.csproj,其中包含三个“app*.config”文件:
- 应用程序配置
- app.preprod.config
- 应用程序.prod.config
在 Azure DevOps 中,构建管道生成工件:
dotnet publish --configuration Release
这产生:
- 演示Api.exe
- DemoApi.exe.config
- 应用程序配置
- app.preprod.config
- 应用程序.prod.config
接下来,使用 Azure Pipeline 任务IIS Web Application Deployment在 IIS 上部署 API 。此任务具有 XML 转换中描述的 xml 配置文件转换机制。
该机制检查所有“$1.$env$.config”并将转换应用于“$1.config”。在我的情况下,当我在 prod 上部署时,这需要“app.prod.config”文件并将转换应用于“app.config”。但是API的配置来自“DemoApi.exe.config”,转换“app.config”是没有用的。
这不是什么大问题,我在构建管道中添加了一项将“app.prod.config”重命名为“DemoApi.exe.prod.config”的任务,现在转换应用于预期文件。但这听起来像一个肮脏的黑客。
第一个问题,为什么“dotnet publish”输出“app.config”?该文件无用,“DemoApi.exe.config”包含“app.config”的内容。
第二个问题,可以用“dotnet publish”重命名吗?