【问题标题】:Setting web.config properties during build (not through publishing)在构建期间设置 web.config 属性(不是通过发布)
【发布时间】:2011-05-06 15:48:38
【问题描述】:

我正在尝试使用 Web 设置项目部署应用程序。我遇到的问题是 web.config 文件永远不会被转换。根据这个post,转换仅在发布期间发生是设计使然。如果构建安装项目又调用其他程序集构建命令,如何让 web.config 属性正确更新?

【问题讨论】:

    标签: c# asp.net-mvc msbuild


    【解决方案1】:

    我通过添加一个虚拟 web.Template.config 文件(如 post 中建议的 Andriy K 之类的)来修复它,然后在我的 BeforeBuild 事件中调用 TransformXml,如下所示:

    <Target Name="BeforeBuild">
    <TransformXml Source="$(WebFolderName)Web.Template.config"
                  Transform="$(WebFolderName)Web.$(Configuration).config"
                  Destination="$(WebFolderName)Web.config" />
    </Target>
    

    【讨论】:

      【解决方案2】:

      最简单的选择是安装命令行 xslt 实用程序并在项目的构建后操作中启动它。您还可以使用众多 MSBuild XSLT 任务之一并将其添加到 .csproj 文件中。 (这只是一个 MSBuild 脚本文件;在底部附近已经有 cmets 解释如何自定义构建。)

      您也可以在设置项目的预构建操作中执行上述任一步骤,而不是在 Web 应用程序的构建后操作中执行。如果您还使用发布向导,则第二个选项可能会更好,因为它不会干扰发布者中正在进行的正常 XSLT 转换。

      Microsoft XSLT 命令行实用程序:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2fb55371-c94e-4373-b0e9-db4816552e41&displaylang=en

      示例 MSBuild XSLT 任务:http://www.arlt.eu/blog/2007/10/01/msbuild-xslt-task/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-18
        • 1970-01-01
        • 2018-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多