Visual studio 在调试期间将转换后的Web.config与IIS Express一起使用
我有一个具有多个解决方案配置的Visual Studio应用程序。每个配置都有一个Web.config转换文件。例如,Web.Debug.config、Web.Release.config等 我们还有几个开发人员在这个项目上工作,他们有非标准的SQL Express实例名称,这是因为他们安装SQL Express的方式,而不是让他们不断编辑Web.Debug.config以在他们的环境中运行。我为他们中的每一个人都设置了一个解决方案配置,并在最底层添加了以下内容.csproj文件。这段代码的工作原理是触发在VS/obj/Debug DeveloperName/文件夹中创建Web.config和MyWebApp.dll.config 转换后的.config文件非常完美,但IIS Express仍然使用根Web.config(未转换) 有没有办法让IIS Express在本地调试时使用这些转换后的Web.config文件Visual studio 在调试期间将转换后的Web.config与IIS Express一起使用,visual-studio,visual-studio-2012,iis,msbuild,web-config,Visual Studio,Visual Studio 2012,Iis,Msbuild,Web Config,我有一个具有多个解决方案配置的Visual Studio应用程序。每个配置都有一个Web.config转换文件。例如,Web.Debug.config、Web.Release.config等 我们还有几个开发人员在这个项目上工作,他们有非标准的SQL Express实例名称,这是因为他们安装SQL Express的方式,而不是让他们不断编辑Web.Debug.config以在他们的环境中运行。我为他们中的每一个人都设置了一个解决方案配置,并在最底层添加了以下内容.csproj文件。这段代码的工作
<UsingTask
TaskName="TransformXml"
AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target
Name="AfterCompile"
Condition="exists('Web.$(Configuration).config')">
<!-- Generate transformed config in intermediate directory -->
<TransformXml
Source="Web.config"
Destination="$(IntermediateOutputPath)$(TargetFileName).config"
Transform="Web.$(Configuration).config"
/>
</Target>
使用web应用程序的web.Debug.Config对我们大多数人有效,但不是所有人都有效
必须有办法让IIS Express在本地调试期间使用转换后的Web.Debug-DeveloperName.config
转换后的Web.config是否必须复制到其他文件夹中?我以前遇到过这个问题,并找到了解决方案。不幸的是,解决方案并不是基于强制IIS使用不同的配置名称,但如果您按照以下步骤操作,您将只需选择配置并运行您的应用程序(我认为这正是您需要的)。Web.config转换将在生成之前进行,它将用transformad转换替换原始Web.config。然后,当部署(到本地IIS Express)开始时,它将已经使用转换后的部署 下面是我如何在一个项目(VS2012)中逐步做到这一点的:
存在的条件是在发布时防止重复转换
现在,每次运行构建时,您的Web.config都将根据所选配置进行转换。Martin,我明天将尝试此功能,并让您知道它是如何为我们工作的。谢谢你在这个老问题上的帮助!这会将其保存回目标,在我看来,在您更改配置时,转换将试图相互覆盖。因此,如果在一个变换中执行插入,则必须考虑在所有其他变换中删除该变换。虽然它可以生成转换后的web.config,但并不能完全解决问题。@e如果假设您使用SetParameters或Replace。我还发现缺乏这种解决方案,因为它会导致风投流失和合并冲突。