我们在编写软件的时候,有时候需要调用COM组件,那就需要注册了,注册有两种,一种是使用regasm 在程序运行的时候注册,参考“pb调用C#编写的DLL类库“,不过受路径的限制。还有一种注册方式,使用gacutil工具把DLL注册到全局缓存中,这样只要注册一次,在什么地方都可以跨文件调用了,不受路径的限制,比较方便,推荐使用这种。

使用gacutil注册有以下要求:

一、com程序集强签名。

1. 在项目调试完成后,使用sn.exe工具生成一个密钥。sn -k "生成的密钥的全路径"。
    如在命令行输入: sn -k
D:/myKey.snk
2. 将密钥与项目的程序集进行关联:项目属性-->签名-->为程序集签名-->选择强名称密钥文件。
    此外,还有另外一种方法,就是在项目的AssemblyInfo.cs文件中,修改"AssemblyKeyFile"的属性。
    如:
[assembly:AssemblyKeyFile("D://myKey.snk")]
3. 重新生成项目集。

二、使用gacutil.exe注册

1、gacutil.exe文件一般在“C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin”,把gacutil.exe拷贝到项目根目录即可(gacutil.exe需要安装net framwork x.xx SDK后才有,此文件夹中的gacutil.exe也可以复制直接用)

2、把regasm.exe和gacutil.exe一同拷贝到和DLL同目录下

3、编写注册类Bat文件(我用的是bat,这样可以直接运行,也可以在程序里调用这个bat)

gacutil /if MySql.Data.DLL

regasm  MySql.Data.DLL

pause

先把DLL放到全局缓存中,再注册。

4、编写注销类bat文件,需要注意的是,注销gac的时候,只需要写DLL文件的名字,不需要加“.dll”后缀

gacutil /uf MySql.Data

regasm /u MySql.Data.dll

pause

4、DLL注册到GAC之后,会在“C:\WINDOWS\assembly”文件夹下,注册之后可以打开看看需要注册的DLL有没有在这里。

以上就是用gacutil注册到全局GAC中的流程了,需要把这些文件放到同一目录,另外,因为在windows 7及以上的系统有管理员权限,所有在windows 7及以上需要以管理员身份运行,至于Bat怎么获取管理员身份运行,可以在网上搜搜。

使用gacutil把COM组件注册到全局缓存GAC中的更多相关文章

  1. 2、组件注册-@Configuration&@Bean给容器中注册组件

    2.组件注册-@Configuration&@Bean给容器中注册组件 2.1 创建maven项目 spring-annotation pom.xml文件添加 spring-context 依 ...

  2. 一、Spring之组件注册-@Configuration&@Bean给容器中注册组件

    xml配置方式 首先我们创建一个实体类Person public class Person { private String name; private Integer age; private St ...

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

    在做winform程序发布时遇到了这个问题,在我的机子上是可以正常运行的,但到别人的机子上就出现了这个错误.为此问题头疼了一上午终于搞定! 遇到这个问题一定是配置环境的原因, 1.你可以在程序  发布 ...

  4. Vue2.0源码学习(6) - 组件注册

    组件注册 前言 在 Vue.js 中,除了它内置的组件如 keep-alive.component.transition.transition-group 等,其它用户自定义组件在使用前必须注册.在开 ...

  5. vue插件 使用use注册Vue全局组件和全局指令

    插件一般会注册到全局使用 官方编辑插件介绍:https://vuefe.cn/v2/guide/plugins.html 全局组件: .首先建一个自定义组件的文件夹,比如叫loading,里面有一个i ...

  6. 循序渐进VUE+Element 前端应用开发(22)--- 简化main.js处理代码,抽取过滤器、全局界面函数、组件注册等处理逻辑到不同的文件中

    在我们开发代码的时候,一般都喜欢进行一定程度的重构,以达到简化代码.关注点分离.提高代码可读性等等方面的考虑,本篇随笔介绍在VUE+Element 前端应用开发过程中,实现简化main.js处理代码, ...

  7. vue深入了解组件——组件注册

    一.组件名 在注册一个组件的时候,我们始终需要给它一个名字.比如在全局注册的时候我们已经看到了: Vue.component('my-component-name', { /* ... */ }) J ...

  8. Vue组件深入了解(组件注册和Prop)

    一.组件名 自定义组件的名称强烈推荐遵循W3C规范中的方式:字母全小写且必须包含一个连字符. 二.全局注册和局部注册的区别 全局注册 Vue.component进行注册.全局注册的可以在任何创建的实例 ...

  9. spring注解扫描组件注册

    最近对单点系统进行微服务拆分,被各个springboot的组件注册搞得云里雾里的.(有的是通过springboot的自动配置进IOC容器的,有的是自己添加构造方法添加进IOC容器.)决定抽时间将spr ...

随机推荐

  1. 【Spring 整合篇】整合SpringMVC+Mybatis(一)

    首先,创建Maven Project,packaging为war,修改pom.xml. <properties> <!-- JDK版本 --> <java.version ...

  2. pom.xml文件说明(八)

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  3. (day46)DOM、BOM、事件

    目录 一.BOM (一)定义 (二)window对象 (三)window的子对象 (1)navigator对象 (2)screen对象 (3)history对象 (4)location对象 (5)弹出 ...

  4. 一些开源cdc框架以及工具

    以下是一些cdc工具,没有包含商业软件的 zendesk maxwell 参考地址 https://github.com/zendesk/maxwell 功能 mysql 2 json 的kafaa ...

  5. [RN] react-native FlatList 实现列表选中的最佳方式(刷新指定Item)

    效果如下: 核心思路就是往数据源里面 给每条数据加一个选中状态. 如图在网络请求完成之后,给每条数据添加一个select的状态: data.list.forEach(item => item.s ...

  6. vue和react的区别

    数据: vue:双向数据绑定和单向数据流.双向数据绑定:DOM元素绑定的data值,当发生改变后,vue的响应式机制会自动监听data的变化重新渲染.单向数据流:当父组件给子组件传递数据的时候,子组件 ...

  7. .NET Core3.0 Autofac注入

    参考地址:https://docs.autofac.org/en/latest/examples/index.html 1. nuget :Autofac.Extensions.DependencyI ...

  8. App.vue 不触发 beforeRouteEnter

    因为要在 router 对应一个路由的组件才可以触发 如果没有将 App.vue 作为某个路由组件(一般不会吧) 就不会触发该导航守卫 应该是想在每次进入应用时加载一些数据 所以放在 App.vue ...

  9. Python连载29-log的使用需求实现举例

    一.Format类 1.直接实例化 2.可以继承Format添加特殊字符 3.三个参数 (1)fmt:指定消息格式化字符串,如果不指定该参数则默认使用message的原始值 (2)datemt:指定日 ...

  10. HTML+css基础 img 标签的属性

    img: src=”” src是标签的属性 等号右边是属性值.就是图片的路径. 路径 1. 绝对路径:按照一个路径能找到,具体到某一个盘符下,某一个文件夹内. 2. 相对路径:以当前页面为参考物,去查 ...