在构建网站项目时发布配置文件不起作用

时间:2013-01-18 09:04:36

标签: msbuild msdeploy web-site-project publish-profiles

我发现Web Deployment Projects不支持Visual Studio 2012。阅读this article后,我尝试让Publish Profiles工作。

安装Visual Studio Web Publish Update后,我可以使用Visual Studio 2012中的新发布对话框发布网站项目和Web应用程序项目。

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

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

如果我尝试发布网站项目没有任何反应。我的网站项目的发布配置文件仅适用于Visual Studio 2012中的新发布对话框,但不适用于调用MSBuild

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

我花了大约3个星期在自己的环境中与此搏斗,并认为我有一个解决方案。

我认为问题在于,当您传入解决方案时,网站.publishproj文件从未真正构建过。我设法通过执行以下操作来解决此问题:

  1. 请确保您使用的是新的ASP.Net和Tools 2012.2更新。 Download Here
  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>
    
  3. 这样做是当MSBuild开始构建解决方案文件时,它实际上在内存中创建了一个扩展名为 metaproj 的MSBuild文件。有一些方法可以让MSBuild将此文件保存到磁盘,以便您可以检查它,但这很容易在谷歌上找到。在第一步中创建的文件将注入 metaproj 文件,并在构建后运行。

    这是我能够获得新的发布配置文件的唯一方法,以便为我提供旧的Web部署预测所带来的输出。

    警告字:如果要在TFS构建中使用它,那么在这种情况下,您将在放置位置获得一个_PublishedWebsites文件夹,与您在pubxml文件中指定的PublishUrl无关。这是我试图解决的问题,但到目前为止,并没有太多的快乐。

答案 1 :(得分:1)

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

**<Content Include="website.publishproj" />**