【问题标题】:ASP.NET Web.config transformation won't work in installerASP.NET Web.config 转换在安装程序中不起作用
【发布时间】:2010-06-07 20:12:09
【问题描述】:

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

【问题讨论】:

    标签: asp.net visual-studio-2010 web-config


    【解决方案1】:

    我找到了一个适合我的workaround

    1. 创建所需的配置(开发、QA、生产等)和相关的 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 设置项目中: 选择 Content files -> Exclude Filter 并添加 Web.config(以及所有其他包含转换规则的 Web.*.config 文件)。

    4. 在 Web 设置项目中: 选择文件系统编辑器图标 -> Web 应用程序文件夹 -> 添加文件 并在您的 Web 应用程序项目文件夹的根目录中选择 Web.Transformed.config。

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

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

    【讨论】:

    • 我可以确认这种方法有效。文末也有详细说明:forums.asp.net/p/1596387/4050004.aspx
    • 在第 2 点中您建议不要添加 Web.Transformed.config 但在第 4 点中您要求添加 Web.Transformed.config 文件。这两点相互矛盾,否则我错过了一些东西。谁能帮我详细了解一下步骤。
    • @santoshkumarpatro 区别在于 Web 应用程序项目与 Web 设置项目。对于第 2 点,您希望从 Web 应用程序项目排除 Web.Transformed.config。对于第 4 点,您希望在 web 设置项目包含 Web.Transformed.config。
    【解决方案2】:

    答案最终位于另一个 SO 帖子上,我在询问之前搜索时错过了该帖子,因为这不是我想要的:

    MSBuild Script and VS2010 publish apply Web.config Transform

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这可能是答案;但是,我没有管理员权限(因为它是一台工作计算机),所以我无法确定它。\ 我最终在 .csproj 文件中添加了一个条目来执行转换 - 我将发布详情很快。
      猜你喜欢
      • 2014-10-06
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多