Geo*_*uer 5 .net msbuild continuous-integration msdeploy
我有一个CI服务器(Bamboo,但我认为这不重要)构建和自动部署我的应用程序.在本地开发期间我使用localdb(<connectionStrings>我的节点web.config)
<add name="MyApp" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDB)\v11.0;Integrated Security=True;Connect Timeout=30;Initial Catalog=MyApp" />
<add name="MyApp_Patients" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDB)\v11.0;Integrated Security=True;Connect Timeout=30;Initial Catalog=AppleHms_MyApp" />
...
Run Code Online (Sandbox Code Playgroud)
部署时显然不应该使用它.它应该使用我的部署sql server连接字符串.
我知道我可以为此编写一个web.config转换,我甚至知道我可以加密web.config但是我不确定db连接字符串应该如何正确地进入.对我来说有意义的是CI服务器覆盖每个connectionString - 所以我的配置转换应该看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="MyApp" providerName="System.Data.SqlClient" connectionString="${main-db-connectionstring}" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
<add name="MyApp_Patients" providerName="System.Data.SqlClient" connectionString="${patients-db-connectionstring}" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
...
</connectionStrings>
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
覆盖来自我的ci服务器中的变量(可能是msbuild或部署的某些部分)?
这是正确的,这是"正确的"这样做的方式吗?究竟我与msbuild/deploy有什么关系才能实现这一目标?
我们也使用竹子进行CI和部署,我们正在做的是:
基本上与msdeploy相关的部署如下:
msdeploy
-verb:sync
-source:package="NightlyPackage.zip"
-dest:iisApp="YourIISHost/YourIISSite"
-declareParamFile="YourEnvironementSetParameters.xml"
Run Code Online (Sandbox Code Playgroud)
每个项目包的Parameters.xml如下所示:
<parameters>
<parameter
name="ConnectionString1-Web.config Connection String"
description=""
defaultValue="localhost">
<parameterEntry
kind="XmlFile"
scope="\\web.config$"
match="/configuration/connectionStrings/add[@name='ConnectionString1']/@connectionString"
/>
</parameter>
</parameters>
Run Code Online (Sandbox Code Playgroud)
ConnectionString1connectionString的名称在哪里.
您的YourEnvironementSetParameters.xml如下所示:
<parameters>
<setParameter name="ConnectionString1-Web.config Connection String" value="Your parametrized connection string value " />
</parameters>
Run Code Online (Sandbox Code Playgroud)
使用webdeploy在某些字段上使用参数化时有一些约定.关注连接字符串,因此在引用web.config连接字符串时,最好遵守以下参数命名:
%NameOfYourConnectionStringAsInWebConfig%-Web.config Connection String
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2186 次 |
| 最近记录: |