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

Per*_*Per 6 msbuild msdeploy tfs2010 webdeploy .net-4.5

我们成功地使用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"
                />
Run Code Online (Sandbox Code Playgroud)

启动升级并且我的问题发现我们使用的是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 \无论\ Daily_Build的\ Sources\My.Web\My.Web.csproj

现在我也尝试从我们的TFS运行上面的msbuild命令,没有任何响应让我完全失望.在TFS的事件日志中没有任何内容,日志文件中没有任何内容,无论冗长...有什么想法吗?

它确实可以使用msdeploy directy,如下所示;

<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" />
Run Code Online (Sandbox Code Playgroud)

-

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

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

-

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

MSBuild版本可能存在问题吗?

Say*_*imi 6

这是我推荐的.在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>
Run Code Online (Sandbox Code Playgroud)

如果您正在构建.csproj/.vbproj,那么您需要通过以下方式稍微调整一下

msbuild mysoln.sln /p:DeployOnBuild=true /p:PublishProfile=<ProfileName> /p:Password=<Password> /p:VisualStudioVersion=11.0
Run Code Online (Sandbox Code Playgroud)

有关为什么需要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发布体验的能力.在新版本中,我们引入了一个抽象,即发布配置文件,它允许我们更改Web发布管道的基础目标,并且您的自动化脚本将继续运行.希望从这一点开始,你不必重新访问这个问题.