【发布时间】:2011-05-06 15:48:38
【问题描述】:
我正在尝试使用 Web 设置项目部署应用程序。我遇到的问题是 web.config 文件永远不会被转换。根据这个post,转换仅在发布期间发生是设计使然。如果构建安装项目又调用其他程序集构建命令,如何让 web.config 属性正确更新?
【问题讨论】:
标签: c# asp.net-mvc msbuild
我正在尝试使用 Web 设置项目部署应用程序。我遇到的问题是 web.config 文件永远不会被转换。根据这个post,转换仅在发布期间发生是设计使然。如果构建安装项目又调用其他程序集构建命令,如何让 web.config 属性正确更新?
【问题讨论】:
标签: c# asp.net-mvc msbuild
我通过添加一个虚拟 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>
【讨论】:
最简单的选择是安装命令行 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/
【讨论】: