如何打包及安装dll文件安装到GAC

如何打包及安装dll文件安装到GAC,第1张

vs2010打包步骤:

1. 新建setup project项目。打开vs2010,选择 Fill>>New>>Project…,d出New Project窗口,左边选择Installed Templates>>Other Project Types>>Setup and Deployment,右边选择Setup Project。Project命名为Setup,点击OK按钮。

如何打包及安装dll文件安装到GAC

2. 添加文件。在Application Folder里面添加应用程序的可执行文件和相应的类库(.exe .dll)。

如何打包及安装dll文件安装到GAC

3. 创建快捷方式。右键点击.exe文件,选择Create Shortcut to…,把快捷键剪切到User’s Desktop和User’s Programs Menu,这样在桌面和开始菜单就会创建快捷方式。

如何打包及安装dll文件安装到GAC

4. 选择安装目录。默认安装目录是"c:\programm file\你的用户名、安装解决方案名称",选择Application Folder>>Properties Window,修改Application Folder的defaultlocation属性,可以自己制定安装目录。

5. 卸载。把文件"c:\windows\system32\msiexec.exe"添加到Application Folder,重命名为UnInstall.exe,选择UnInstall.exe>>Create Shortcut to UnInstall.exe,把Shortcut to UnInstall.exe剪切到User’s Programs Menu。

6. 生成。Build>>Build Solution,找到”.. Setup\Setup\Debug\Setup.msi”,这就是打包好的安装文件。

把dll文件安装到GAC:

1. 生成一个密钥对。新建文件夹c:\mykeys,用来存放密钥。打开vs command prompt,输入sn命令“sn -k ‘c:\ mykeys\gackey.snk’”,按Enter,在c:\mykeys会发现gackey.snk。

2. 把密钥与dll关联。打开要打包的项目,选择生成dll的类库>>Properties>>AssemblyInfo.cs,在AssemblyInfo.cs中添加属性AssemblyKeyFile 为[assembly:AssemblyKeyFile("c:\\mykeys\\gackey.snk")]。

3. 把dll文件安装到GAC。打开setup project项目,选择Fill>>System on Target Machine>>Add Special Folder>>Global Assembly Cache Folder,把拥有密钥对的dll文件添加到Global Assembly Cache Folder。

4. 生成。Build>>Build Solution。

5. 验证。安装好Setup.msi后,可以在” C:\Windows\Microsoft.NET\assembly\GAC_MSIL”找到安装好的dll文件。

在项目中引用安装好的dll:

新建项目test,在Solution Explorer中选择References>>Add Reference…,d出Add Reference对话框,在.NET下可以找到安装好的dll文件Test_Lib。如图

如何打包及安装dll文件安装到GAC

如果在.NET找不到Test_Lib,那就需要注册Test_Lib.dll。步骤如下

1. 打开注册表。在运行的命令行输入regedit,按Enter。

2. 导航到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\。

3. 选择AssemblyFolders>>New>>Key,命名为MyAssembly。

4. 双击MyAssembly默认的值,输入Test_Lib.dll的全路径” C:\Windows\Microsoft.NET\assembly\GAC_MSIL”。

5. 关闭注册表,重新打开项目test,再选择References>>Add Reference…时,在.NET下就可以找到Test_Lib了。

什么是GAC:

1. GAC全称Global Assembly Cache,即全局程序集缓存。GAC存放在系统目录”%winroot%\assembly”下面,你不能通过窗口如”C:\windows\assembly\yourAssembly.dll”来直接获取yourAssembly.dll,必须在dos下输入” C:\windows\assembly\GAC_MSIL\”才能获取yourAssembly.dll。

2. GAC的作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要吧所以用到的Assembly都拷贝到应用程序的执行目录下面。举例而言,如果没有GAC,那么势必每个WinForm程序的目录下就都有从C:\windows\Microsoft.NET\Framework\v1.0.3705下面拷贝一份System.Windows.Forms.dll,这样显然不如都从GAC里面取用方便,也有利于Assembly的升级和版本控制。

http://tech.ddvip.com/2009-06/1244621593123155_2.html

http://www.cnblogs.com/jhxk/articles/1612433.html

http://soaspx.com/dotnet/csharp/csharp_20100701_4956.html

http://tech.it168.com/KnowledgeBase/Articles/1/8/8/1883b14dc241af8af78e2aa52c33064b.htm

自己模拟一个cmd命令就好了吧

以前写的在办公室电脑了 网上随便找了个看看行不 // 实例一个Process类,启动一个独立进程

Process p = new Process() // 设定程序名

p.StartInfo.FileName = "cmd.exe"

// 关闭Shell的使用

p.StartInfo.UseShellExecute = false

// 重定向标准输入

p.StartInfo.RedirectStandardInput = true

// 重定向标准输出

p.StartInfo.RedirectStandardOutput = true

//重定向错误输出

p.StartInfo.RedirectStandardError = true

// 设置不显示窗口

p.StartInfo.CreateNoWindow = true // 启动进程

string pingrst p.Start() p.StandardInput.WriteLine("ping -n 1 " + strIp)

p.StandardInput.WriteLine("exit") // 从输出流获取命令执行结果

