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