惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
Security Latest
Security Latest
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
GbyAI
GbyAI
L
LINUX DO - 最新话题
A
Arctic Wolf
T
Tor Project blog
G
GRAHAM CLULEY
I
InfoQ
博客园_首页
IT之家
IT之家
The Register - Security
The Register - Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
K
Kaspersky official blog
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
U
Unit 42
PCI Perspectives
PCI Perspectives
量子位
P
Palo Alto Networks Blog
S
Securelist
T
Troy Hunt's Blog
博客园 - 【当耐特】
Recorded Future
Recorded Future
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
Engineering at Meta
Engineering at Meta
T
The Blog of Author Tim Ferriss
博客园 - 聂微东
罗磊的独立博客
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
NISL@THU
NISL@THU
C
Cisco Blogs
T
Threatpost
有赞技术团队
有赞技术团队
Forbes - Security
Forbes - Security
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
T
The Exploit Database - CXSecurity.com
Cloudbric
Cloudbric
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - kwame

CXX0017错误的解决办法 基础知识--is & as 的区别 - kwame 基础知识--变量和常量 - kwame - 博客园 基础知识--Boxing & unBoxing 基础知识--值类型和引用类型 用Visual C#创建Windows服务程序 (转)用C语言编写Windows服务程序的五个步骤 昨天的事今天来写也叫昨天的日记吧?? 我是个被窥视狂? 一个馒头和一个*六*合*彩*网站引发的血案 *六*合*彩*网站也能做成这样不容易呀! 取得一段汉语的每个字的首字母 写入、读取 cookie 无聊顺便复习了下前面学的东西! 网页效果集合(小技巧) Oracle中隐式游标和显式游标的教训[同事的经历] C#.net word 受控编程系列1-向word中插入图片 OA需要分析3 OA需求分析2 OA需求分析1
安装和部署企业程序库(Installation and Deployment of Enterprise Library)
kwame · 2006-01-16 · via 博客园 - kwame

 

作者:黎波

日期:200563


安装步骤

  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. 生成一个批处理文件,用来安装AssemblyGAC [6]
  10. 执行步骤7生成的批处理安装EntLib V1.0 AssemblyGAC [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.csGlobalAssemblyInfo.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] 主要是生成一个批处理文件,将我们编译好的EntLibGacutil.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 LibraryJohan DanforthWebLog.

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

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

[参考]

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