2013-08-20 23 views
6

我有一個WebForms項目,它有一個連接字符串硬編碼到web.config中(對於Debug - web.Debug.config)。此連接字符串指向用於開發的數據庫服務器。我可以重寫web.config中的連接字符串以進行本地開發嗎?

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

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

因爲,正如我所說,其他人正在使用這種解決方案,我想避免檢查任何東西或修改網絡配置。

有沒有什麼辦法可以重寫web.config連接字符串來強制網站指向我的本地數據庫而不檢查任何內容到源代碼控制?

回答

3

在本地計算機上創建一個SQL ALIAS

單擊開始運行並在本地計算機上鍵入「cliconfg.exe」。這將幫助您在本地機器上創建一個SQL別名。在web.config上連接到實時數據庫,但在您的機器上創建一個SQL Alias,它將重定向到您的本地數據庫。完成此操作後,當您發佈程序時,它將自動連接到實時數據庫,但是當從本地計算機運行時,它將連接到本地數據庫,而無需更改任何代碼。

+0

對於我的情況,這是我一直在尋找。這對其他用戶來說並不明顯,如果你不瞭解它,可能會感到困惑,所以我當然可以看到其他用戶的優點,但這適用於任何試圖訪問開發者sql server的本地項目是完美的爲我的情況。謝謝! –

6

你可能可以做的一件事是爲連接字符串提供一個單獨的文件 - 你根本不會檢查它到源代碼控制中。

根據你的東西是如何組織的,你可能需要大家誰在做開發,做同樣的事情,而且這取決於你如何做你的發佈/部署,這可能不是爲你工作。

例如:

的Web.config

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

connectionstrings.config(未在源控制)

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

每個開發人員可以選擇哪個數據庫對本機指向,並且只要connectionstrings.config文件不在urce控制(將其添加到忽略列表中),沒有人會踩到彼此的腳。

9

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

VS 2012:

  1. 轉到建設 - >配置管理器
  2. 單擊活動解決方案配置列表框中,選擇 「新建」。
  3. 輸入本地作爲新配置的名稱,然後單擊保存。
  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

+3

如果你只是簡單地構建/運行,Web.config轉換不起作用,你需要PUBLISH(愚蠢的MS)。 http://stackoverflow.com/a/14416118/56621 – Alex

+0

有關配置轉換的另一個愚蠢的事情是,他們重寫主web.config文件,所以你必須解決這個與你的源代碼管理?必須是更好的方法 –

相關問題