gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:37:34 25 4
gpt4 key购买 nike

我们有几个 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com