在构建期间设置web.config属性(而不是通过发布)

时间:2011-05-06 15:48:38

标签: c# asp.net-mvc msbuild

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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

您还可以在安装项目的预构建操作中执行这些步骤中的任何一个,而不是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/