用于调试的 VS 2010 Web.config 转换

Posted

技术标签:

【中文标题】用于调试的 VS 2010 Web.config 转换【英文标题】:VS 2010 Web.config transformations for debugging 【发布时间】:2011-02-28 17:49:26 【问题描述】:

我是新的 VS 2010 Web.config 转换的粉丝。我将此功能用于部署目的,并想知道是否也可以将它们用于调试。

我想在 IDE 中使用它们:我想创建不同的构建配置(带有链接的转换配置);选择其中之一;在 IDE 中启动网站并以这种方式调试不同的配置。

【问题讨论】:

你能描述得更详细一点吗?除了在发送到生产环境时删除 debug 属性的默认设置之外,您将如何使用它们进行调试? 编辑了我的问题。希望它的描述性足够。 啊,我不认为这是可能的(它正在使用文件系统中的 web.config,在任何时候都不会移动它),这种情况下的 xdt 专门用于部署,而不是在本地使用...虽然您可以部署到本地目录并在那里在 IIS 上调试... 【参考方案1】:

更新

感谢第 3 方插件SlowCheetah,现在可以实现。 Scot Hanselman 有一个blog post 关于它。


原始回复:

不幸的是,web.config 转换似乎只影响发布站点和构建部署包。

在我们的场景中,我们有两个开发组,一个可以访问多个环境(内部),另一个可以访问单个环境(离岸)。我们有一段时间内部团队需要直接针对 QA 进行调试,而海外团队仍处于锁定状态(因此他们的 web.config 必须指向开发环境)。

我们希望每个环境有 1x 构建配置,并且能够选择与环境匹配的构建配置进行调试——据我所知,这是您的问题.

【讨论】:

我得出了同样的结论。你的回答让我有机会结束这个问题:-) 真是太糟糕了......正在寻找同样的功能。我想主要在我的本地 sql 实例上运行,但最好选择不同的配置并能够应用我的转换来连接到我们用于 DEV 服务器的 SQL 框.. 已经在我的 DEV 转换中找到了。跨度> 即使使用 SlowCheetah 也不可能做到这一点。 它完全按照你的方式工作,只在发布网站和构建部署包时起作用。 这不适用于本地调试 - 没有部署 - 请参阅 Alp 的答案以及指向:ledtalks.posterous.com/webconfig-transformations-when-debugging【参考方案2】:

如果有人好奇为什么他们还没有构建这个功能,来自: http://forums.asp.net/p/1532038/3711423.aspx

“当网络应用程序运行时,项目根文件夹下的 web.config 将被 asp.net 获取,不幸的是我知道它处于源代码控制之下。我当然理解让运行时使用转换后的网络所带来的清洁.config 来自临时文件夹;但是,asp.net 运行时对 vs projec 结构一无所知,它完全基于目录结构。使用备用路径也可能会中断,因为子文件夹下的 web.config 期望继承设置上一级目录。”

【讨论】:

在这篇文章的第 2 页末尾有一个解决方案,它将 MSDEPLOY 作为构建事件运行,然后 XCOPY 将转换后的配置置于调试 web.config 之上作为构建后事件。唯一的问题是,如果您有源代码控制下的解决方案,您将在每次构建时检查 web.config :(【参考方案3】:

我找到了一个不涉及任何第三方工具的替代解决方案:http://ledtalks.blogspot.in/2011/09/webconfig-transformations-when.html。我只为 web.config 文件尝试过这个

【讨论】:

我喜欢这个解决方案,非常感谢 JAMES COLEMAN(传奇人物和先生)。 此外,任何人在使用此解决方案在本地对 web.config 进行写访问时遇到问题...如果您访问该博客,我添加了一个简单解决方案的评论。克里斯 感谢克里斯的赞美和推荐。我发现这篇文章是因为我正在查看我的谷歌分析,并且有很多访问来自这里。 美丽优雅的解决方案。如果我能投票更多,我会的。 博文中的图片不见了,谁能更好地解释解决方案?

以上是关于用于调试的 VS 2010 Web.config 转换的主要内容,如果未能解决你的问题,请参考以下文章

在 VS2010 和 TFS 中管理团队的 web.config

VS2010新的web.config配置中如何使用applicationSettings?

ASP.net 用VS2010+SQL server做一个新闻发布系统

vs2010 调试快捷键

在 VS2010 或 VS 2008 中打开现有的 MakeFile 项目进行调试

调试/发布环境web.debug.config和web.release.config不存在