程序打包发布时,如何将程序集自动安装到全局程序集缓存(GAC)中

在 .NET 中,什么是 GAC(全局程序集缓存),如何使用它? 摘要:GAC(全局程序集缓存)是.NET Framework中用于共享强名称程序集的中央存储库,位于C:\Windows\assembly\。主要作用包括版本控制、安全验证和性能优化。使用GAC需为程序集强签名,并通过gacutil或安装工具部署。.NET Core/5+已弃用GAC,改用NuGet和共享框架。GAC适合企业级共享组件,但会增加部署复杂度,新项目建议优先使用NuGet包管理。 阅读详情

    在“总结: 如何将程序集(dll)安装到全局程序集缓存(GAC)中”文章中提到的方法是手动将dll安装到GAC中的两种方法。但有些时候,我们需要将项目制作成安装包,在用户安装程序的过程中,将某些程序集(dll文件)自动安装到全局程序集缓存(GAC)中。
    其实很简单,按下面的步骤来:
1. 确保程序集进行了强名称签名,还没进行强名称签名请参考文章:总结: 如何将程序集(dll)安装到全局程序集缓存(GAC)中
2. 新建一个安装项目,VS.Net 2005-->新建-->项目-->其他项目类型-->安装和部署-->安装项目-->自己起一个项目名称
3. 在“目标计算机上的文件系统”单击鼠标右键,选择“添加特殊文件夹”,然后选择“Global Assembly Cache 文件夹”。
4. 将需要安装至GAC的程序集(dll文件)添加至此文件夹中。
5. 其他常规的安装部署设置均与普通的安装程序制作无异,在此略去。
6. 生成安装项目。

    这样,运行安装文件后,就会在C:/windows/assembly文件夹下找到刚才需要安装的程序集。

Microsoft.NET 框架程序设计 —— 共享程序集 文件版本是一个很难解决的问题。实际上,如果仅仅在一个文件中将其某一位从0改变到1、或者从1改变到0,我们便不能绝对保证使用原来文件的代码和它使用新版文件时的行为一样。这是因为许多应用程序都会有意或者无意地引入bug。如果一个文件的后续版本修复了一个bug,应用程序便不再如预期那样运行。这就存在一个问题:怎样在修复bug和增加特性的同时,还能保证不会损坏现有的应用程序?我曾经对这个问题思考了很久,并且得出了一个结论--那就是这是不可能的。很明显,这样的回答解决不了问题。 阅读详情

相关推荐

操作全局程序集缓存(GAC)的.NET应用程序

对全局程序集缓存(Global Assembly Cache简称:GAC)的操作所用EXE及生产密钥的EXE程序,压缩包中的程序类型为.NET。 sn.exe;gacutil.exe;GacKey.snk(实例)

