gpt4 book ai didi

.net - 在 msbuild/deploy 期间在 ci 中设置连接字符串的正确方法

转载 作者:行者123 更新时间:2023-12-04 17:46:43 24 4
gpt4 key购买 nike

我有一个 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" />
...

部署时显然不应该使用它。它应该使用我的部署 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>

覆盖来自我的 ci 服务器中的变量(大概是 msbuild 或 deploy 的某些部分)?

这是正确的,这是这样做的“正确”方式吗?我究竟与 msbuild/deploy 有什么关系才能实现这一点?

最佳答案

我们也在使用竹子进行 CI 和部署,我们正在做的是:

  • 将包含默认 Parameters.xml 的项目打包为 msdeploy 参数声明文件。
  • 为我们的各种环境维护 SetParameters.xml 文件。
  • 每晚构建打包项目。
  • 作为竹制品发布夜间包裹。
  • 在为特定的每晚构建进行部署时,使用 msdeploy 对这些包应用参数化。

  • 基本上,关于 msdeploy 的部署如下:
    msdeploy
    -verb:sync
    -source:package="NightlyPackage.zip"
    -dest:iisApp="YourIISHost/YourIISSite"
    -declareParamFile="YourEnvironementSetParameters.xml"

    每个项目包的 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>

    哪里 ConnectionString1是 connectionString 的名称。

    您的 YourEnvironementSetParameters.xml 将如下所示:
    <parameters>
    <setParameter name="ConnectionString1-Web.config Connection String" value="Your parametrized connection string value " />
    </parameters>

    在使用 webdeploy 的某些字段上使用参数化时有一些约定。考虑到连接字符串,因此在引用 web.config 连接字符串时,最好遵循以下参数命名:
    %NameOfYourConnectionStringAsInWebConfig%-Web.config Connection String

    关于.net - 在 msbuild/deploy 期间在 ci 中设置连接字符串的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32059324/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com