我在自己的环境中花了大约 3 周的时间来解决这个问题,并认为我有一个解决方案。
我认为问题在于,当您传入解决方案时,不会真正构建 website.publishproj 文件。我设法通过执行以下操作解决了这个问题:
- 请确保您使用的是新的 ASP.Net 和 Tools 2012.2 更新。在这里下载。
在名为 after.MyWebs.sln.targets 的解决方案文件旁边创建一个文件。该文件应如下所示:
<!--?xml version="1.0" encoding="utf-8"?-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Deploy Website" AfterTargets="Build">
<Message Text="Starting Website deployment" Importance="high">
</Message>
<MSBuild Projects="$(MSBuildProjectDirectory)\MyWebs\website.publishproj"
BuildInParallel="true" />
</Target>
</Project>
这样做的目的是,当 MSBuild 开始构建解决方案文件时,它实际上会在内存中创建一个扩展名为metaproj的 MSBuild 文件。有一些方法可以让 MSBuild 将此文件保存到磁盘,以便您可以检查它,但这很容易在 google 上找到。在第一步中创建的文件被注入到metaproj文件中,并在构建之后运行。
这是我可以获得新的发布配置文件的唯一方法,以提供我过去通过旧的 Web 部署项目获得的输出。
警告:如果您想在 TFS 构建中使用它,那么在这种情况下,您将在放置位置获得一个 _PublishedWebsites 文件夹,该文件夹与您在 pubxml 文件中指定的 PublishUrl 无关。这是我正在努力解决的问题,但到目前为止,并没有太多的快乐。