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

Tho*_*ner 11 msbuild vs-web-site-project msdeploy publish-profiles

我认识到Web Deployment Projects不支持Visual Studio 2012.看完这篇文章后,我试着开始Publish Profiles工作.

安装Visual Studio Web发布更新后,我能够使用新的发布对话框发布网站项目和Web应用程序项目Visual Studio 2012.

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

MSBuild.exe MyWebs.sln /p:Configuration=Release /p:DeployOnBuild=true;PublishProfile=DeployToDirectory.pubxml
Run Code Online (Sandbox Code Playgroud)

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

任何的想法?

gre*_*kes 6

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

我认为问题在于,当您传入解决方案时,site.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>
    
    Run Code Online (Sandbox Code Playgroud)

这样做的是,当MSBuild开始构建解决方案文件时,它实际上在内存中使用扩展元metaproj创建了一个MSBuild文件.有一些方法可以让MSBuild将此文件保存到磁盘,以便您可以检查它,但这很容易在谷歌上找到.在第一步中创建的文件将注入到metaproj文件中,并在构建之后运行.

这是我能够获得新的发布配置文件的唯一方法,以便为我提供旧的Web部署项目中的输出.

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