zoukankan      html  css  js  c++  java
  • ClickOnce发布时报错:Cannot publish because a project failed to build

    .net程序开发、测试完成后,还有一个很重要的步骤--部署,作为用户,自然是希望越傻瓜化、越人性化越好。.net自带的部署选项有以下几种:

    1、 Xcopy 实用工具

    2、Copy Web工具

    3、发布 Web站点

    4、部署项目(又分为四类:创建合并模块;为客户应用程序创建安装程序;为 Web 应用程序创建安装程序; 以及为基于智能设备(Compact Framework)的应用程序创建安装程序。还可以创建 cab文件。)

    5、 ClickOnce

    前四种方式应用很广泛,本文主要介绍ClickOnce的一次使用过程。

    ClickOnce 是一种允许应用程序自动升级的部署技术。应用程序发布到文件共享、Web站点或 CD 这样的媒介上。之后, ClickOnce 应用程序就可以自动升级,而无需用户的干涉。ClickOnce 还解决了安全权限问题。一般情况下,要安装应用程序,用户需要有管理权限。而利用 ClickOnce,用户只要有运行应用程序所需的最低权限,就可以安装和运行。
    首先,我们了解一下ClickOnce与普通的windows inStaller程序有何区别:

        ClickOnce Windows Installer
    应用程序的安装位置 ClickOnce 应用程序缓存 Program Files 文件夹 
    给多个用户安装
    安装共享文件
    安装驱动程序  否 
    安装到 GAC 中   否 
    在“启动”组中添加应用程序  否 
    在菜单中添加应用程序  否  
    注册文件类型
    访问注册表  否。有访问 HKLM 的 Full Trust 权限
    文件的二进制修补
    根据需要安装程序集

    在一些情况下,使用 Windows Installer 比较好,但 ClickOnce 也适用于许多应用程序。 ClickOnce 应用程序会显示在“添加/删除程序”控制面板选项上,这与其他安装的应用程序一样。一个主要区别是用户可以选择卸载应用程序或回退到以前的版本。ClickOnce在 ClickOnce 应用程序缓存中保存以前的版本。

    关于Winows Installer的使用,本文略过。下面介绍我的一次ClickOnce的部署过程:

    1、创建主程序,并测试成功!

    邀月工作室

    邀月工作室

    邀月工作室

    2、创建web程序,并发布主程序到web目录。

    web程序的设置,注意部署到IIS中。

    邀月工作室

    邀月工作室

    主程序的发布选项:
    邀月工作室

    邀月工作室

    邀月工作室

    邀月工作室

    是否创建一个桌面图标:
    邀月工作室

    邀月工作室

    邀月工作室

    邀月工作室

    此时客户可以从这个地址在线安装程序了。web程序目录下生成三个文件:
    邀月工作室

    邀月工作室

    3、从指定web路径安装程序

    邀月工作室
     

    邀月工作室
     


     

    4、升级安装程序、回滚安装程序

    首先修改主程序,并发而新版本,如下:
    邀月工作室
    邀月工作室

    发布后用户再次运行主程序,或访问publish.htm时,会收到如下提示:
    邀月工作室

    升级成功后,界面:
    邀月工作室

    此时,控制面板,如下:
    邀月工作室

    此时,选择“更改/删除”可以选择前一个版本或彻底删除,如果选择前一个版本,如下:
    邀月工作室
    邀月工作室

    邀月工作室

    5、问题出现:

    在项目-右键-属性-发布--发布向导时,提示错误: Cannot publish because a project failed to build.

    奇怪!尝试解决方法如下:

    一、单独生成项目、重新生成项目、清理项目,删除所有obj及bin目录,均试过,可以生成项目,但发布时出错,如上提示。

    二、怀疑是IIS权限问题,给web项目文件夹network service账号所有权限。

    三、IE-选项-内容中,清除证书。

    四、主动修改了一个新版本,仍然出错。

    google成了我的救命稻草,终于找到一条类似的信息,说是用右键直接发布即可。终于成功!如下图:

    不正确的方法:

    邀月工作室

    正确的方法:
    邀月工作室

    邀月工作室

    六、问题分析:

    发布选项,其实是调用了vs2010自带的dos命令mage.exe或它的UI程序:mageUI.exe,它主要用来修改相应的application选项。

    关于MageUI的说明,请参阅MSDN:http://msdn.microsoft.com/zh-cn/library/xhctdw55%28VS.80%29.aspx

    我们可以在程序-Microsoft Visual Studio 2010-Visual Studio Tools-Visual Studio Command Prompt (2010)出现的命令状态中输入mageui.exe,得到如下界面:

    邀月工作室

    其实上面出错的界面,和成功的两个界面,应该都是调用Mage.exe或mageUi.exe,只不过可能是调用时参数不一致而导致出错,这应该是Vs2010 RTM的一个bug。(附:ClickOnce 应用程序有两个基于XML 的清单文件,其中一个是应用程序的清单,另一个是部署清单。这两个文件描述了部署应用程序所需的所有信息。应用程序清单包含的应用程序信息有需要的权限、要包括的程序集和其他从属文件。部署清单包含了应用程序的部署信息。应用程序清单的位置信息包含在部署清单中。)

    需要注意:

    1、应用程序缓存:用 ClickOnce 发布的应用程序不能安装在 Program Files 文件夹中,它们会放在应用程序缓存中,应用程序缓存位于当前用户的 Document’s and Settings文件夹的 Local Settings子文件夹下。控制部署的这个功能,可以把应用程序的多个版本同时放在客户机上。如果应用程序设置为在线运行,就会保留用户访问过的每个版本。对于设置为本地运行的应用程序,会保留当前版本和以前的版本。 所以,把 ClickOnce 应用程序回退到以前的版本是一个非常简单的过程。如果用户进入“添加/删除程序”控制面板选项,所显示的对话框将允许删除 ClickOnce 应用程序或回退到以前的版本。管理员可以修改清单文件,使之指向以前的版本。之后,下次用户启动应用程序时,会检查是否更新版本。应用程序不是查找要部署的新程序集,而是恢复以前的版本,但不需要用户的干涉。这也是ClickOnce部署的一个优势。

    2、ClickOnce可定制的内容还是简单了点,如果需要更为精致的用户对话界面,还是需要自定义Windows Installer来实现,或通过第三方的InstallShield等专业工具。但它提供了一种界面友好的自我管理机制,几乎实现了真正的无接触部署(No Touch Deployment)。

  • 相关阅读:
    sendmail 出现 My unqualified host name的解决办法
    激活密钥许可证VMware Workstation Pro 15 激活许可证
    Cent OS 7 VNC 安装
    java插件提示安全设定高,不能加载解决方法
    红帽订阅注册注意事项
    微信小程序设计总结
    npm包开发(whale-makelink)
    Sketch网页截屏插件设计开发
    轻量级服务器部署方案 -(阿里云CenOS+宝塔)
    Sketch webView方式插件开发技术总结
  • 原文地址:https://www.cnblogs.com/downmoon/p/1824371.html
Copyright © 2011-2022 走看看