2016-08-23 70 views
0

我有一個C#web項目。我打開配置管理器,對於「Active solution configuration」,我選擇了Visual Studio 2013使用錯誤的配置文件

在新窗口中,我鍵入了名稱(Dev),並沒有複製任何設置。我檢查了「創建新的項目配置」。

我右鍵單擊我的Web.config並選擇「添加配置變換」。按照預期,Web.Dev.config顯示在web.config下縮進。

我的web.config中包含錯誤的數據庫值:

<connectionStrings> 
    <add name="PdxContext" connectionString="Data Source=badServer; Initial Catalog=badDB; Integrated Security=true; MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

我Web.Dev.config,部分地包含有效的DB值:

<connectionStrings> 
    <add name="PdxContext" connectionString="Data Source=.\sql2012; Initial Catalog=test; Integrated Security=True" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
</connectionStrings> 

...但是當我選擇開發配置和命中運行,站點使用web.config文件運行,而不是web.dev.config(它試圖連接到主機「badServer」上名爲「badDB」的不存在的數據庫)。

如果我右鍵單擊web.dev.config並選擇「預覽轉換」,則轉換後的Web.config會正確顯示它將使用web.dev.config中的connectionStrings值。

哦,並且在用於「Dev」的Active Solution Configuration的配置管理器中,配置列具有「Dev」。

有什麼想法?

+0

我也有內置調試配置完全相同的問題。它忽略了Web.Debug.config中的值 –

+0

我想也許它只在部署時才起作用。但是,那麼多個開發人員如何在同一個項目上工作,但使用不同的配置如何協同工作呢?我想他們必須擁有自己的web.config副本,並在每次執行更改web.config的SVN更新時用他們的副本覆蓋web.config?這看起來很笨拙。 –

回答

0

該解決方案可以在這裏找到: https://stackoverflow.com/a/3994081

如果你正在使用Visual Studio 2013還看到馬蒂價格對那個帖子的回覆,「對於任何與此在VS的更高版本的掙扎,我不得不改變< Target Name =「CopyWebTemplateConfig」BeforeTargets =「Build」>到< Target Name =「CopyWebTemplateConfig」BeforeTargets =「PrepareForBuild」>然後所有工作都完成了。