为什么我的Web应用程序在调试运行时不使用Web.Debug.config?

时间:2011-07-05 07:21:09

标签: .net asp.net web-config

  

可能重复:
  Use Visual Studio web.config transform for debugging

我有一个带有三个web.config转换的asp.net应用程序。

enter image description here

我在想当我启动调试运行时(选择了调试模式的F5),Web.Debug.config中编写的转换将会应用..但是它不起作用..使用的Web.config是“Base”之一。

你会告诉我:“转型是不对的”..但它们是因为当我使用调试版本配置进行部署(右键单击/发布)时: enter image description here

渲染的web.config有修改!所以它可以工作,但调试运行使用基础web.config ..我可以配置一个地方吗?

1 个答案:

答案 0 :(得分:8)

编辑:在SO上可以找到更精确的方法: Use Visual Studio web.config transform for debugging

我曾评论说我也想要这个功能,但还没有办法做到这一点。然后决定快速谷歌。

讨论here引导我找到cmac3095提供的一种可能的解决方案:

  

我并没有那么多麻烦MSBUILD   但我的解决方案是添加一个自定义   目标是XXX.Web.csproj   转换然后添加自定义   “建设后”活动   调用MSBUILD的XXX.Web.csproj   (执行转换)和   XCOPY复制转换后的   web.config超过原始版本。一边   效果是,因为我们有TFS,它   始终包含最后一个web.config   那被改造了,可以是一个   有点用尽(你一直在想   你的其他开发者有   覆盖你的设置 - 在...   从某种意义上说,他们有; - )....但是   当然,你的设置在   你使用的web.xxxxxx.config   转变。好的,足够的解释   这是你做的:复制和粘贴   这个进入XXXX.Web.csproj就好了   高于评论的“目标   Name =“BeforeBuild”元素......

<UsingTask TaskName="TransformXml"
 AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"
 />    <Target Name="Transform"> 
     <MakeDir Directories="obj\$(Configuration)"
 Condition="!Exists('obj\$(Configuration)')"
 /> 
     <TransformXml Source="Web.Config" Transform="Web.$(Configuration).config"
 Destination="obj\$(Configuration)\Web.config"
 StackTrace="true" />    </Target>   
 <Target Name="AfterBuild">   
 </Target>
  

就是这样。在下一个构建   你的xxx.web.config,post build   将运行自定义目标和   生成转换后的web.config。该   XCOPY将覆盖现有的。