.NET反射、委托技术与设计模式(http://developer.51cto.com/art/200712/63137.htm)

1、反射技术与设计模式反射(Reflection)是.NET中的重要机制,通过反射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。1.1、.NET可执行应用程序结

平常心的专栏 925

基于ADS\HFSS\Matlab的平面带通发夹滤波器设计

写在最前面,前段时间完成了一个小项目,实现13.5~14GHz的带通滤波器,算是第一个微波项目,在老师、学长、各种大神的指点下,最终完成了指标,想来这段时间收获良多,想到老师教导的,有能力的话要尽可能帮助别人,以及网络上很少面向于小白的教程,于是决定把自己做这个小项目的经过,一些关键步骤,还有软件操作和公式讲解都发出来,供大家指正借鉴。由于我目前大三,刚学习电磁场、微波工程等等,技术实在有限,同时这样是我第一次发帖子,只能尽可能的将自己确认过正确的内容,步骤以及一些经验写出来,供大家借鉴。

likaifeng12138的博客 5219

全局程序集缓存gac中安装程序集_System|缓存|Rethinking LRU

LRU是常见的缓存淘汰策略,用于分布式系统的缓存、页表置换等场景。然而,经典的哈希链表实现事实上并不是很好的实现策略。本文将从内存页、CPU缓存、分布式缓存等几个方面介绍它们所使用的LRU算法实现。目录内存 - 时钟算法、工作集算法、2Q、Linux LRUCPU - Tree-PLRU、 MRU、 QLRU分布式 - Redis采样式LRU,Memcache分段式LRU绝对LRU时间戳排序为每个...

weixin_39984201的博客 453

Mask2Former实战:用SwinTransformer+Deformable Attention搞定图像分割三大任务

本文实战解析了Mask2Former模型如何统一解决语义、实例和全景分割三大任务。通过集成Swin Transformer骨干网络与创新的Deformable Attention及Masked Attention机制,详细介绍了模型构建、训练策略及在COCO数据集上的性能表现,为开发者提供了高效的图像分割解决方案。

tech5的博客 246

RK3399跨楼层机器人:SLAM技术与商业应用解析

SLAM(即时定位与地图构建)技术是移动机器人自主导航的核心,通过激光雷达、视觉传感器等多源数据融合实现厘米级定位。RK3399作为高性能嵌入式平台,其六核架构和Mali GPU能高效处理SLAM算法与传感器数据。在商业场景中,这种技术组合可支撑机器人实现跨楼层物资配送、仓库盘点等复杂任务。以SLAMTEC Hermes平台为例,其模块化设计支持电梯控制集成,配合双深度相机和360°激光雷达,在医疗、物流等领域已实现12分钟平均配送效率和99.7%的识别准确率。

weixin_30376083的博客 620

如何将程序集(dll)安装到全局程序集缓存(GAC)中

  针对一些类库、用户控件、OCX项目,在程序开发完成后,有时需要将开发的程序集(dll文件)安装部署到GAC(全局程序集缓存)中,以便其他的程序也可以调用。GAC百科    一般来说,将程序集(dll)安装到GAC中有以下两种方法:1.  手动将要安装部署的dll文件拖至系统目录windows下的assembly文件夹下(一般为C:/windows/assembly),此种方法不便于在安

HappyNale的专栏 2320

程序进入hardfault之后查找原因的方法

如果在MCU运行程序的时候,进入了hardfault,该怎么办?

smart_boy__的博客 761

程序集安装到全局程序集缓存(GAC)

程序集安装到全局程序集缓存(GAC)要将程序集安装到GAC中,首先要为程序集赋一个强名(strong name),其实是用于签名的密钥。1.选择“开始/所有程序/Microsoft Visual Studio .NET 2003/Visual Studio .NET 工具/Visual Studio .NET 2003 命令提示”菜单,进入.net 2003命令提示窗口。2.在命令提示

言出必行 5330

AI系统架构原理与代码实战案例讲解

人工智能的概念可以追溯到上世纪50年代,图灵测试的提出标志着人工智能作为一门学科的诞生。早期的研究主要集中在符号推理、专家系统等领域,取得了一些突破,例如机器定理证明、西洋跳棋程序等。上世纪80年代,随着专家系统的兴起,人工智能进入了一个黄金时期。专家系统通过模拟人类专家的知识和经验进行推理和决策,在医疗诊断、故障诊断等领域取得了成功应用。进入90年代,由于计算能力的限制和数据量的不足,人工智能的发展陷入低谷。近年来,随着深度学习技术的突破、大数据的兴起以及计算能力的提升,人工智能迎来了第三次发展浪潮,在图

AI天才研究院 1794

骑砍2霸主MOD开发(9)-游戏大地图(MapScene)

Settlement类型由town,castle,castle_village,village,hideout五种类型组成,通过对GameEntity中添加tag实现类型的加载.大地图中军团(MobileParty)的移动速度,AI寻路,食物消耗等均和当前MobileParty所处地形有关,地形统一被定义为TerrainType,类型有森林,荒漠等.MapScene.Read("Main_map", ref sceneInitializationData, "") 装载Main_map大地图。

骑砍战团&霸主MOD开发 1623

发布全局程序集缓存GAC 最简步骤

发布全局程序集缓存GAC 最简步骤给程序集设置强命名 项目 -> 属性->签名选项卡->选中 为程序集签名 复选框->在 选择强名称密钥文件,单击 创建强名称密钥 对话框中单击以选择 我的密钥文件使用密码保护 复选框。填写 密钥文件名称 密码。部署强命名程序集到GAC(全局程序集缓存工具-GACUtil.exe)   1.把程序集添加到GAC中: GACUtil /i sample.dll (参数/i是安装的意思)   2.把程序集移出GAC GACUtil /u sample.dll (参数/u就移除的意

2649

ParaView: GUI 轴网格

ParaView: GUI 轴网格

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1923

程序集(dll) 安装到 GAC && 程序集添加到VS引用开窗(转)

一 首先 程序集(dll) 安装到 GAC 中的方法 所谓的GAC,就是全局程序集缓存(Global Assembly Cache)。 针对一些类库项目或用户控件项目在程序开发完成后,有时需要将开发的程序集(dll文件)安装部署到GAC(全局程序集缓存)中,以便其他的程序也可以调用。被放入GAC的程序集,无论在何处被其他程序集引用,都可以保证自己能够被CLR找到并且加载。简单来说,GAC是一个有规范的目录结构。如果主机使用的是Windows操作系统,并且操作系统被...

Learn_change_myself的博客 949

ARM与PC共享文件方式【samba】移植与配置

方式推荐指数适用平台优点缺点⭐⭐⭐⭐⭐全平台 (Win/Mac/Linux)兼容性最强,操作像本地文件配置稍繁琐,协议开销略大NFS⭐⭐⭐⭐Linux/Mac (Win支持一般)速度极快,CPU占用低Windows配置复杂,权限管理较难SFTP (SSH)⭐⭐⭐⭐全平台 (需客户端)安全加密,无需额外配置服务需使用FileZilla/Xftp等专用软件物理U盘⭐⭐⭐全平台无需网络,速度取决于接口需要人工插拔,不适合自动化Syncthing⭐⭐⭐⭐全平台自动同步,支持远程。

浩瀚之水的专栏 263

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

全局程序集缓存(GAC)中 安装程序集 ADODB 版本

错误:无法安装或运行此应用程序。该应用程序要求首先在“全局程序集缓存(GAC)”中安装程序集 ADODB 版本7.0.3300.0 出现这一类似的错误,在VS项目中做如下操作: 右键工程-》属性-》发布-》应用程序文件-》ADODB-》发布状态(包括) 1、打开VS工程,右键点击工程,选择属性; 2、选择“发布”; 3、点击“应用程序文件”按钮; 4、ADODB

m15188153014的博客 2194

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

无法安装或运行此应用程序。该应用程序要求首先在"全局程序集缓存(GAC)"中安装程序集

问题:无法安装或运行此应用程序。该应用程序要求首先在”全局程序集缓存(GAC)”中安装程序集 解决(可能):双击第1步,第4步设置为包括

好好学习天天向上 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

用Innosetup打包发布基于Devexpress的WPF应用

背景 报错,找不到dll以及XamlParseException 过程中遇到的问题 解决方案 记录

hey_zng的博客 1015

共享程序集和强命名程序集

1. 两种程序集,两种部署 备注: 公认位置:由多个应用程序访问的程序集必须放到公认的目录,而且CLR在检测到对该程序集的引用时,必须知道检查该目录。 这个公认位置就是全局程序集缓存(Global Assembly Cache GAC)。GAC的具体位置是一种实现细节,不同版 本会有所变化(%SystemRoot%...

Abel_01_xu的博客 466

如何部署程序集

引用MSDN上的原文:>原地址:http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/misbasicinstincts.mspx部署程序集 发布日期: 12/14/2004 | 更新日期: 12/14/2004Ted Pattison本月的 Basic I

Aji.yang的专栏 1191

.NET安全-共享程序集

摘要:共享程序集部署在GAC(全局程序集缓存)中,通过强名称确保唯一性,包括版本号和公钥标记。与私有程序集不同,共享程序集不会被复制到应用程序目录。.NET通过codeBase和privatePath配置程序集加载路径,其中privatePath可能存在安全风险,如RCE漏洞。.NET Core仅生成.dll文件,Windows平台的可执行文件实为dotnet.exe的快捷方式。程序集包含托管模块(IL代码和元数据)、资源文件和清单,是.NET Core编译后的核心组件。

m0_51240624的博客 1043

将程序集加入GAC,并让其能够在VS的添加引用的.NET选项卡中被引用

GAC是代码缓存,可以作为一个中央知识库放置程序集。 将程序集放置到GAC中使得它们可被服务器上的多个应用程序引用。如果给予开发人员完全的版本控制,那么在其工作目录中管理每个应用程序的程序集将更简单。如果从GAC引用一个程序集,那么在该程序集更新时,引用它的每个应用程序都会受影响。乍一看,这是个不错的自动功能。不过,要记住,这意味着应用程序被更新了,而此更新没有经过测试来确保...

291

程序集,应用程序域,强签名程序集,GAC

程序集:程序集是一个或多个模块和资源文件的集合。当一个程序集被打包形成时,它不仅包含了所有原始文件的内容,也会添加一个程序集清单,该清单包含版本号,语言,发布者等信息。程序集是一个逻辑上的概念,而不是指一个或几个物理文件或这代码段。程序集的引入的优点:1)程序集支持多变程语言的开发,就是一个程序集语言定义和实现的模块。在程序集被编译形成时,所有这些类型已经被编译成中间代码,而不再带有原来编程语言的特性。2)程序集允许逻辑分布和物理分布。这样虽然同属于一个逻辑程序集,各种类型和资源仍然可以分布在不同的物理文件

ccbb20的专栏 1206

GAC的理解及其作用 [转]

转自:http://www.cnblogs.com/smallstone/archive/2010/06/29/1767508.html 一、GAC的作用 全称是Global Assembly Cache作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得A...

weixin_34367257的博客 875

GAC

一、GAC的作用 全称是Global Assembly Cache作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。举例而言,如果没有GAC,那么势必每个WinFor...

weixin_30746117的博客 453
上一篇: 总结: 如何将程序集(dll)安装到全局程序集缓存(GAC)中
fancyivan
博客等级 码龄19年 10粉丝 2原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值