【问题标题】:Different connection string for each publish profile in VS2010VS2010中每个发布配置文件的不同连接字符串
【发布时间】:2011-03-05 04:13:37
【问题描述】:

是否可以根据选定的网络发布配置文件更改连接字符串(或仅更改服务器主机)?也许使用Web.config transform 或其他方式?

我的意思是配置文件“测试”将连接字符串“MyConnString”(在已发布的 Web.config 中)更改为 "Data Source='example.com,14333;...",并将配置文件“生产”更改为 "Data Source=./SQLExpress;..."

【问题讨论】:

    标签: asp.net visual-studio web-config web-config-transform msbuild-wpp


    【解决方案1】:

    这正是创建 Web 配置转换的目的。您在帖子中提供的链接有一个专门针对连接字符串执行此操作的演练。

    要开始转换,请在项目资源管理器中右键单击 web.config 文件并选择“添加配置转换”。假设您的解决方案配置中有 ConfigA 和 ConfigB,则会添加两个新文件,Web.ConfigA.config 和 Web.ConfigB.config。

    如果您打开这些新文件,除了一堆 cmets 之外,它们将是非常空的。它们实际上包含一个您可以使用的连接字符串示例 - 它看起来像这样:

    <connectionStrings>
      <add name="MyDB" 
        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
    

    取消注释此部分,并将“name”属性更改为基本 web.config 文件中连接字符串的名称。将“connectionString”属性设置为要用于 ConfigA 的实际值。所以,像这样:

    <connectionStrings>
      <add name="myConnectionString" 
        connectionString="Data Source=ConfigASqlServer;Initial Catalog=ConfigADatabase;Integrated Security=True" 
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
    

    对 Web.ConfigB.config 文件重复该过程,并使用所需的 ConfigB 连接字符串。

    现在,当您在 Visual Studio 中使用 Publish 命令时,它会自动转换基本 web.config 文件,并将“connectionString”属性设置为您在发布时所处的任何配置。

    【讨论】:

    • 我真的不知道如何使用 Web.config 转换。您能否建议一个简短的示例,如何将配置文件 A 的连接字符串更改为 CS_A 并将 B 的连接字符串更改为 CS_B?
    • 据我所知,SetAttribute 替换了整个属性值。是否可以仅替换字符串的一部分作为属性值?
    • 还有一个问题,请。转换取决于配置 - 调试、发布等。是否可以将其与发布配置文件链接 - Server1、Server2 等。我对所有配置文件使用相同的配置。或者我必须为每个配置文件创建单独的配置?但是在这种情况下如何链接配置文件和配置?
    • abatishchev,在 Web.Release.config、Web.Debug.config 中,您可能想要更新调试模式下的编译、错误和日志记录以及 Web.Staging.config、Web.Release.config 中的内容你可能有连接字符串和类似的东西。查看示例:github.com/kriasoft/site-sdk
    • 这解释了如何根据构建配置更改 Web.config。但是问题是如何根据发布配置文件而不是配置来执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    相关资源
    最近更新 更多