【发布时间】:2022-06-14 15:54:16
【问题描述】:
我目前正在部署一个 Web 应用程序,在该应用程序上我有一个用于生产目的的应用程序设置和一个用于测试目的的应用程序设置。 我如何在部署期间将 appsetting.json 替换为生产或测试的内容?
要部署,我使用 IIS Web 应用管理和 IIS Web 应用部署。
我目前所做的是每次将某些内容推送到 main 时,我都会设置 Azure 来触发一个
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
testConfiguration: 'Test'
prodConfiguration: 'Production'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)"'
platform: '$(buildPlatform)'
configuration: '$(testConfiguration)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)"'
platform: '$(buildPlatform)'
configuration: '$(prodConfiguration)'
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
zipAfterPublish: true
arguments: '--output $(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
然后,我使用 drop to 中创建的工件进行部署。 当我想部署到我的测试或生产环境时会出现问题。
解决方案本身对appsetting.json有一个transform,即appsetting.Test.json和appsetting.Production.json 但放置文件夹中的只是发布的产品版本,而不是测试和产品。
如何将两者都包含在放置文件夹下?
所以当我通过部署管道发布它时,可以指定我要部署测试版本还是产品版本?
【问题讨论】:
-
根据您的描述,我无法清楚地理解您的要求。你这样做的目的是什么?
-
部署时转换后的 appsetting.json 文件的内容不同我想覆盖使用特定环境而不是我的一组 appsetting.json
-
您的问题似乎很复杂,建议您通过support.microsoft.com开箱。
-
我认为您可以在 Linux 中使用 bash 脚本或在 Windows 中使用 bat 文件,在您的管道中创建一个步骤来更改 appsetting.json
标签: iis azure-devops deployment appsettings