作者:黎波

日期:2005年6月3日

安装步骤

  1. 安装EntLib后下载Patch 1475 并且更新到原来的代码 [0]
  2. 将\src 和\bin目录复制到新的根目录(如:C:\EntLib),以便下面的修改 [1]
  3. 用sn.exe 生成一个强名的Key [2]
  4. 修改每个项目的AessemblyInfo.cs [3]
  5. 将\src 目录下的所有批处理文件移动到EntLib根目录
  6. 根据需要修改所有批处理文件中的路径参数
  7. 在命令符方式下执行\src\BuildLibrary.bat,重新编译EntLib解决方案 [4]
  8. 在命令符方式下执行\src\CopyAssemblies.bat,把每个项目生成的程序集复制到bin目录 [5]
  9. 生成一个批处理文件,用来安装Assembly到GAC [6]
  10. 执行步骤7生成的批处理安装EntLib V1.0 Assembly到GAC [7]
  11. 修改注册表,定位Assembly的引用 [8]
  12. 备份步骤3产生的密钥文件
  13. 把修改后的EntLib进源代码库,\bin目录发布给项目组的开发成员 [9]

相关说明

[0] Patch 1475 用于解决在配置应用程序块(Configuration Application Block)中发现的内存泄漏问题。相关内容请看 Patch 1475 for Configuration Application Block released

[1] 为了让EntLib更好地在实际项目中使用,我们需要对EntLib进行一些修改。修改后的版本用于实际项目中,原来的版本用于学习。之所以要分两个版本,是因为当给EntLib的程序集加入强名称后,它们的全限定名称改变了,而EntLib的配置文件中需要指定各个EntLib程序集的全限定名称,这样就导致了所有基于原本的EntLib编写的应用,要经过手工修改所有配置文件中的程序集全限定名称后,才能正常使用,不然EntLib自带的配置工具会无法读取这些配置信息。

[2] 在根目录下执行

sn –k EntLib.snk (当然如果你的应用或项目已经有了自己的Key则可省略)

创建一个批处理文件(InstallSN.bat),里面可以就只有一句话,并且运行

sn -i EntLib.snk EntLibContainer

这样我们在强名的时候就可以不使用AssemblyKeyFile选项,因为它总是需要路径,Build的时候,经常会为这个相对路径搞来搞去。现在只要通过 AssemblyKeyName选项就可以指定了,不用担心路径问题。

[3] 在EntLib解决方案中有一个GlobalAssemblyInfo.cs 文件,每个项目都有一个自己的 AssemblyInfo.cs,GlobalAssemblyInfo.cs 保存着编译配置、公司/产品、版权声明和版本号,每个项目自己的AssemblyInfo则保存自己的Assembily名和CLR权限设置。

不必为每个项目的AssemblyInfo.cs文件加入强名称的代码,只要用文本编辑器打开GlobalAssemblyInfo.cs文件,并在其中加一句

[assembly : AssemblyKeyName("EntLibContainer")]

而不使用AssemblyKeyFile选项,然后保存GlobalAssemblyInfo.cs文件。

我是这样做的:打开EntLib解决方案,用VS自带的查找和替换功能将每个项目的AssemblyInfo.cs 中有关加强名称的三行代码注释掉

//[assembly : AssemblyDelaySign(false)]
//[assembly : AssemblyKeyFile("")]
//[assembly : AssemblyKeyName("")]

然后再给GlobalAssemblyInfo.cs 加入下面三行代码。

[assembly : AssemblyDelaySign(false)]
[assembly : AssemblyKeyFile("")]
[assembly : AssemblyKeyName("EntLibContainer ")]

[4] 在执行BuildLibrary.bat 文件之前,先用记事本打开它,将里面的

set buildType=Debug 修改为 set buildType=Release

确保 set visualStudioDir= 中的VS.NET 的安装路径正确。

[5] 在执行CopyAssemblies.bat 文件之前,先用记事本打开它,将里面的

set buildType=Debug 修改为 set buildType=Release

[6] 主要是生成一个批处理文件,将我们编译好的EntLib用Gacutil.exe工具安装到GAC中。通过修改EntLib原来目录下的InstallServices.bat文件,就可以变成非常合适的工具InstallAssemblyToGAC.bat。然后再修改一下就可以生成一个UninstallFromGAC.bat,这两个批处理修改路径之后还可以供开发人员使用二进制的EntLib时使用。

这里还有的一个可选操作是执行InstallServices /u ,我想这是建议的,之后我们要重新编译EntLib项目和注册,所以最好将之前InstallServices做的工作Uninstall。

[7] 运行之前生成的批处理将EntLib相关的程序集安装到GAC中。除了InstallServices.bat中包括的Assembly,我又增加下面一些Assembly:

Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll
Microsoft.Practices.EnterpriseLibrary.Logging.Sinks.Database.dll
Microsoft.Practices.EnterpriseLibrary.Security.ActiveDirectory.dll
Microsoft.Practices.EnterpriseLibrary.Security.AzMan.dll
Microsoft.Practices.EnterpriseLibrary.Security.Cache.CachingStore.dll
Microsoft.Practices.EnterpriseLibrary.Security.Database.dll
Microsoft.Practices.EnterpriseLibrary.Security.Database.Authentication.dll

