将dll注册到GAC的简单图解教程

 前两天读《Visual C# 2010 Recipes A Problem-Solution Approach》一书,发现里面讲到了强命名程序集,等等概念,觉得书上的例子有点繁琐,且不能说明什么问题,所以今天就自己试着写一个简单点的例子,大家先看看。先简单解释一下什么是GAC。注意GAC可不是GC(垃圾回收)。GAC全称是Global Assembly Cache(全局程序集缓存),作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。举个例子当我们新建完毕一个Console Application 应用程序,打开解决方案管理器,就可以看到References下有很多的引用,

但是你打开工程目录中的Bin目录,却没有看到任何和它们一个相关的dll文件。因为这些dll文件都是从GAC中取得的,所以把dll注册到GAC中的一大好处就是可以让系统中所有文件都可以访问到它,而且不用把相应的dll文件拷贝到运行目录下面。

那么如何把一个dll文件注册到GAC中呢,可以按如下步骤操作(方法不止一种,这里写的是我认为最简单的方法):

首先打开Visual Studio 的命令行,如图:

2 在命令行窗口中敲入如下命令:sn -k c:/TestKey.snk 文件路径和文件名可任取,运行成功后出现下列提示:

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Key pair written to c:/TestKey.snk

这是在C:盘根目录下就出现了TestKey.snk文件。

 

 3、新建一个ClassLibrary工程,敲入一段简单代码

右键单击工程名,选择属性,然后在属性窗口中,切换到Signing,勾选右侧Sign the assebly选项,最后在下拉列表中选择TestKey.snk。最终效果如图:

最后编译此工程生成CatchString.dll文件

 

4、依然还是在VS2010的命令行窗口继续敲入如下代码gacutil -i C:/WINDOWS/system32/CatchString.dll

要保证dll文件路径的正确性。

运行成功后会有如下提示:
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly successfully added to the cache

 

5、编写测试程序

新建一个ConsoleApplication   UseDllString,添加CatchString.dll文件的引用

同时敲入如下代码:

运行成功后,打开工程Bin目录发现并没有CatchString.dll文件存在,则说明验证成功

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页