一分钟明确 VS manifest 原理

什么是vs 程序的manifest文件

manifest 是VS程序用来标明所依赖的side-by-side组建,如ATL, CRT等的清单。

为什么要有manifest文件

一台pc上,用一组建往往会有不止一个版本号(c:/windows/winsxs或系统文件夹下),程序在载入的时候,不知载入哪个,于是manifest文件来指明。

manifest在哪儿,怎样创建。

假设用VS开发,能够Set通过porperty->configuration properties->linker->manifest file->Generate manifest To Yes来自己主动创建manifest来指定系统的和CRT的assembly版本号。

除了这样产生外部的manifest file,还有embedded manifest信息能够被写到所生成的二进制文件内

Set porperty->configuration properties->manifest tool->embed manifest  To Yes

对于xp及早前的windows版本号,external manifest会比embed manifest有更高的优先级,但对于windows server及后的版本号,相反。

为什么我的manifest明明指明

name="Microsoft.VC80.DebugCRT" version="8.0.50608.0",

可是用depends.exe工具却发现引用的是8.00.50727.42呢?

由于在C:/WINDOWS/WinSxS/Policies下,有publisher configuration file也叫policy文件,如8.0.50727.42.policy文件对依赖做了重定向:

<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" processorArchitecture="ia64" publicKeyToken="1fc8b3b9a1e18e3b"/>
<bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0" newVersion="8.0.50727.42"/>
</dependentAssembly>

指明"8.0.41204.256-8.0.50608.0"都被定向到8.0.50727.42。这是assembly提供商如MS对低级版本号bug的修正而提供的解决方法。除此之外,你也能够用application config文件来对本程序做assembly的重定向。如在你bin local目录下 yourbin.extention.config:

<configuration>
       <windows>
           <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
        <assemblyIdentity type="win32" name="Microsoft.VC80.ATL" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
        <bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0" newVersion="8.0.50727.42"/>
          </dependentAssembly>
          <dependentAssembly>
        <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/></assemblyIdentity>
        <bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0" newVersion="8.0.50727.42"/>
          </dependentAssembly>
       </assemblyBinding>
       </windows>
</configuration>

怎样决定我程序manifest信息所指定的assembly版本号信息?

在assembly头文件里,assembly的版本号信息被指明了。如crtassem.h中

#ifndef _CRT_ASSEMBLY_VERSION
#define _CRT_ASSEMBLY_VERSION "8.0.50608.0"
#endif

能够改动8.0.50608.0为8.0.50727.42以产生你想要的manifest信息。

若我想将我的程序公布为独立程序集(isolated application),不去依赖目标pc的系统assembly,该怎么办?

带上全部依赖的assembly和对应的manifest文件(c:/windows/winsxs),注意,manifest信息要直接能够指定到所附带的assembly DLLs,不须要依赖policy的重定向。

转载于:https://www.cnblogs.com/mengfanrong/p/3805788.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[译]多线程网络服务模型

2019独角兽企业重金招聘Python工程师标准>>> 多线程网络服务模型 /*** 谨献给Yoyo** 原文出处&#xff1a;https://www.toptal.com/software/guide-to-multi-processing-network-server-models* author dogstar.huang <chanzonghuanggmail.com> 2016-04-02*/作…

likely(x)与unlikely(x)函数,即__builtin_expect的使用

转载自&#xff1a;http://velep.com/archives/795.html 本文讲的likely()和unlikely()两个宏&#xff0c;在linux内核代码和一些应用中可常见到它们的身影。实质上&#xff0c;这两个宏是关于GCC编译器内置宏__builtin_expect的使用。顾名思义&#xff0c;likely()指“很有可能…

java mvc引擎_SpringMvc+JavaConfig+Idea 搭建项目

1.介绍之前搭建SpringMvc项目要配置一系列的配置文件&#xff0c;比如web.xml,applicationContext.xml,dispatcher.xml。Spring 3.X之后推出了基于JavaConfig方式以及注解的形式的配置。在一定程度上简化了Spring项目的配置。近几年特别火的SpringBoot&#xff0c;大大的简化了…

window.parent和window.opener区别

下面一段代码是关于window.parent和window.opener区别 来讲的&#xff0c;我们如果要用到iframe的值传到另一框架就要用到window.opener.document.getElementById(name).value uvalue;这种形式哦。 window.parent能获取一个框架的父窗口或父框架。顶层窗口的parent引用的是它本…

极域电子书包课堂管理系统_【君莲微讯】君莲学校(小学部)开展电子书包第13共同体数学研讨活动...

借 助 媒 体 技 术丰 富 图 形 认 识君莲学校(小学部)开展电子书包共同体 数学研讨活动 2020年12月2日下午&#xff0c;君莲学校(小学部)开展了以“借助媒体技术 丰富图形认识”为主题的闵行区电子书包第13共同体的数学研讨活动。共同体学校教师代表、学校电子书包项目组主管朱…

python批量改动指定文件夹文件名称

这小样例仅仅要是说明用python怎么批量改动指定文件夹的文件名称&#xff1a; 记得要把脚本跟改动的文件放在同一个文件夹下 #encoding:utf-8 import os import sys files os.listdir(D:\\1) #路径能够自己for name in files:a os.path.splitext(name)if a[1] .txt: #txt能够…

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具&#xff0c;可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率&#xff0c;内存使用&#xff0c;虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令&#xff0c;一个是Linux/Unix都支持&#xff0c;二是…

