ASP.NET Web.config转换在安装程序中不起作用

Rya*_*ley 11 asp.net web-config visual-studio-2010

我正在使用Visual Studio .NET 2010中的ASP.NET项目并尝试使用Web安装项目创建MSI安装程序.我添加了项目的主要输出(似乎引入了相关的依赖项)和项目中的内容文件(它引入了Web.config和.svc文件).

问题是,不是应用XDT转换并使用Web.Release.config创建Web.config,它只是将Web.config,Web.Release.config和Web.Debug.config复制到安装程序中而不是做任何改造.

如何在创建安装程序之前应用Web.config转换?

fre*_*e0n 18

我发现了一个适合我的解决方法:

  1. 创建所需的配置(Dev,QA,Production等)和相关的Web配置转换.

  2. 使用记事本或其他文本编辑器,并在标记之前(项目文件末尾附近)在Web应用程序项目文件(.csproj文件)中包含以下内容:

    <Target Name="AfterBuild">
      <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="Web.Transformed.config" />
    </Target>
    
    Run Code Online (Sandbox Code Playgroud)

    不要在Web应用程序项目中包含Web.Transformed.config - 如果你这样做,visual studio会在每次构建之后提醒你这些变化非常烦人.

  3. 在Web设置项目中:选择内容文件 - >排除过滤器并添加Web.config(以及包含转换规则的所有其他Web.*.config文件).

  4. 在Web安装项目中:选择文件系统编辑器图标 - > Web应用程序文件夹 - >添加文件,然后在Web应用程序项目文件夹的根目录中选择Web.Transformed.config.

  5. 在同一屏幕中:右键单击Web.Transformed.config并将其重命名为Web.config

现在,您可以使用所选配置生成.msi文件,并转换根web.config文件!请注意,这不会影响子文件夹中的web.config文件.


Rya*_*ley 1

答案最终位于另一篇 SO 帖子上,当我在询问之前进行搜索时,我错过了该帖子,因为它不完全是我想要的:

MSBuild 脚本和 VS2010 发布应用 Web.config 转换

一位同事建议使用它将转换后的 Web.config 放置在项目bin目录中,并配置一个 Web 安装项目以从 bin 目录中获取 Web.config 并将其放入安装程序中。这最终成为最可行的解决方案,无需在 Visual Studio 中安装任何附加组件。