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

bAN*_*bAN 10 .net asp.net web-config

可能重复:
使用Visual Studio web.config转换进行调试

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

在此输入图像描述

我正在考虑当我启动调试运行(选择了调试模式的F5)时,Web.Debug.config中写入的转换将适用..但它不起作用..使用的Web.config是"Base".

您将告诉我:"转换不正确"..但它们是因为当我使用调试版本配置进行部署(右键单击/发布)时: 在此输入图像描述

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

Smu*_*202 8

编辑:可以在SO上找到更精细的方法: 使用Visual Studio web.config转换进行调试

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

这里的讨论让我想到了cmac3095提供的一种可能的解决方案:

我没有那么多麻烦MSBUILD,但我的解决方案是向执行转换的XXX.Web.csproj添加自定义目标,然后向调用MSBUILD的XXX.Web.csproj添加自定义"Post build"事件(执行转换)和XCOPY将转换后的web.config复制到原始文件上.一个副作用是,因为我们有TFS,它总是包含最后转换的web.config,这可能有点用处(你一直认为你的其他开发人员已经覆盖了你的设置 - 从某种意义上说,他们有; - )....但是,当然,您的设置位于转换中使用的web.xxxxxx.config中.好的,足够的解释.
以下是您的操作:将其复制并粘贴到您注释掉的"Target Name ="BeforeBuild"元素上方的XXXX.Web.csproj中...

<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>
Run Code Online (Sandbox Code Playgroud)

而已.在xxx.web.config的下一个版本中,post build将运行自定义目标并生成转换后的web.config.XCOPY将覆盖现有的.