在构建过程中设置web.config属性(不通过发布)

问题描述:

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

我通过追加虚设web.Template.config文件等安德烈K的这种建议的post,然后调用固定它TransformXml在我的BeforeBuild事件期间像这样:

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

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

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

微软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/