之后再运行InstallServices.bat 这样新的Enterprise Library就算安装上了。

[8] 为了在Visual Studio能够寻找到EntLib 和方便添加引用,我们需要在注册表的AssemblyFolders 中添加Enterprise Library的地址。可以参考MSDN Library或Johan Danforth的WebLog.

这样就方便多了,免得多次打开浏览窗口,一个目录一个目录的找了。之后将这个注册表的条目导出为文件(RegAddRefDialog.reg),修改之后复制到EntLib的根目录供其他人员使用。

[9] 通过上述的修改,现在EntLib根目录中有\bin 和 \src 两个目录,还有一些用于安装和部署EntLib的批处理文件、注册表项文件和强名称文件。

[参考]

将Enterprise Library 放到你的应用或产品中 ccBoy(小气的神)
http://www.dotnettools.org/2005/doc/entlib/EntLib001.htm

安装和部署企业程序库相关推荐

  1. 开源企业内部沟通协作平台, 免费企业IM, ENTBOOST, Windows环境:免安装模式部署

    关于ENTBOOST 恩布互联: ENTBOOST公司致力于提供,开源企业内部沟通协作平台,开源团队协作平台,免费企业IM,私有云部署产品:所有ENTBOOST产品可以免费部署到企业内部服务器上,帮助 ...

  2. 探讨微软团队开发利器VSTS之安装及部署篇

    一.引言Visual Studio 2005 Team System是微软结合MSF成功开发经验的基础上,首次由软件开发领域延伸至整个软件开发生命周期管理的开发工具.Visual Studio 200 ...

  3. 菜鸟学exchange之一:exchange邮件系统的简单安装和部署

    菜鸟学exchange之一:exchange邮件系统的简单安装和部署 2009-05-10 23:15:34 实验背景: 西安凌云高科技是一家拥有300名员工的高新技术企业,总部在位于西安.在上海和北 ...

  4. DC/OS 的安装与部署

    DC/OS 的安装与部署 2016年4月,Mesosphere开源了他们开发的DC/OS (数据中心操作系统),引起了广泛的关注,虽然开源版本和他们的企业版本应该还有一些差距,但是我们仍然可以从中学习 ...

  5. Team Foundation Server 2010 安装、部署与配置(七):创建 Team Project 时的一个 Issue:TF218027 .

    上文<Team Foundation Server 2010 安装.部署与配置(六):创建 Team Project>中,我在实践过程中其实遇到过一个 issue(TF218027),所幸 ...

  6. 探讨微软团队开发利器VSTS安装及部署篇

    一.引言Visual Studio 2005 Team System是微软结合MSF成功开发经验的基础上,首次由软件开发领域延伸至整个软件开发生命周期管理的开发工具.Visual Studio 200 ...

  7. Flink (四) Flink 的安装和部署- Flink on Yarn 模式 / 集群HA / 并行度和Slot

    接上一篇 Flink (三) Flink 的安装和部署- -Standalone模式 3. Flink  提交到 Yarn Flink on Yarn 模式的原理是依靠 YARN 来调度 Flink ...

  8. 部署企业中第一个站点

    本文档延续前两篇博客:AD&Exchange2010 简单安装部署(一)部署企业中第一台Windows Server 2008 R2域控制器 和 部署企业中Windows Server 200 ...

  9. Ghost安装的部署

    Ghost安装的部署 Ghost 安装是非正常安装的第三种安装,其中前两种非正常安装分别是无人职守安装和远程安装,现在介绍 Ghost 的安装.    每一台计算机内都存在敏感信息,这里给企业或者个人 ...

最新文章

  1. 《不只是美:信息图表设计原理与经典案例》—— 2.5 功能限制形式
  2. P2633 Count on a tree
  3. USACO-Section2.2 Subset Sums
  4. 浙江linux学习,浙江大学现代教务管理系统
  5. git同时推送项目到GitHub和Gitee
  6. TCP之1460MSS和1448负载
  7. sourcetree windows下中文乱码
  8. Python 创建本地服务器环境生成二维码
  9. Android WebView 网页使用本地字体
  10. Eclipse 中设置编辑器字体,包括 Java 编辑器,XML 编辑器和 Property 编辑器的字体都可以设置
  11. 泛型编程 - 学习/实践
  12. unity 线渲染器LineRender
  13. 团体程序设计天梯赛 L1-059 敲笨钟
  14. Unity Camera Filed Of View
  15. RecyclerView notifyDataSetChanged 导致图片闪烁的原因
  16. 两个必须更新浏览器的理由,危险就在你身边
  17. jwt 的 token 被获取怎么办
  18. 分布式 常见的容错机制
  19. 基于python文本挖掘实战_python实现CNN中文文本分类
  20. 认养一头牛IPO:流量反噬、线下不力、盈利未知

热门文章

  1. 不用IIS跑.net web应用
  2. linux major头文件_Linux的字符设备
  3. HBase优化案例分析:Facebook Messages系统问题与解决方案
  4. Android JNI作用及其详解
  5. 《『若水新闻』客户端开发教程》——04.设计新闻分类UI(2)
  6. 另类windows与ubuntu共享实现
  7. C和C++ const的声明差异
  8. [Servletamp;JSP] 从JSP到Servlet
  9. 解决ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效
  10. 关于jacob支持BSTR类型的经验总结