Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 在调试期间将转换后的Web.config与IIS Express一起使用_Visual Studio_Visual Studio 2012_Iis_Msbuild_Web Config - Fatal编程技术网

Visual studio 在调试期间将转换后的Web.config与IIS Express一起使用

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文件。这段代码的工作

我有一个具有多个解决方案配置的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文件

<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。我还发现缺乏这种解决方案,因为它会导致风投流失和合并冲突。