问题
I have a main Web.config
file, and under that there is a Web.Test.config
, Web.Development.Config
etc.
When I preview the transformation via SlowCheetah on the Test config, it appears to transform the values correctly.
When I switch my build environment from Development to Testing and try to debug the application, the application runs under whatever values are in the main Web.config
file (i.e. it is not transforming anything).
How do I make the build environment pick the correct config when debugging rather than just always using the base Web.config
file? Is this possible?
回答1:
You can transform Web.config
on build. Add this target to *.csproj
file:
<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>
Keep the origin configuration in Web.Base.config
. It's enough to enable transformation and it works for any XML config file. SlowCheetah is no longer needed at all.
http://sebnilsson.com/a5410281/asp-net-transform-web-config-with-debug-release-on-build/
回答2:
XML transformations will only be applied when you publish web apps and not during build.
This blog post details a work around using build settings.
来源:https://stackoverflow.com/questions/35559289/web-config-is-not-transformed-when-debugging-code