python的基础网络编程是下列_Python入门基础之网络编程、socket编程、TCP、UDP编程...

忙了两天&#xff0c;继续更文&#xff01;希望多多支持。套接字套接字是一种具有之前所说的"通讯端点"概念的计算机网络数据结构。网络化的应用程序在开始任何通讯之前都必需要创建套接字。套接字有三种&#xff1a;1、 AF_UNIX(在 POSIX1.g 标准中也叫 AF_LOCAL)&a…

java 入门 博客园_javaweb入门

复习&#xff1a;css的常用样式&#xff1a;borderbackgroundpaddingmarginfloatposition 定位top left确定div在页面中的位置&#xff0c;这两个值可以为负数。cssdiv 布局方式cssdivtable 先由div划分大块儿&#xff0c;再由table进行整齐布局。下拉列表&#xff1a;层叠的布…

以ThreadStart方式实现多线程

3.1 使用ThreadStart委托 这里先以一个例子体现一下多线程带来的好处&#xff0c;首先在Message类中建立一个方法ShowMessage()&#xff0c;里面显示了当前运行线程的Id&#xff0c;并使用Thread.Sleep&#xff08;int ) 方法模拟部分工作。在main()中通过ThreadStart委托绑定M…

管理思考

管理基础 分活 分钱 分责任 分权 安人(安排 配置) 流程 标准 考核 治人(协调 指挥 控制) 社会越来越复杂 分工越来越复杂 合作越来越重要 目标一定要一致共同的意愿共识 需要大家参与管理 业务划分 责任划分 流程梳理 如何合作做好安全工作 安全服务因为不承担责任 责任主体是管…

我的atom插件

atom插件实在是太多了&#xff0c;下面就说说我的插件 1.minimap 右边的小地图&#xff0c;和sublime里面的差不多&#xff1b; 2.open-in-browser 右击默认浏览器打开&#xff1b; 3.emmet 这个不用多说吧&#xff0c;html快速编译 4.git-plus 直接在atom提交代码&#xff0…

python统计英文句子每个单词字数_Python小书3-文本英文单词统计

之前写Python Web小书第三小节本来用的垃圾邮件的案例三郎&#xff1a;Python贝叶斯推理垃圾邮件分类​zhuanlan.zhihu.com后来发现里面的东西&#xff0c;涉及到概率&#xff0c;程序太复杂了。。。哈哈哈所以就想着&#xff0c;哪天重写一下&#xff0c;选来选去&#xff0c;…

java9特性_96.java基础10(java9/10/11新特性)

126.java 9 新特性1(模块化功能):1.java模块化2.java 交互式环境jshell3.泛型package com.atguigu.java;import org.junit.Test;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.util.Ar…

MonoRail - 简介 [基础知识篇]

MonoRail - 简介 起源 MonoRail是一个.NET的MVC web开发框架, 原名Castle On Rails, 是CastleProject的一个子项目. 作者hammett在使用过Ruby On Rails后, 觉得非常棒, 他希望在享受ror的开发模式的同时能使用大量现有的资源, 于是就用.NET写出了一个Castle On Rails. 后来ror那…

结对编程(黄金点游戏)

我扮演的角色是驾驶员 一、结对伙伴 领航员&#xff1a;赵峻 作业地址见我的博客。 二、代码地址 https://coding.net/u/k2048/p/huangjindian/git/blob/master/main.c 三、总结 1、个人总结 本次作业我扮演驾驶员&#xff0c;赵峻扮演领航员&#xff0c;我负责算法实现以及代码…

qtgl 鼠标平移 c++_罗技真爱粉的MX Master 3无线鼠标体验

​这是一篇关于罗技MX Master3的晒单&#xff0c;顺带也翻出我的库存清洁整理一下吧。在决定购买一款新鼠标的时候&#xff0c;我的第一目标其实是MX Vertical垂直鼠标&#xff0c;不过MX Vertical目前优势只在外形上&#xff0c;在MX系列中明显属于低配&#xff0c;自由滚轮、…

java实验指导书(实验四)答案_java程序设计实验指导书答案

? 狗生活在陆地上(是一种陆生动物)&#xff0c;既是哺乳类的也是肉食性的。狗通常的时候和人打招呼会通过“摇摇尾巴”&#xff0c;在被抚摸感到舒服的时候&#xff0c;会“旺旺叫”&#xff0c;而在受到惊吓情绪烦躁时&#xff0c;会发出“呜呜”声&#xff1b;? 猫也生活在…

php代码规范说明文档

命名规则&#xff1a;采用驼峰标识&#xff0c;尽量做到见名知义 PHP编码规范与原则&#xff1a; //命名&#xff1a;类&#xff0c;方法&#xff0c;函数&#xff0c;变量&#xff0c; 注释&#xff1a;开发中难免留下一些临时代码和调试代码&#xff0c;此类代码必须添加注释…

下载网页中的图片到本地

简单的一个下载如下 &#xff1a; string url "http://avatar.csdn.net/A/2/6/2_yefengzhixia.jpg";string filepath "D:\\pic.jpg";WebClient mywebclient new WebClient();mywebclient.DownloadFile(url, filepath);MessageBox.Show("OK");…