6

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

在我们升级到 VS2012,我们的应用程序从 .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"
                />

当升级开始并发现我的问题时,我们使用的是 Web Deploy 2.0,但现在我们已经升级到 Web Deploy 3.0。我还确保我们正在使用ToolsVersion="4.0".

更新 -

msbuild.exe /p:AllowUntrustedCertificate=True /p:AuthType=Basic /p:Configuration=Dev /p:CreatePackageOnPublish=True /p:DeployIisAppPath=dev.myweb /p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p: MSDeployPublishMethod=WMSvc /p:MsDeployServiceUrl=https://10.xxx.xxx.xxx:8172/MsDeploy.axd /p:UserName=UserName /p:Password=Password /p:UseMsdeployExe=True E:\Builds\1\ WhatEver\Daily_Build\Sources\My.Web\My.Web.csproj

现在我还尝试从我们的 TFS 运行上面的 msbuild 命令,但没有任何响应,这让我完全感到沮丧。TFS 的事件日志中没有任何内容,无论详细程度如何,日志文件中都没有任何内容......有什么想法吗?

它确实使用 msdeploy 直接工作,如下所示;

<Exec Command="&quot;C:\Program Files\IIS\Microsoft Web Deploy V3\MSDeploy.exe&quot; -verb:sync -source:contentPath=&quot;E:\Builds\1\WhatEver\Daily_Build\Sources\My.Web\My.Web.csproj&quot; -dest:contentPath=&quot;E:\dev.my.web&quot;,computername=https://10.xxx.xxx.xxx:8172/MsDeploy.axd,username=UserName,password=Password,authtype=Basic -allowUntrusted=True"
              ContinueOnError="false" />

--

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

任何人都知道该怎么做才能让它再次工作?我需要更改项目类型吗?预先创建发布包然后部署它?或者是什么?

--

还有其他人有同样的问题吗?你找到解决方案分享了吗?

MSBuild的版本可能有问题吗?

4

3 回答 3

6

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

创建该配置文件后,如果您正在构建 .sln 文件,则可以使用以下命令发布。

msbuild mysoln.sln /p:DeployOnBuild=true /p:PublishProfile=<ProfileName> /p:Password=<Password>

如果您正在构建 .csproj/.vbproj,那么您需要通过以下方式对其进行一些调整

msbuild mysoln.sln /p:DeployOnBuild=true /p:PublishProfile=<ProfileName> /p:Password=<Password> /p:VisualStudioVersion=11.0

有关为什么需要 VisualStudioVersion 的更多信息,请访问http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx

完成此操作后,您将能够像以前一样构建+发布。仅供参考,我们已经在 Azure SDK https://www.windowsazure.com/en-us/develop/net/#中为 VS2010 提供了所有这些新的 Web 发布功能。

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

更多信息请访问http://sedodream.com/2012/06/15/VisualStudio2010WebPublishUpdates.aspx

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

于 2012-10-30T07:08:04.987 回答
2

我今天有很多同样的问题。我也试图使用没有安装 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 就会抱怨需要 Web Deploy 3.0,但这很容易解决。在 CI 服务器上也安装了它之后,MSBuild 非常高兴地部署了 Web 应用程序。

于 2013-01-04T21:59:19.503 回答
0

扩展卢克伍德沃德的回答

我也发现C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\从我的本地机器部署到构建服务器是解决办法。

但是,真正的解决方法是将 Microsoft Web Developer Tools 作为 VS 2012 安装的一部分进行安装,这将创建此文件夹等。这解决了 Ieppie 的许可异议。

我测试了这个...

  1. 删除C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\
  2. 运行 VS 2012 安装程序并添加 MS Web 开发工具。
  3. 验证,安装后,C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\回来了。
于 2013-11-08T19:29:58.273 回答