`
lxy2330
  • 浏览: 468581 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多

 

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

(2010-10-25 09:14:51)
<script></script>标签:

安装项目

密钥

打包

安装dll到gac

it

分类: c#学习

<!-- 正文开始 -->

vs2010打包步骤:

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

 



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

 

 

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…,弹出Add Reference对话框,在.NET下可以找到安装好的dll文件Test_Lib。如图

 

如果在.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

 

 

 

分享到:
评论

相关推荐

    pb12.5dll包

    为了确保exe能正常执行,你需要将这些DLL文件复制到与exe相同的工作目录下,或者将它们放置在系统路径下的DLL搜索路径中,例如Windows系统的System32目录。这样,当exe运行时,操作系统就能够找到并加载这些DLL,...

    c#写的日历插件,已生成dll

    1. 将DLL文件复制到目标项目的输出目录或全局程序集缓存(GAC)。 2. 在项目的引用管理器中添加对DLL的引用。 3. 使用`using`指令引入DLL中的命名空间,以便能够访问其中的类和方法。 可能的问题及解决方法: 1. **...

    asp登录模块用vb封装成dll

    标题“asp登录模块用vb封装成dll”指的是将ASP中的登录功能模块化,并使用VB语言编写,然后打包成一个DLL文件。这样做的好处在于,开发者可以方便地在多个项目中重用这个登录模块,无需每次都重新编写相同的代码,...

    PB.NET环境配置.docx

    1. **PowerBuilder Runtime Packager 工具**:这是发布PB动态链接库最简单的方法,该工具可以将所需的文件打包成一个 MSI 安装包,便于在其他计算机上安装。 2. **注意事项**:客户端、服务端以及开发时所使用的 DLL...

    RDLC在winfrom报错解决办法.rar

    5. **拷贝本地**:在项目的引用属性中,将报表查看器控件设置为“Copy Local”,这样在构建应用程序时,会将必要的DLL文件一起打包到输出目录。 在提供的RAR文件中,包含了可能解决问题的DLL文件。下载并解压后,...

    web 项目的部署问题

    对于依赖库,确保GAC(全局程序集缓存)或网站的bin目录包含所有必要的DLL文件。 最后,测试是部署流程中不可或缺的一环。部署完成后,应通过浏览器访问网站,检查功能是否正常,页面是否能正确加载,数据库交互...

    SharePoint 开发实录:5,WebPart 发布

    在发布WebPart时,通常会将编译后的DLL文件(如TestWebParts.dll)以及相应的pdb调试信息文件(TestWebParts.pdb)部署到SharePoint服务器的GAC(全局程序集缓存)中。这确保了WebPart可以在SharePoint环境中被识别...

    解决web项目发布后Microsoft.ReportViewer.Common无法引用的问题

    如果以上步骤都确认无误,但问题依然存在,可以尝试手动将`Microsoft.ReportViewer.*`的DLL文件复制到服务器的`bin`目录下,或者将其放入全局程序集缓存(GAC)。 7. **权限问题**: 有时候,IIS应用池的账户可能...

    C#实现自定义用户控件之仪表和步骤条.zip

    - 将DLL文件复制到主项目的引用目录或全局程序集缓存(GAC)。 - 在主项目中,右键点击“引用”-&gt;“添加引用”,选择“浏览”选项,找到并添加刚刚生成的DLL。 - 引用添加成功后,就可以在主项目中实例化并使用...

    Oracle.DataAccess 64位/32位 各版本集合

    安装Oracle.DataAccess时,通常有两种方式:一是将Oracle.DataAccess.dll作为应用程序的依赖项打包,二是通过GAC(全局程序集缓存)全局安装,使系统中的所有应用程序都能使用。安装完成后,需要在应用程序配置文件...

    SharpZipLib

    - **installGAC.bat、uninstallGAC.bat**:这两个批处理文件分别用于将SharpZipLib添加到和从GAC中移除,便于库的全局管理和使用。 - **060sharpziplib.chm**:这是一个帮助文档,包含了SharpZipLib的详细使用指南...

    Visual C#基于组件的开发

    8. **代码发布和部署**:完成组件开发后,需要打包成DLL或EXE文件,并创建安装程序,使得其他开发者或用户可以方便地安装和使用这些组件。 9. **调试和测试**:为了确保组件的稳定性和正确性,开发者需要进行详细的...

    BuildScript_10.1

    2. `gac.bat`:可能用于将编译后的组件注册到全局程序集缓存(Global Assembly Cache, GAC),这是.NET Framework中用于存储共享的、强命名的.NET组件的地方。 3. `defines.bat`:可能定义了一些宏或者环境变量,...

    DependentAssemblyIssue

    在IT行业中,尤其是在软件开发领域,`DependentAssemblyIssue`是一个常见的问题,它涉及到程序的依赖管理。在.NET框架中,程序集(Assembly)是代码的物理组织单元,包含了类、接口和其他编程元素。当一个程序集(如...

    .net问题

    - **Windows 应用程序与 EXE 文件**:在 Windows 平台上,.NET 应用程序通常被打包成 EXE 文件形式进行分发。EXE 文件是一个可执行文件,包含了应用程序运行时所需的所有信息。 - **Windows 系统资源管理**:Windows...

Global site tag (gtag.js) - Google Analytics