Asp.net

我可以覆蓋 web.config 中的連接字元串以進行本地開發嗎?

  • August 21, 2013

我有一個 WebForms 項目,它有一個硬編碼到 web.config 中的連接字元串(用於調試 - web.Debug.config)。此連接字元串指向用於開發的數據庫伺服器。

我想執行該數據庫的本地副本,以便我的更改不會立即影響其他人。

我一直在做的是進入 web.config 並更新連接字元串以指向我的本地數據庫。這可行,但有點乏味,因為我必須記住排除 web.config 並且如果我撤消所有更改必須重新更新它。

因為,就像我說的,其他人正在使用這個解決方案,所以我想避免檢查任何內容或修改網路配置。

有什麼方法可以覆蓋 web.config 連接字元串以強制站點指向我的本地數據庫而不將任何內容簽入原始碼控制?

一種解決方案是使用配置轉換功能。

與 2012 年相比:

  1. 轉到建構-> 配置管理器
  2. 點擊活動解決方案配置列錶框並選擇“新建”。
  3. 輸入 local 作為新配置的名稱,然後點擊 Save。
  4. 確保將配置列下的值更改回調試或以前的預設值
  5. 右鍵點擊您的 Web.config 文件並選擇添加配置轉換,這將添加新創建的 web.local.config
  6. 在 web.local.config 中添加本地連接字元串轉換,類似於
<connectionStrings>
   <add name="DbConnection"
       connectionString="...Add Local Connection String..."
       xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

執行或調試項目時,請確保從綠色執行箭頭旁邊的列錶框中選擇本地配置。您只是不檢查 web.local.config

您可能能夠做的一件事是為您的連接字元串創建一個單獨的文件 - 您根本不會將其簽入原始碼控制。

根據您的東西的組織方式,您可能需要所有從事開發的人都做同樣的事情,並且根據您的發布/部署方式,這可能不適合您。

例如:

網頁配置

<configuration>
 <connectionStrings configSource="connectionstrings.config">
 </connectionStrings>
</configuration>

connectionstrings.config(不在原始碼管理中)

<connectionStrings>
 <add name="cs" connectionString="server=.;database=whatever;"/>
</connectionStrings>

每個開發者都可以選擇他們的本地機器指向哪個數據庫,只要connectionstrings.config文件不在原始碼管理中(將其添加到忽略列表中),沒有人會踩到對方的腳。

引用自:https://stackoverflow.com/questions/18344333