bAN*_*bAN 10 .net asp.net web-config
我有一个带有三个web.config转换的asp.net应用程序.
我正在考虑当我启动调试运行(选择了调试模式的F5)时,Web.Debug.config中写入的转换将适用..但它不起作用..使用的Web.config是"Base".
您将告诉我:"转换不正确"..但它们是因为当我使用调试版本配置进行部署(右键单击/发布)时:
渲染的web.config有修改!所以它工作,但调试运行使用基础web.config ..有一个地方,我可以配置?
编辑:可以在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将覆盖现有的.