2012-03-19 41 views
2

我们的项目使用自定义xml配置文件,该文件当前位于项目下,名称为.xml文件,带有复制到输出:始终。目前,它存在于存储库中。在mercurial和VS中配置文件共享

的问题是,每个开发人员使用每个自己的数据库(和每个自己的配置文件),因此,最好我们需要有不同的配置文件,我们不希望它们提交到外部存储库。

有时候配置文件的格式发生变化,我们所有人都需要更新它。另外,我们还有一个构建服务器,它被配置为在更新源代码库并构建它之前清理文件夹,因此默认文件(为生成服务器配置)应该包含在存储库中。

的问题是,有时一个开发建设忘记时检查出XML配置的它的本地副本,和他自己的配置文件去存储库和制动很多东西。有什么办法来改进这个模式,所以我们不需要每次提交时都从提交文件中删除配置文件?

回答

1

我的解决方案是从VCS中排除app.config以防止意外提交。我们已经创建了一个app.example.config,它被签入。预生成事件验证app.config文件是否存在,以及它是否在编译代码库之前将.template复制到.config文件。这确保了构建服务器有一个工作配置文件,其中包含所有环境的基本设置。

例中为项目配置预生成事件:

REM copy .example files to .config files if needed 
IF NOT EXIST "$(projectDir)\App.Config" IF EXIST "$(projectDir)\app.example.config" COPY "$(projectDir)\app.example.config" "$(projectDir)\App.Config" 
IF NOT EXIST "$(projectDir)\Web.Config" IF EXIST "$(projectDir)\Web.example.config" COPY "$(projectDir)\Web.example.config" "$(projectDir)\Web.Config" 
IF NOT EXIST "$(projectDir)\ConnectionStrings.Config" IF EXIST "$(projectDir)\ConnectionStrings.example.config" COPY "$(projectDir)\ConnectionStrings.example.config" "$(projectDir)\ConnectionStrings.Config" 
IF NOT EXIST "$(projectDir)\Local.Config" IF EXIST "$(projectDir)\Local.example.config" COPY "$(projectDir)\Local.example.config" "$(projectDir)\Local.Config" 
+0

能否请您发布此预生成事件?我不是很熟悉msbuild任务 – Archeg 2012-03-19 13:04:30

+0

不是我希望看到的,但它工作(我以为你已经使用任务来复制文件)。谢谢! – Archeg 2012-03-19 14:17:53

0
  1. 配置在回购协议包含数据的TeamCity
  2. 开发商有MQ和补丁在MQ-堆栈默认XML转换为本地
  3. 更改的基本xml需要编辑(重定位)修补程序并删除冲突