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