热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Web部署API——部署.NET4.5应用程序-WebDeployAPI-deploya.NET4.5application

Wereusingthe(almostcompletleyundocumented)publicAPIforWebDeploy3tocreatea.zippack

We're using the (almost completley undocumented) 'public API' for Web Deploy 3 to create a .zip package of our website and then sync it to a server:

我们正在使用(几乎完全没有文档)“公共API”用于Web部署3,用于创建我们网站的.zip包,然后将其同步到服务器:

DeploymentBaseOptions destinatiOnOptions= new DeploymentBaseOptions()
{
       UserName = //username,
       Password = //password,
       ComputerName = //a server
};

using (var deploymentObject = DeploymentManager.CreateObject(DeploymentWellKnownProvider.Package, "C:/MyWebsitePackage.zip"))
{
       deploymentObject.SyncParameters.Load(packageParametersFile); \\ contains some connection string information and nothing more.
       DeploymentSyncOptions syncOptiOns= new DeploymentSyncOptions();

       syncOptions.WhatIf = false;

       deploymentObject.SyncTo(destinationOptions, syncOptions);
}

This code worked perfectly until we installed .NET 4.5 on our production and build servers and upgraded the project we are deploying to 4.5 also. Now we're getting the following error:

这段代码运行得非常好,直到我们在产品上安装了。net 4.5,并构建服务器,并将正在部署的项目升级到4.5。现在我们得到了以下错误:

The application pool that you are trying to use has the 'managedRuntimeVersion' property set to 'v4.0'. This application requires 'v4.5'. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_APPPOOL_VERSION_MISMATCH.

您正在尝试使用的应用程序池的“managedRuntimeVersion”属性设置为“v4.0”。这个应用程序需要“v4.5开发”。了解更多:http://go.microsoft.com/fwlink/?LinkId=221672 ERROR_APPPOOL_VERSION_MISMATCH。

Our server definately has .Net 4.5 installed and the and the IIS web site application pool version is '.NET Framework v4.0.30319' (I know it says v4 but .NET 4.5 is an 'in-place' upgrade and replaces 4.0 DLLs with the new version number .30319).

我们的服务器已经安装了。net 4.5, IIS网站的应用程序池版本是'。NET Framework v4.0.30319'(我知道它说的是v4,但是。NET 4.5是一个“就地”升级,用新版本号为.30319替换了4.0 dll)。

It is possible to resolve this issue when deploying via MSBuild.exe command line (not by creating a package but by syncing directly to a server) by adding the /p:VisualStudioVersion=11.0 flag (which causes a different web application targets file to be used which somehow allows deployment of a .NET 4.5 application).

通过MSBuild部署时可以解决这个问题。通过添加/p:VisualStudioVersion=11.0标志(这会导致使用不同的web应用程序目标文件,以某种方式允许部署. net 4.5应用程序),exe命令行(不是通过创建包,而是通过直接同步到服务器)。

Does anyone know why Web Deploy API complains like this and how I can resolve this error in the same way as the MSBuild solution?

有人知道为什么Web部署API会这样抱怨吗?我如何能够像MSBuild解决方案一样解决这个问题?

2 个解决方案

#1


11  

Easiest would probably be just including IgnoreDeployManagedRuntimeVersion property from Microsoft.Web.Publishing.targets into the .csproj or as a parameter to MSBuild during /t:package step. Other option might be parameters.xml in project root to make managedRuntimeVersion overwriteable with MSDeploy parameters, or setting it directly in .zip in archive.xml as a predeployment step.

最简单的方法可能就是从Microsoft.Web.Publishing中包含ignoredeployemanagedruntimeversion属性。目标到.csproj中或作为MSBuild在/t:package步骤期间的参数。其他选项可能是参数。使用MSDeploy参数使managedRuntimeVersion可重写,或将其直接设置为.zip存档。作为预部署步骤的xml。

Update (too long to reply as comment):

更新(回复时间太长):

Well, it's less of a hack than what VS 2012 itself does. Do a publish to IIS from VS (the Web Deploy option) and the package it'll generate will ll be the content of temp folder and a parameters xml, not a zip you get when doing a generic packaging, and runtime version wil be set to 4 even though project is 4.5. IgnoreDeployManagedRuntimeVersion simply will omit it completely. If you do Web Deploy Package option from VS you'll get a zip with 4.5 in the archive.xml and if you try to manually import that VS outputted zip into IIS directly, you'll get the error popup with 4.0 vs 4.5 app pool error, same as the one you get from running msbuild /t:package and msdeploy :sync from command line. VS (devenv) doesn't do it "right", it quietly overwrites the project setting, and it's not MSDeploy's fault as version is set during compilation/packaging (MSBuild/devenv) not during deployment.

和2012年相比,这并不是什么大问题。做一个发布到IIS VS(Web部署选项)和包会产生将会临时文件夹和一个参数的xml的内容,不是一个压缩在一个通用的包装,和运行时版本会被设置为4,即使项目是4.5。ignoredeployedruntimeversion会完全省略它。如果你做Web部署包选项从VS,你将得到一个zip与4.5档案。如果您尝试手动将这个VS outputted zip直接导入到IIS中,您将会看到4.0 VS 4.5的应用程序池错误,就像您从命令行运行msbuild /t:package和msdeploy:sync的错误一样。VS (devenv)没有“正确”地做,它悄悄地覆盖项目设置,而且它不是MSDeploy的错误,因为版本是在编译/打包(MSBuild/devenv)期间设置的,而不是在部署期间设置的。

By the way, re API docs, yes they are practically nonexistent, but I find the command line docs tolerable (called Web Deploy not MSDeploy, eg http://technet.microsoft.com/en-us/library/dd569089.aspx and others) and mentally mapping those to dotPeek output helps a little.

顺便说一下,re API文档,它们实际上是不存在的,但是我发现命令行文档是可以接受的(称为Web部署而不是MSDeploy,如http://technet.microsoft.com/en-us/library/dd569089.aspx等),并且在思想上将它们映射到dotPeek输出会有一些帮助。

#2


4  

You can try adding this to your project:

您可以尝试将此添加到项目中:

True

推荐阅读
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • Asp.net MVC 中 Bundle 配置详解:合并与压缩 JS 和 CSS 文件
    本文深入探讨了 Asp.net MVC 中如何利用 Bundle 功能来合并和压缩 JavaScript 和 CSS 文件,提供了详细的配置步骤和示例代码,适合开发人员参考学习。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • springMVC JRS303验证 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
author-avatar
火星人平凡五哥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有