C# 调试代码时不转换Web.config

C# 调试代码时不转换Web.config,c#,visual-studio,visual-studio-2015,app-config,slowcheetah,C#,Visual Studio,Visual Studio 2015,App Config,Slowcheetah,我有一个主Web.config文件,下面有一个Web.Test.config,Web.Development.config等 当我在测试配置上通过SlowCheetah预览转换时,它似乎正确地转换了值 当我将构建环境从开发切换到测试并尝试调试应用程序时,应用程序将在主Web.config文件中的任何值下运行(即,它不会转换任何内容) 如何使生成环境在调试时选择正确的配置,而不是总是使用基本Web.config文件?这可能吗?XML转换将仅在发布web应用程序时应用,而不会在生成过程中应用 这详细

我有一个主
Web.config
文件,下面有一个
Web.Test.config
Web.Development.config

当我在测试配置上通过SlowCheetah预览转换时,它似乎正确地转换了值

当我将构建环境从开发切换到测试并尝试调试应用程序时,应用程序将在主
Web.config
文件中的任何值下运行(即,它不会转换任何内容)


如何使生成环境在调试时选择正确的配置,而不是总是使用基本
Web.config
文件?这可能吗?

XML转换将仅在发布web应用程序时应用,而不会在生成过程中应用


这详细介绍了如何使用生成设置。

您可以在生成时转换
Web.config
。将此目标添加到
*.csproj
文件:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets" />
<Target Name="BeforeBuild">
    <TransformXml 
        Source="Web.Base.config" 
        Transform="Web.$(Configuration).config" 
        Destination="Web.config" />
</Target>

将原始配置保存在
Web.Base.config
中。这就足以启用转换,并且可以用于任何XML配置文件。再也不需要慢性子了


我将上述解决方案
构建前目标
与此方案相结合。使用
Web.Base.config
。谢谢@mike123-你能提供一个更详细的解释吗?看起来很有趣。我使用SlowCheetah的nuget包对web.config文件进行了处理。@arviman csproj文件需要在两个地方进行更改`。。。Web.config`这是最简单的解决方案,我做到了,效果很好。但是总有一个但是。。。当在Web.Base.config上启用“调试未启用”错误,但我的Web.config第一次为空时,我总是会收到该错误。通过选择“修改Web.config文件以启用调试”并单击“确定”,它将继续正常工作。如果Web.config具有最后一个运行版本,并且启用了调试,那么它可以正常工作。似乎在转换之前检查了调试启用。此解决方案工作正常。但另一个缺点是,Visual Studio/NuGet/等在
web.config
文件中更改的任何内容都需要手动移植到
web.Base.config
文件中。对于使用多个版本的VS的任何其他人,请将我的硬编码值替换为$(VisualStudioVersion)为medon工作,如果您不想按链接使用,则不必使用base,前提是应更新此链接以纠正双重转换问题。更新:从评论中的一个提醒中,我意识到在发布项目时Visual Studio两次转换XML也有问题。解决方法是向目标标记添加一个条件,如下所示: