【发布时间】:2009-05-22 15:13:16
【问题描述】:
我想在 Visual Studio 2008 中模拟 WCF 服务项目(或 ASP.NET Web 应用程序或...)上下文菜单中的“发布...”菜单项。我不需要将其发布到运行 IIS 实例,只是为了将 web 内容与 bin 文件夹放在某个本地目录上。有没有办法将它添加到构建后事件中,或者作为 MSBuild 任务添加?
【问题讨论】:
我想在 Visual Studio 2008 中模拟 WCF 服务项目(或 ASP.NET Web 应用程序或...)上下文菜单中的“发布...”菜单项。我不需要将其发布到运行 IIS 实例,只是为了将 web 内容与 bin 文件夹放在某个本地目录上。有没有办法将它添加到构建后事件中,或者作为 MSBuild 任务添加?
【问题讨论】:
这是答案,感谢这个链接:http://codingcockerel.co.uk/2008/05/18/how-to-publish-a-web-site-with-msbuild/ 所以,我刚刚修改了 web 应用程序的 .csproj 文件,并将其写入 AfterBuild 目标(已经存在):
<Target Name="BeforeBuild">
<Message Text="##############Before build##################" Importance="high"/>
<RemoveDir Directories="publish"
ContinueOnError="true"/>
</Target>
<Target Name="AfterBuild">
<Message Text="##############After build##################$(OutputFolder)" Importance="high"/>
<MSBuild Projects="$(ProjectName).csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="WebProjectOutputDir=publish\;OutDir=publish\bin\" />
</Target>
【讨论】:
您应该能够编写一个 xcopy 命令来将您需要的文件复制到正确的位置。 微软有一篇关于xcopy deployment for asp.net的文章。
一旦您拥有正确的命令,您就可以将其放入构建后操作中,以便在构建后自动触发。
另请参阅VS Post Build Event,了解有关仅复制 dll 输出的示例(注意使用 $(TargetPath) 和 $(TargetDir))。
【讨论】:
嗨, 你应该看看Web Deployment Projects。这些实际上是具有 Visual Studio GUI 支持的 MSBuild 文件。他们将预编译您的网站。您可以扩展这些行为以将生成的文件复制到您的 Web 服务器。
赛义德·易卜拉欣·哈希米
我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build
【讨论】: