2011-06-03 59 views
0

我想知道是否有辦法在個人程序員的配置文件中創建設置。我遇到的情況是,有些程序員希望打開設置,有些想讓它們關閉。我們的配置文件在SVN源代碼控制中,所以使用共享配置文件意味着我們總是覆蓋其他設置。我們正在爲ASP.NET Web應用程序項目執行此操作。我最初的想法是在源代碼控制之外創建一個配置文件,但我該如何讓每個程序員都擁有自己的副本?個人程序員在配置文件中的設置

這是一些進一步的說明。我們在主web.config文件中有一個指向基於環境的文件的鏈接(例如,用於dev,staging和live的文件)。

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <appSettings configSource="EnvironmentConfigs\appSettings.config" /> 
    ... 
</configuration> 

裏面的appSettings.config文件,必須設置用於開發,分期和生活。我想要做的是創建另一個名爲user.config的配置文件,並將個人編程器設置在那裏(當然不是在源代碼控制中)。爲了讓Visual Studio從這個新文件中讀取,我需要做些什麼?

回答

0

從源代碼管理中刪除配置文件並在其上設置svn:ignore屬性。然後它不會被提交。然後,還要創建另一個文件,例如Production.web.config,其中包含生產值,因此您仍然保留這些文件。

這就是我所做的!

+0

如果您的配置文件沒有使用正確的名稱簽入源代碼,那麼如果您有配置項運行,則會出現問題。 – CaffGeek 2011-06-03 16:01:46

+0

將Production.web.config文件或Testing.web.config文件作爲後期構建過程的一部分複製到Web.config。編輯:當然,僅用於測試/ CI環境。 – 2011-06-03 16:14:54

+0

對。我們已經這樣做了。我們的web.config文件中有一個鏈接,用於環境應用程序設置 – Halcyon 2011-06-03 17:53:23

2

設置文件不需要在SVN中進行版本控制,或者每個開發人員可以選擇他們的設置文件以不被覆蓋或提交。查看SVN設置文件,甚至可以將其添加爲全局忽略。

+0

有問題,如果你有CI運行但如果你的配置文件沒有簽入適當的名稱來源。 – CaffGeek 2011-06-03 16:01:20

+0

@Chad我敢肯定有辦法告訴CI忽略設置文件... – Fosco 2011-06-03 16:03:49

+0

你不希望它雖然忽略它,你想使用的應該部署到開發/測試服務器中的一個。這是應該檢查的來源。 – CaffGeek 2011-06-03 16:52:07

0

不要提交配置文件更改,除非它們是要發送給每個人的新設置。

否則,結賬,編輯並將其退出。當你獲得最新版本時,你會知道是否有其他人添加/修改了文件。您在哪個時間將您的設置與其更改合併,但將其保留在您的計算機上。

+0

合併時可以做更多工作。 – Halcyon 2011-06-03 19:22:27

+0

怎麼回事?在這裏很棒。源代碼控制包含我們想要在開發中運行的配置。任何對dev配置的更改都會使用正確的名稱進行檢入,並且我們的構建服務器會將更改部署到dev。開發人員特定的更改,永遠不會簽入。當配置文件發生更改時,您花費一兩分鐘合併一個文件,然後繼續。但是您永遠不需要擔心重命名,並確保您部署了正確的配置文件。 – CaffGeek 2011-06-03 19:41:58

+0

您是否從簽入過程中排除配置文件?你如何更新源代碼管理中的配置文件? – Halcyon 2011-06-07 16:48:08

0

我們不將應用程序配置文件存儲在源代碼管理中。相反,在源代碼控制中,我們存儲配置文件模板,通常命名爲web.config.template。每個開發人員都有自己的「值」文件,通常名稱爲web.config.values-bem。每個開發者還設置一個post-commit鉤子,它接受模板文件並對其進行處理,用指定值文件中的值替換「變量」。

例如,我的配置值文件中有如下定義:

DB_SERVER=.\SQLEXPRESS 

在web.config.template文件,這存在:

connectionString="[email protected][email protected][DEV1];Persist Security Info=True;[email protected][email protected];User [email protected][email protected];[email protected][email protected];Enlist=false;Max Pool Size=100" /> 

所以當過程運行(一個python腳本),它用我的值文件中的設置替換@[email protected]的所有實例。模板腳本允許在模板中指定默認值,因此您可以對模板文件進行更改,而不會打破其他開發人員的環境(通常)。 (默認值在變量旁邊,方括號中。)

此解決方案允許每個開發人員都擁有自己的設置,但仍有一個版本控制的web.config.template文件,並且每個開發人員都可以避免「施加」其他開發人員的配置更改。

這非常適用於我們。如果你想使用相同的方案,你可以在我的github上查看它的代碼:https://github.com/bmontgomery/FileReplace。如果您對此感興趣,我可以幫助您使用鉤子腳本。

+0

我想用這種方法,但其他程序員不那麼熱衷的想法...... – Halcyon 2011-06-03 19:21:25

+0

爲什麼不呢?他們的理由是什麼? – 2011-06-04 20:20:33

+0

他們想要單獨的文件內的個人設置。他們不希望執行任何查找和替換。 – Halcyon 2011-06-06 18:42:31

1

每個開發人員可以建立自己的構建congifuration在Visual Studio。此構建配置應鏈接到構建腳本,該構建腳本專門替換開發人員所需的Web.Config/App.Config/*。Config文件部分。

這樣,當他們要進行更改配置文件,以適應自己,他們應該改變在構建腳本的替代品,而不是直接更改配置文件。

本文介紹了一些我所提到的要點:http://www.diaryofaninja.com/blog/2010/05/09/automated-site-deployments-with-teamcity-deployment-projects-amp-svn

相關問題