2016-11-24 275 views
0

考虑一组开发人员在ASP.net Web应用程序上工作。每个开发人员都希望拥有web.config的专用版本。 “私人”我的意思是,开发人员可以在任何时候自由地更改文件以适应他们的开发/测试需求,而不会影响其他团队成员,也不会结束源代码管理。每个开发人员的私人web.config

如何才能在Visual Studio 2015中实现这一目标?

到目前为止,我最接近的解决方案是从源代码管理中排除一个“私人”Solution Configuration与匹配的Web.config Transformation文件(“web.private.config”)。

但是这不是一个令人满意的解决方案,因为:

a。调试时不会自动运行转换(使用F5)。开发人员需要记住手动运行它。

b。转换的结果在主要的“web.config”文件中结束,该文件自然包含在源代码控制中。

回答

1

有无web.config中包括一个外部文件(通过configSource)和文件添加到.gitignore

+0

这很可能会解决我的问题。如果外部文件不在磁盘上,会发生什么情况?抛出的任何错误还是被忽略? – urig

+1

不能回想起ottomh,但https://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.configsource(v=vs.110)。aspx声明获取或设置定义关联配置节的包含文件的名称,**如果存在这样的文件。** –

1

正确答案是将您的本地开发站点托管在与Visual Studio解决方案不同的位置。然后,您可以使用publish profiles发布对该位置的更改并web.config transforms为每个开发人员维护一个单独的本地配置。每个开发人员都会使用不同的发布配置文件,该配置文件将自己的转换转换为web.config,并将转换后的web.config部署到发布位置。然后,您可以使用Visual Studio的“调试”>“附加到进程”选项将调试器附加到发布的站点。

+0

感谢。这是一种可行的方法,但必须每天多次重新部署和使用远程调试对于该团队来说不够方便。要调试的主流程需要在开发人员自己的机器上运行。 – urig

+0

我不是在谈论远程调试。在本地创建一个iis站点,从您的克隆的repo发布到它,然后附加一个本地调试器。我提到的“独立位置”不是一个单独的服务器,就在您本地文件系统的其他位置。如果您的本地开发人员使用相同的位置和相同的命名本地数据库,他们甚至可以共享相同的发布配置文件,这样更好。 – getsetcode

1

我认为在标准化开发环境中有很多价值,以便人们可以下载解决方案并运行它。

自定义的,长期的/永久的,开发人员特定的配置迟早会导致一个微妙的错误,将很难找到。

我对您的问题的解决方案是找出为什么需要永久性个人配置的原因,并看看是否可以消除这些环境特定的差异。

+0

我非常同意标准化开发环境通常是前进的方式。在这种情况下,团队会产生阻力,因为系统由多个独立的Web服务组成,团队成员在调试时不需要在他们的机器上启动所有这些服务。 – urig

+1

@Urig如果团队不想启动所有服务,因为它很困难,那么它可以变得更简单(launch_all.bat?)。 – mayu