我使用VSTS 2017版本管理,采用一次构建 - 部署 - 多策略。我的项目是一个dotnet core-webproject。首先,我使用dotnet
恢复/构建/测试/发布我的项目,然后发布我的工件(拉链)。
现在,我想将此版本与不同配置部署到不同环境。随着"常规" dotnet我使用WinRM Web App Management和parameters.xml来添加我的特定于环境的配置。如下例所示:
但我使用dotnet publish
创建的包是zip而不是msdeploy-package。
如何更换配置(appsettings.json)?
如何将其部署到我的IIS?
我已尝试过的内容:
首先我运行dotnet publish
但没有 Zip已发布项目 -option。这使得我可以轻松地进行更改appsettings.json
,但需要我使用复制文件 - 操作来进行部署。这有一个IIS锁定文件的缺点,这反过来要求我编写PS脚本,使IIS脱机/在线。
我只想创建一个包,可以将其部署到多个环境并使用不同的配置。我怎样才能实现它?
答案 0 :(得分:1)
您无需更改appsettings.json
。核心项目可以从appsettings.[environment].json
文件中检索数据到 ASPNETCORE_ENVIRONMENT 环境变量。
因此,只需在每台环境机器中设置一次 ASPNETCORE_ENVIRONMENT 环境变量。
相关主题:VSTS Deploy IIS App winrm and change appsettings.json。
更新
关于敏感连接字符串,更好的方法是使用 Azure Key Vault 保护机密。关于如何使用它的博客:Protecting Secrets using VSTS and Azure Key Vault。
您还可以加密敏感信息(例如connectionstring),然后在代码中解密。
另一种方法是,您可以在VSTS构建/发布中构建项目(例如Visual Studio构建任务)之前替换该值。注意:如果其他人可以访问已发布的工件或获取构建源文件(例如私有构建代理),则无论在构建或存储在parameters.xml 之前替换值,他们都可以获取敏感信息。 / p>