[一个小问题]Mainfest配置文件的version问题小结
问题起源自己安装好产品的新build,然后用自己本地编译出来的其中一个DLL去替换到产品中,本来以为可以正常执行,但是却发现这个新DLL无法被Load,无法被使用。
从Event Viewer里找到了问题描述:
----------------------------------------------------------------------------------------------------
Activation context generation failed for "C:\Program Files\Trend Micro\Messaging Security Agent\instDeferredCustomAction.dll".Error in manifest or policy file "C:\Program Files\Trend Micro\Messaging Security Agent\Microsoft.VC80.MFC.MANIFEST" on line 4. Component identity found in manifest does not match the identity of the component requested.
Reference is Microsoft.VC80.MFC,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053".
Definition is Microsoft.VC80.MFC,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762".
Please use sxstrace.exe for detailed diagnosis.
----------------------------------------------------------------------------------------------------
解决方法:
只需到产品安装目录下找到Microsoft.VC80.MFC.MANIFEST文件,然后修改其version从762变为4053即可
问题原因:
我们的产品由visual studio 2005开发,依赖于Microsoft Visual C++ 2005(用户的电脑需安装vcredist_x86.exe,vcredist_x64.exe),我在本地开发时VC的版本是4053(原因是我安装了Visual C++ 2005 SP1 KB971090的安全更新,VC生成的manifest中引用的ATL/MFC/CRT库的版本从8.0.50727.762变成了8.0.50727.4053),而出build的机器其编译时依赖的VC版本是762(http://www.microsoft.com/zh-cn/download/details.aspx?id=5638),所以导致运行时出现此问题。
知识扩展:
1. Event Viewer对此定性为error,描述为SideBySide错误,什么是SideBySide?
从Visual Studio 2005开始,微软创造了SideBySide DLL,创造这种DLL的初衷是许多程序可能会使用不同version的DLL,如果同一个DLL被替换为新version的DLL,可能会导致程序Crash(称之为DLL Hell),SideBySide DLL正为解决这一问题,也就有了Mainfest文件(与可执行程序或DLL相关)来指明哪个version的DLL可以被执行。Mainfest是个XML的描述文件,对于每个DLL有DLL的Manifest文件,对于每个应用程序Application也有自己的Manifest。
目前对于这个问题的理解至此,希望今后遇到问题都能及时查找原因。不断进步:)
参考:
1. Working with Visual Studios C++ manifest files
http://stackoverflow.com/questions/588712/working-with-visual-studios-c-manifest-files
2. manifest的作用
http://www.cppblog.com/kyelin/archive/2010/10/09/129163.html
3. 终结VC2005分发包版本问题
http://www.cnblogs.com/mixiyou/archive/2010/02/09/1663620.html
Best Regards
[一个小问题]Mainfest配置文件的version问题小结的更多相关文章
- 关于SVN配置文件的一个小例子
1 背景假设 厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计.销售,并在北京.上海各设立了一个办事处.对于工作日志,原先采用邮件方式发给经理,但是这种方式 ...
- 使用PixiJS做一个小游戏
PixiJS PixiJS使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库. 官方 ...
- 先定一个小目标,自己封装个ajax
你是否发现项目中有很多页面只用到了框架不到十分之一的内容,还引了压缩后还有70多kb的jquery库 你是否发现项目中就用了两三个underscore提供的方法,其他大部分的你方法你甚至从来没有看过 ...
- java操作xml的一个小例子
最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...
- 一个小应用的dbcp和c3p0配置实例
以下是一个小应用的数据库连接池配置,包括DBCP和C3P0的配制方法 因为是小应用,完全不涉及访问压力,所以配置上采取尽量节约数据库资源的方式 具体要求如下:初始化连接数为0连接不够,需要新创建时,每 ...
- Python 练习冊,每天一个小程序
Python 练习冊,每天一个小程序 说明: Github 原文地址: 点击打开链接 Python 练习冊.每天一个小程序.注:将 Python 换成其它语言,大多数题目也试用 不会出现诸如「 ...
- mysql url 连接配置的一个小坑。 工作中不会遇到。 学习的时候会
<property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> & ...
- 微信小程序开发——打开另一个小程序
微信小程序打开另一个小程序,有两种方法:1.超链接:2.点击按钮. 全局配置: 跳转到其他小程序,需要在当前小程序全局配置中配置需要跳转的小程序列表,代码如下: App.json { ... &quo ...
- 一个小框架,基于rx_retrofit2_mvp
离职在即,也没什么事情做,就鼓捣了一下.任意搭建了一个小框架,看看以后能不能搞出自己的一个model,好了.不说别的,上代码 1,先上依赖库 compile 'io.reactivex:rxandro ...
随机推荐
- 小B的询问 莫队分块
题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...
- django内置服务器
单进程多线程的 多线程用来并发,各个线程之间不会阻塞,每个线程对应一个连接
- C++的一种业务分发方案(另类的工厂模式)
在C++中,传统的业务分发.总要写一大串的switch-case,并且每次添加新业务时.都要在原有的switch-case里加一个分支,这就违反了设计模式中的开放封闭原则. 下面这样的方案,就全然去除 ...
- 解决浏览器location.href重定向失效问题
在[location.href]赋值语句后,添加页面刷新代码[location.reload(true)],参数为[true]这样就等价于F5刷新页面了. 需要注意的是:不能把[location.re ...
- 1005 继续(3n+1)猜想(25 分)
卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时 ...
- 75th LeetCode Weekly Contest Rotate String
We are given two strings, A and B. A shift on A consists of taking string A and moving the leftmost ...
- 停止mysql服务
停止mysql服务windowsnet stop mysql (service mysqld stop win10不能用) linux /etc/init.d/mysqld stop
- Tcpdump命令抓包详细分析
1 起因 前段时间,一直在调线上的一个问题:线上应用接受POST请求,请求body中的参数获取不全,存在丢失的状况.这个问题是偶发性的,大概发生的几率为5%-10%左右,这个概率已经相当高了.在排查问 ...
- ymPrompt.js消息提示组件
转载:https://www.cnblogs.com/linzheng/archive/2010/11/15/1878058.html 使用说明: 1.在页面中引入ymPrompt.js.如:< ...
- js中url有中文的转码方法
转载:https://www.cnblogs.com/chiangfai/p/6073000.html