【发布时间】:2016-09-06 11:02:30
【问题描述】:
我正在使用新的 VSTS 版本管理将我的网站部署到 Azure Web 应用程序。我想要的只是为 QA 环境转换一个连接字符串。我发现很难得到答案。任何帮助深表感谢。
我不想在我的 Web 配置文件中创建令牌,因为我想在我的本地环境中使用该配置文件。
【问题讨论】:
标签: visual-studio azure azure-pipelines azure-pipelines-release-pipeline
我正在使用新的 VSTS 版本管理将我的网站部署到 Azure Web 应用程序。我想要的只是为 QA 环境转换一个连接字符串。我发现很难得到答案。任何帮助深表感谢。
我不想在我的 Web 配置文件中创建令牌,因为我想在我的本地环境中使用该配置文件。
【问题讨论】:
标签: visual-studio azure azure-pipelines azure-pipelines-release-pipeline
您还可以使用包含连接字符串的 VSTS 变量作为连接字符串部署到 Azure WebApp。
这看起来像是我的开源 VSTS 任务的无耻插件。但对于您的问题,这是一个干净且简单的解决方案。我的任务可用于部署在 VSTS 中配置为变量的 appsettings 和连接字符串,以部署到 Azure webapp。无需更改 web.config。
查看市场以在 VSTS 中安装它并获取文档:https://marketplace.visualstudio.com/items?itemName=pascalnaber.PascalNaber-Xpirit-WebAppConfiguration
【讨论】:
从安全角度来看,在源代码管理中存储连接字符串(本地开发人员除外)远非最佳做法。
构建/发布管理系统允许您拥有可以在流程中重复使用的秘密变量和/或服务端点。
但是,您应该在构建步骤(MSBuild 参数)中查看发布交换器,它将要求 Visual Studio 执行发布并应用来自配置转换文件和发布配置文件的转换。/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"
【讨论】:
-connectionString @{"$(ConnectionStringName)"="Server=tcp:$(ServerName).database.windows.net,1433;Database=$(DatabaseName);User ID=$(AdministratorLogin)@$(ServerName);Password=$(AdministratorLoginPassword);Trusted_Connection=False;Encrypt=True;"}。
这是我在我的构建定义上的 Visual Studio 构建任务中的 MSBuild Arguments 中的内容,它的工作原理就像一个冠军:
/p:DeployOnBuild=True;PublishProfile="$(BuildConfiguration)" /p:publishUrl="$(Build.ArtifactStagingDirectory)" /p:DeleteExistingFiles=True /p:WebPublishMethod=FileSystem /p:DeployDefaultTarget=WebPublish
请注意,我将 BuildConfiguration 作为变量,例如对应于 UAT 或 Release 或 Dev。 PublishProfile 对应于您在项目/解决方案中设置的发布配置文件。 (因此,如果您将发布配置文件命名为“Hey-Go-To-Dev”,那么您将在 BuildConfiguration 中放入“Hey-Go-To-Dev”(或您可以设置的新变量)。
无论如何:这将执行您的发布配置文件并在您的 web.config 文件中进行任何相关的转换。
神速。
【讨论】: