c# - Visual Studio 中开发人员特定的 app.config/web.config 文件

标签 c# visual-studio configuration web-config app-config

我们有几个 .NET 项目,我们将某些设置存储在配置文件中。

现在每个开发人员都会有自己的配置文件,略有不同(不同的连接字符串连接到本地数据库,不同的 WCF 端点等)

目前我们倾向于检查 app/web.config 文件并修改它们以满足我们的需要。

这会导致很多问题,因为有时有人会在从 TFS 获取最新版本时检查自己的设置或松散自定义配置.

遇到这种情况你是怎么处理的?或者你根本就没有这个问题?

最佳答案

我们使用的系统结合了此页面上的几个现有答案,并借鉴了 this suggestion by Scott Hanselman .

简而言之,我们所做的是拥有一个通用的 app.config/web.config,并将大部分特定设置放在各个文件中,正如此处其他答案所建议的那样。例如对于我们的 SMTP 设置,app.config 包含

<system.net>
  <mailSettings>
    <smtp configSource="config\smtp.config" />
  </mailSettings>
</system.net>

此文件源代码管理中。但是,像这样的单个文件不是:

<?xml version="1.0" encoding="utf-8" ?>
<smtp deliveryMethod="Network">
  <network host="127.0.0.1" port="25" defaultCredentials="false" password="" userName ="" />
</smtp>

不过故事还没有到此结束。新开发人员或全新源安装怎么样?大部分配置不再受源代码控制,手动构建所需的所有 .config 文件很痛苦。我更喜欢至少可以立即编译的源代码。

因此我们确实在源代码管理中保留了一个版本的 .config 文件,名为 .config.default 文件。因此,新的源代码树看起来像这样:

alt text

不过,对于开发人员来说并没有任何用处,因为对于 Visual Studio 它们只是无意义的文本文件。因此,批处理文件 copy_default_config.bat 负责从 .config.default 文件创建一组初始的 .config 文件:

@echo off
@REM Makes copies of all .default files without the .default extension, only if it doesn't already exist. Does the same recursively through all child folders.
for /r %%f in (*.default) do (
    if not exist "%%~pnf" (echo Copying %%~pnf.default to %%~pnf & copy "%%f" "%%~pnf" /y)
)
echo Done.

该脚本可以安全地重新运行,因为已经拥有 .config 文件的开发人员不会覆盖它们。因此,可以想象将此批处理文件作为预构建事件运行。 .default 文件中的值对于新安装可能不完全正确,但它们是一个合理的起点。

最终每个开发人员得到的是一个配置文件文件夹,看起来像这样:

alt text

这可能看起来有点令人费解,但绝对比开发人员互相踩脚趾的麻烦要好。

关于c# - Visual Studio 中开发人员特定的 app.config/web.config 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3707749/

相关文章:

visual-studio - Visual Studio 2013 中的 WSE 2.0 Web 服务客户端

visual-studio - 包含OpenSSL作为静态库,但它仍在寻找DLL吗?

c# - 随机选择文档

c# - 为什么我们需要在 Html.BeginForm 中使用@using

c# - 删除转义序列不起作用

c++ - 我可以让 VC++ Intellisense 忽略一些它认为无效的东西吗?

angular - 如何为 Angular 项目重用构建

java - 从 log4j1 迁移到 log4j2

.net - 如何为多个构建配置选择不同的app.config

c# - 在多值列上写入不带引号的 CSV