代码之家  ›  专栏  ›  技术社区  ›  Ryan M Jordan

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

  •  11
  • Ryan M Jordan  · 技术社区  · 14 年前

    我正在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转换?

    3 回复  |  直到 14 年前
        1
  •  17
  •   fre0n    12 年前

    我找到了一个 workaround 这对我很有用:

    1. 创建所需的配置(dev、qa、production等)和相关的web配置转换。

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

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

      不要在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文件。

        2
  •  1
  •   Community noseratio    7 年前

    答案最终被放在了另一个帖子上,当我在问之前搜索时,我错过了这个帖子,因为它不完全是我想要的:

    MSBuild Script and VS2010 publish apply Web.config Transform

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

        3
  •  0
  •   JBrooks    14 年前

    您必须创建一个部署项目(我认为这是一个单独的下载),然后您的Web安装项目将部署项目的预编译输出作为输入。一件很好的事情是,您可以让它在web.config构建时更改它的一个部分。