string strRst = p.StandardOutput.ReadToEnd()

这可不符合要求。

而且我要求的是得到一个 Assembly[] 数组,不是一行行的字符串。

模拟cmd命令,先获取GAC里dll文件,再通过反射路径下的DLL获取相关信息

cd c:\windows\accembly\GAC_MSIL

xcopy *.* c:\temp\ /e

1)GAC是Great Amusement Centre的缩写,位于Mudu senior high school.

GAC(Global Assessment Certificate)一种国际英语预科课程,是ACT(Ameracan Collage Test)美国高考的子课程.

GAC (Global Assessment Certificate,全球评估证书) /ACT(American College Test, 美国大学入学考试) 预科课程,是美国教育委员会与澳大利亚高校根据母语非英语国家高中二年级结业以及高三毕业后的学生进入美国和英联邦国家大学存在的语言和学科知识差异制定,帮助学生在本国完成国外大学预科课程的学习,突破英语障碍,顺利的进入国外正规大学而开设的课程。完成 GAC/ACT 预科课程,学生可直接免预科进入美国、加拿大、澳大利亚、英国、新西兰等110多所正规大学本科一年级学习,所获学位均得到中国教育部承认。GAC/ACT 预科课程是国内惟一包含 ACT 考试的预科课程。取得ACT成绩可直接申请全美3300所大学及全额奖学金。

(2)GAC全称是Global Assembly Cache

作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。举例而言,如果没有GAC,那么势必每个WinForm程序的目录下就都要从C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705下面拷贝一份System.Windows.Forms.dll,这样显然不如都从GAC里面取用方便,也有利于Assembly的升级和版本控制。

除了系统默认放置在GAC中的Assembly如System.Windows.Forms以外,我们也可以添加自己的Assembly:

1)创建一个strong-name的Assembly,例如ToolbarComponent.dll

2)运行gacutil -i ToolbarComponent.dll,把这个Assembly添加到GAC

3)在程序中动态装载:

System.Reflection.Assembly ass=Assembly.Load("ToolbarComponent, Version=1.0.934.20434, Culture=neutral, PublicKeyToken=65f45658c8d4927f")

MessageBox.Show("Is the assembly loaded from GAC? "+ass.GlobalAssemblyCache)

在上面的程序中,ToolbarComponent就是从GAC装载而不是从程序的运行目录下的dll文件中装载,程序目录下不需要放置ToolbarComponent.dll程序也能正常运行。另外,Assembly.Load()中的参数可以通过"gacutil -l"查到。

另外,上面提到了GAC中的Assembly必须是strong-name的。创建strong-name的Assembly的步骤大致如下:

a) 在命令行运行“sn -k keyPair.snk”创建一个密钥文件。这里的sn.exe也是.NET附带的一个工具。

b) 在VS.NET里面修改“AssemblyInfo.cs”文件:

[assembly: AssemblyDelaySign(false)]

[assembly: AssemblyKeyFile("..\\..\\keyPair.snk")]

c) 编译项目,就能得到一个strong-name的Assembly。

MSDN中有一些对GAC的介绍,您可以参考:

1)《Assembly Cache Viewer (Shfusion.dll)》

2)《Global Assembly Cache》

.NET Framework中附带了一些和GAC有关的工具,其中包括:

1)Gacutil.exe,一个命令行的工具,用于在GAC中浏览、添加、删除Assembly

2)Ngen.exe,也是一个命令行的工具,用于在GAC中创建Native Image

3)mscorcfg.msc,一个MMC终端,可以图形化完成Gacutil.exe的主要功能。

(2)GAC(granular activated carbon)粒状活性炭

活性炭(AC,activated carbon),是一种具有多孔结构和大的内部比表面积的材料。由于其大的比表面积、微孔结构、高的吸附能力和很高的表面活性而成为独特的多功能吸附剂,且其价廉易得,部分还可再生活化,同时它可有效去除废水、废气中的大部分有机物和某些无机物,所以它被世界各国广泛地应用于污水及废气的处理、空气净化、回收稀有金属及溶剂等环境保护和资源回收等领域。

活性碳分为粒状活性碳、粉末活性碳及活性碳纤维,但是由于粉末活性碳有二次污染且不能再生赋活而被限制利用作用。

粒状活性碳( GAC - granular activated carbon )的 85%~90% 用于水处理和气体吸附处理,它的粒径为 500 ~ 5000μm , GAC 的孔结构一般是具有三分散态的孔分布 , 既具有按国际纯粹与应用化学会 (IUPAC) 分类的孔径大于 50 nm 的大孔 , 也有 2.0 ~ 50nm 的中孔(过渡孔)和小于 2.0nm 的微孔。

由于 GAC 的孔状结构所致 , 它的吸附速度较慢 , 分离率不高 , 特别是它的物理形态使其在应用和 *** 作上的有诸多不便 , 限制了 GAC 的应用范围。

活性碳纤维( ACF - activated carbon fiber )是继粉状与粒状活性碳之后的第三代活性碳产品。 70 年代发展起来的活性碳纤维是随着碳纤维工业发展起来的一种新型,高效的吸附剂。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7878486.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存