2

在将 TeamCity 从一台服务器迁移到另一台服务器并切换到 Visual Studio 2013 后,我们的构建在使用 MSDeploy 将 TC 构建的 .zip 包推送到 IIS 时失败。

您尝试使用的应用程序池将“managedRuntimeVersion”属性设置为“v4.0”。此应用程序需要“v4.5”

这是一个奇怪的错误,因为我的 IIS 服务器安装了 .NET 4.5 并且已经愉快地运行和部署了数周,并且 4.0 应用程序池将运行 4.5 目标应用程序。

不幸的是,TC 和 VS (2013) 的变化弄得一团糟,所以我无法确定是什么导致了这个问题。

注意:我们的 TC 服务器上只有 Visual Studio 2012,因为我在 MSDN 上并且可以提前访问 2013。这可能是罪魁祸首,但并没有使问题变得不那么奇怪。

4

4 回答 4

4

打开您的.csproj文件并设置以下元素:

<IgnoreDeployManagedRuntimeVersion>True</IgnoreDeployManagedRuntimeVersion>

在此元素上方添加它有助于提高可读性:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

感谢https://stackoverflow.com/users/1769923/abhishikt-n-jain在这里回答这个鲜为人知的配置设置:

升级到 .NET 4.5 后 MSBuild 部署失败

如果有人知道为什么会发生这种情况,请随时添加答案。

于 2013-11-07T11:05:32.050 回答
4

我宁愿根本不禁用 .NET 运行时版本检查(使用 IgnoreDeployManagedRuntimeVersion),而是通过 DeployManagedRuntimeVersion 隐式设置运行时版本:

<DeployManagedRuntimeVersion>v4.0</DeployManagedRuntimeVersion>

更多细节:http ://techblog.dorogin.com/2013/11/deploying-45-projects-with-webdeploy.html

于 2013-11-11T23:07:34.753 回答
0

更新

无视我下面的评论。虽然它让我通过了部署,503 Service Unavailable但当我真正尝试运行 Web 应用程序时,我得到了一个。managedRuntimeVersion我通过将属性设置回 v4.0 来取消此更改并将其添加IgnoreDeployManagedRuntimeVersion到我的项目中。然后部署成功并且应用程序正常工作。哑的...


这发生在我在 Windows Server 2008 R2 SP1 机器上安装 .NET Framework 4.5.1 之后(作为升级 Powershell 的一部分)。

Windows Server 2008 上的 IIS 用户界面没有提供将managedRuntimeVersion属性设置为 v4.5 的选项,即使在安装了该版本之后也是如此。appcmd但是,正如@3boysdad 的回答所示,这可以使用实用程序在命令行上完成。

appcmd是管理 IIS 站点、应用程序、应用程序池等的命令行等效项。它位于%systemroot%\system32\inetsrv\appcmd.exe但不在 PATH 上,如下链接所述:

http://www.iis.net/learn/get-started/getting-started-with-iis/getting-started-with-appcmdexe#HowToUse

我认为修改你的项目(通过IgnoreDeployManagedRuntimeVersionorDeployManagedRuntimeVersion属性)是次优的。应用程序池应设置为使用 v4.5,而在 Windows Server 2008 上执行此操作的唯一方法是使用该appcmd实用程序。@3boysdad 的答案应该是公认的答案。

于 2016-02-19T18:51:20.903 回答
-1

在寻找同样的问题时发现了这个宝石。

appcmd set apppool /apppool.name: <your app pool> /managedRuntimeVersion:v4.5

这将需要在您的 \System32\inetsrv 目录中执行。

于 2014-03-10T18:50:02.127 回答