MSDeploy - 无法将 .NET v4.5 程序包部署到 v4.0 应用程序池



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

您尝试使用的应用程序池具有 "托管运行时版本"属性设置为"v4.0"。此应用程序 需要"v4.5"

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

不幸的是,TC和VS(2013)的变化使水变得浑浊,因此我无法确定导致问题的原因。

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

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

<DeployManagedRuntimeVersion>v4.0</DeployManagedRuntimeVersion>

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

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

<IgnoreDeployManagedRuntimeVersion>True</IgnoreDeployManagedRuntimeVersion>

将其添加到此元素的正上方有助于提高可读性:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
感谢

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

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

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

更新

忽略我在下面的评论。 虽然它让我通过了部署,但当我实际尝试运行 Web 应用程序时,我得到了一个503 Service Unavailable。 我通过将 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%system32inetsrvappcmd.exe但不在 PATH 上,如以下链接所示:

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新