Msbuild 将解决方案升级到.NET framework 4.5后,每日部署停止工作

Msbuild 将解决方案升级到.NET framework 4.5后,每日部署停止工作,msbuild,.net-4.5,msdeploy,webdeploy,Msbuild,.net 4.5,Msdeploy,Webdeploy,我们已经成功地使用TFS2010中的msdeploy每天更新我们的开发网站 在我们将应用程序从.NET Framework 4.0升级到4.5,将ASP.NET MVC从3.0升级到4.0之前,这一切都很正常。看起来一切都很好,部署了程序集,但实际上什么都没有部署 我已经研究了两天了,不知道为什么会发生这种情况,现在我已经没有想法了 下面是我的构建脚本的一部分,它在升级之前的工作方式 <MSBuild Projects="$(SolutionRoot)\My

我们已经成功地使用TFS2010中的msdeploy每天更新我们的开发网站

在我们将应用程序从.NET Framework 4.0升级到4.5,将ASP.NET MVC从3.0升级到4.0之前,这一切都很正常。看起来一切都很好,部署了程序集,但实际上什么都没有部署

我已经研究了两天了,不知道为什么会发生这种情况,现在我已经没有想法了

下面是我的构建脚本的一部分,它在升级之前的工作方式

<MSBuild
                Projects="$(SolutionRoot)\My.Web\My.Web.csproj"
                Properties="MvcBuildViews=False;AllowUntrustedCertificate=True;AuthType=Basic;Configuration=Dev;CreatePackageOnPublish=True;DeployIisAppPath=dev.myweb;DeployOnBuild=True;DeployTarget=MsDeployPublish;MSDeployPublishMethod=WMSvc;MsDeployServiceUrl=https://10.xxx.xxx.xxx:8172/MsDeploy.axd;UserName=UserName;Password=Password;UseMsdeployExe=True"
                ContinueOnError="False"
                />
--

更新2-- Microsoft似乎添加了一项检查,检查哪些类型的项目是可发布的项目,而我们的web应用程序不是,因为输出类型是类库。这在v4.0中有效,但显然不适用于v4.5

有人知道该怎么做才能让它再次发挥作用吗?我需要更改项目类型吗?先创建发布包,然后部署它?还是什么

--

还有谁有过同样的问题?您是否找到了共享的解决方案


MSBuild版本是否存在问题?

以下是我的建议。在VS2012中,我们可以使用“发布”对话框创建的发布配置文件轻松地自动发布web项目。在您的情况下,创建一个新的MSDeploy配置文件。创建该配置文件时,我们会将设置保存到Properties\PublishProfiles(或My Project\PublishProfiles for VB)下的文件中。此文件的扩展名为.pubxml。这些文件实际上是MSBuild文件,您可以根据需要对其进行自定义。您也可以继续使用“发布”对话框。密码将存储在.user文件中并进行加密,以便只有您才能解密

创建该配置文件后,如果要生成.sln文件,可以使用下面的命令发布

msbuild mysoln.sln /p:DeployOnBuild=true /p:PublishProfile=<ProfileName> /p:Password=<Password>
msbuild mysoln.sln/p:DeployOnBuild=true/p:PublishProfile=/p:Password=
如果您正在构建.csproj/.vbproj,那么您需要通过以下方式对此进行一些调整

msbuild mysoln.sln /p:DeployOnBuild=true /p:PublishProfile=<ProfileName> /p:Password=<Password> /p:VisualStudioVersion=11.0
msbuild mysoln.sln/p:DeployOnBuild=true/p:PublishProfile=/p:Password=/p:VisualStudioVersion=11.0
有关为什么需要VisualStudioVersion的详细信息,请参阅

一旦您这样做了,您将能够像以前一样构建+发布。仅供参考,我们已经在Azure SDK中为VS2010提供了所有这些新的web发布功能

在您的问题中,我还注意到您正在指定一些自定义属性,如MvcBuildViews。如果需要,现在可以将这些属性直接放在发布配置文件(pubxml文件)中。当然,如果这对您的场景更有意义,您仍然可以在命令行中传递它们

更多信息请访问


如果您看看我们为开发人员提供的自动化发布的方法,它是指定在构建期间要执行的属性和目标。这种方法的问题是,这限制了我们增强web发布体验的能力。在新版本中,我们引入了一个抽象,发布概要文件,它允许我们更改web发布管道的底层目标,您的自动化脚本将继续运行。希望从现在开始,您不必再次访问此问题。

我今天也遇到了同样的问题。我也在尝试使用未安装Visual Studio 2012的计算机自动部署.NET 4.5 web应用程序。然而,在我的情况中有几个细微的差别:我使用的是TeamCity而不是TFS,我们的解决方案是使用.NET 4.5创建的,而不是从.NET 4.0升级的

尽管如此,我还是描述了同样的问题。我将使用MSBuild构建web应用程序,并以大致相同的方式将其部署到IIS。这种方法在我的开发机器上运行良好。然而,当我在CI服务器上运行MSBuild时,它非常高兴地构建了web应用程序,但随后它停止了:没有错误,没有警告,什么都没有,只有一条消息表明构建成功。没有任何迹象表明有人试图将该应用程序部署到IIS

MSBuild似乎缺少执行web部署的相关目标。 修复方法是将文件夹
C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web
从我的开发计算机复制到CI服务器,并将其复制到CI服务器上与我的计算机上相同的位置

一旦我这么做了,MSBuild就抱怨需要WebDeploy3.0,但这很容易就解决了。在CI服务器上也安装了该应用程序之后,MSBuild很高兴地部署了该web应用程序。

要扩展:

一、 此外,还发现将
C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\
从本地计算机部署到生成服务器是修复方法

然而,真正的解决方案是将Microsoft Web Developer工具作为VS 2012安装的一部分进行安装,其中包括创建此文件夹。这解决了Ieppie的许可异议

我测试了这个

  • 删除
    C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\
  • 运行VS 2012安装程序并添加MS Web开发工具
  • 正在验证安装后,
    C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\
    是否已恢复

  • 您的构建日志中是否有任何类型的错误消息,或者部署只是在静默状态下没有发生?不幸的是,它只是在静默状态下没有发生。这将真正有助于获得某种反馈。生成文件中没有任何内容,即使有详细诊断。对msdeploy.exe的调用是否显示在msbuild输出中?否,它没有。请参阅我的更新,了解我自己的研究。如果您仍然需要帮助,请告诉我,以便我可以直接与您合作。谢谢。我
    msbuild mysoln.sln /p:DeployOnBuild=true /p:PublishProfile=<ProfileName> /p:Password=<Password> /p:VisualStudioVersion=11.0