11

我认识Web Deployment ProjectsVisual Studio 2012. 读完这篇文章后,我试着开始Publish Profiles工作。

安装Visual Studio Web 发布更新后,我能够使用Visual Studio 2012.

因为我们正在使用TFS 2010 Team Build我尝试通过MSBuild参数使用发布配置文件。但以下语句仅适用于发布 Web 应用程序项目。

MSBuild.exe MyWebs.sln /p:Configuration=Release /p:DeployOnBuild=true;PublishProfile=DeployToDirectory.pubxml

如果我尝试发布网站项目,则不会发生任何事情。我的网站项目的发布配置文件仅适用于新的发布对话框,Visual Studio 2012但在调用MSBuild.

任何想法?

4

2 回答 2

6

我在自己的环境中花了大约 3 周的时间来解决这个问题,并认为我有一个解决方案。

我认为问题在于,当您传入解决方案时,不会真正构建 website.publishproj 文件。我设法通过执行以下操作解决了这个问题:

  1. 请确保您使用的是新的 ASP.Net 和 Tools 2012.2 更新。在这里下载
  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 无关。这是我正在努力解决的问题,但到目前为止,并没有太多的快乐。

于 2013-02-28T14:45:55.073 回答
1

我遇到了与上面完全相同的问题。我删除了以下密钥,自动构建开始正常工作。

**<Content Include="website.publishproj" />**
于 2016-06-24T19:33:29.517 回答