.NET Core的VSTS版本管理

时间:2017-07-24 08:04:41

标签: asp.net iis azure-pipelines azure-pipelines-build-task azure-pipelines-release-pipeline

我使用VSTS 2017版本管理,采用一次构建 - 部署 - 多策略。我的项目是一个dotnet core-webproject。首先,我使用dotnet恢复/构建/测试/发布我的项目,然后发布我的工件(拉链)。

My build steps

现在,我想将此版本不同配置部署到不同环境。随着"常规" dotnet我使用WinRM Web App Management和parameters.xml来添加我的特定于环境的配置。如下例所示:

enter image description here

但我使用dotnet publish创建的包是zip而不是msdeploy-package。

  1. 如何更换配置(appsettings.json)?

  2. 如何将其部署到我的IIS?

  3. 我已尝试过的内容:

    首先我运行dotnet publish但没有 Zip已发布项目 -option。这使得我可以轻松地进行更改appsettings.json,但需要我使用复制文件 - 操作来进行部署。这有一个IIS锁定文件的缺点,这反过来要求我编写PS脚本,使IIS脱机/在线。

    我只想创建一个包,可以将其部署到多个环境并使用不同的配置。我怎样才能实现它?

1 个答案:

答案 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>