【问题标题】:How can I let each dev have their own, private, web.config?如何让每个开发人员拥有自己的私有 web.config?
【发布时间】:2015-08-14 04:39:46
【问题描述】:

考虑一群开发 ASP.net Web 应用程序的开发人员。每个开发者都有一个私有的数据库副本,运行在他们私有的本地数据库引擎上,因此每个开发者都有不同的连接字符串。

目前,每个开发人员都使用他们的连接字符串修改了 web.config,有时这些修改之一会提交到源代码管理,这并不好。

如何在源代码管理中同时拥有默认的 web.config 并让每个开发人员拥有自己的私有副本,而这些副本会被源代码管理忽略? (如果可能的话,我更喜欢避免使用 web.config 转换文件的解决方案,因为它们的语法有点不透明)。

【问题讨论】:

  • 您使用什么源代码控制,以及哪个版本?
  • 不要让他们检查 web.config 问题已解决 ;)
  • 为什么“用他们的连接字符串”?您是否尝试过对每个人都使用类似“localhost\DBName”(或您的数据库所需的任何连接字符串)之类的东西?
  • 最好确保所有开发人员的连接字符串都相同。 . 通常可以解决问题。
  • @JoshStevens:我曾经认识一位具有相同“愿景”的开发人员。每个月都会犯几次错误。 ;-)

标签: c# .net configuration web-config


【解决方案1】:

有几件事可以提供帮助。

  1. 强制执行所有开发人员都遵循的约定。例如,所有开发人员机器上的 Sql Server 实例名称、数据库名称等都应该相同,这样您就不需要更改它们。此外,任何文件位置类型的设置都应始终与项目或某个系统位置相关。总体而言,我们的想法是保留您的设置,以便开发人员无需检查和更改任何内容。

  2. 在某些情况下,可能无法执行上述操作。在这种情况下,您可以将这些更改设置移动到不同的文件,并使用“configSource”在您的 web.config 中引用该文件。然后开发人员可以根据他们的本地机器环境更改该设置文件。同样在这种情况下,您希望确保团队中并非每个人都可以签入该文件,以防止不必要的覆盖。

希望对你有帮助。

【讨论】:

  • 我不认为configSource= 会在这里解决问题。如果我将设置放在外部文件中并且从不提交该文件,则源代码管理将丢失设置,并且应用程序在克隆时将无法运行。我正在寻找在源代码管理中具有一组默认配置设置,单个开发人员可以覆盖源代码管理。
  • 我想我没有明确提到,你将使用默认值的外部设置文件检查到源代码管理。但随后将该文件的签入限制为团队中的少数人。
  • 德克萨斯州。是否可以限制 SVN 中文件的每个用户/组级别的签入?那么 git 呢?
【解决方案2】:

在我们的项目中,我进行了设置,以便默认配置在源代码管理下,因为 web.config.templateweb.config 本身被忽略。然后开发人员只需将web.config.template 复制为web.config;并进行他们需要的任何本地编辑。

手动操作很简单,但也可以使用 MSBuild 自动复制(仅当 web.config 不存在时才复制)。

如果你有一个 CI/构建服务器,那么你可能还想采用 web.config.template 包含用于 CI 构建的配置的方法 - 这样你的 CI 构建就被简化了,因为它总是可以覆盖 @ 987654326@ 和web.config.template

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-10
    • 2011-08-22
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    相关资源
    最近更新 更多