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

推荐订阅源

NISL@THU
NISL@THU
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threatpost
Cloudbric
Cloudbric
H
Heimdal Security Blog
P
Privacy International News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Tor Project blog
A
Arctic Wolf
W
WeLiveSecurity
SecWiki News
SecWiki News
S
Security Affairs
Schneier on Security
Schneier on Security
PCI Perspectives
PCI Perspectives
Simon Willison's Weblog
Simon Willison's Weblog
K
Kaspersky official blog
P
Privacy & Cybersecurity Law Blog
AWS News Blog
AWS News Blog
T
The Exploit Database - CXSecurity.com
V2EX - 技术
V2EX - 技术
AI
AI
Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
博客园 - 司徒正美
有赞技术团队
有赞技术团队
C
Cybersecurity and Infrastructure Security Agency CISA
腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
H
Hacker News: Front Page
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
The Hacker News
The Hacker News
阮一峰的网络日志
阮一峰的网络日志
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
月光博客
月光博客
博客园 - 【当耐特】
Recorded Future
Recorded Future
O
OpenAI News
Hacker News: Ask HN
Hacker News: Ask HN
Scott Helme
Scott Helme
N
News and Events Feed by Topic
Help Net Security
Help Net Security
GbyAI
GbyAI
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
小众软件
小众软件

博客园 - 小柯

C#模仿QQ截图功能 asp.net 中 DropDownList 加入可输入功能解决方案 - 小柯 解决SQL Server Management Studio Express为英文的问题 Visual Studio 2008 简体中文正式版下载及序列号(无使用期限限制,正式版) 程序人生--一个程序员对学弟学妹建议(转) .NET 换肤软件 IrisSkin 2.0 破解版下载及多款皮肤下载 (转)JavaScript 弹出窗口总结 (转)JavaScript常用判断函数(正则表达式版) C#中常用的经典文件操作方法 反编译工具Reflector下载(集成两个常用.net插件,FileGenerator和FileDisassembler) C#遍历指定目录的递归(完美改进版+完整程序源码) C#遍历目录树的递归 在ASP.NET中自动给URL加上超链接 ASP.NET 中 Cookie 的基本知识 ASP.NET2.0统计图表(转) ASP.NET获取IP及电脑名等信息的简单方法+通用类文件源码 (转)了解你的兵器---VS2005 快捷键 Asp.Net Ajax系列(二) 局部页面呈现(Partial-Page Rendering) Asp.net Ajax 系列(一) ----------用了再说
Enterprise Library 4.1 Configuration的使用
小柯 · 2010-04-17 · via 博客园 - 小柯

Enterprise Library Configuration是Enterprise Library附带的编辑App.Config的工具,安装Enterprise Library就会编译生成。使用这个工具编辑App.config时非常方便,但是也遇到一些使用上的问题。记录下来,以备后查。

    问题起因:在调试的过程中,希望能够跟踪到Enterprise Library的内部,所以将Enterprise Library的Blocks中的代码加入到了自己的项目中,并在项目中引用这些组件。

问题描述:使用VSTS的插件Enterprise Library Configuration编辑并保存项目的App.config。在编译时选择全部重新编译,顺利通过(中间也遇到些小麻烦,不过不是本文档的重点讨论范畴)。运行时,一旦调用到Enterprise Library的组件,便会报以下错误提示:

    未能加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项,找到程序集清单定义与程序集不匹配。(异常来自……)

    问题分析:

1、看到PublicKeyToken,就猜测是因为强命名的关系,即清单与引用的程序集强命名不匹配(准确的说是公钥和私钥不匹配)。

2、 不匹配的原因:微软发布的程序集是包含强命的(即“……\Enterprise Library 4\ Bin”中的*.dll)。而本机编译得到的程序集是不包含强命名的(即“……Enterprise Library 4\EntLib4SCR\Bin”中的*.dll)

3、 VSTS 中嵌入的Enterprise Library Configuration是微软发布的,所以用它来编辑App.Config就会在配置文件中引入强命名,而项目引用的是本机编译得到的程序集,自然不匹配。

    解决办法:

1、 使用VSTS中嵌入的Enterprise Library Configuration(“……\Enterprise Library 4\ Bin”)编辑配置文件,但引用的程序集一定得是微软发布的(“……\Enterprise Library 4\ Bin”)。

2、 使用本机编译得到的Enterprise Library Configuration(“……Enterprise Library 4\EntLib4SCR\Bin”)来编辑配置文件,引用的程序集就可以是本机编译得到的(“……Enterprise Library 4\EntLib4SCR\Bin”)。

其实道理很简单,就是必须得用配套的东西,要么用微软发布的,要么用本机编译的。

    后记:

1、 本来是想可以使用Enterprise Library的同时还可以编辑其中的代码,没想到弄巧成拙。版本控制在微软这样的企业必定是非常严格的,所以如果你想修改Enterprise Library版本,合理的做法是也给Enterprise Library的每个项目都加上强命名(巨大的工作)。

2、 为了表述清楚,上文中的本地编译得到的程序集(“……Enterprise Library 4\EntLib4SCR\Bin”)实际上是在安装Enterprise Library时得到的,如果你希望使用的是已经经过你修改的程序集,应该使用“……Enterprise Library 4\EntLib4SCR\Block\Configuration\Src\Console\bin\Debug”下的Enterprise Library Configuration来编辑你的配置文件,才能确保正确。

3、网上大部分说法是去掉配置文件中的“PublicKeyToken=31bf3856ad364e35”,我觉得这样做不是很合理,虽然能够使用,但是显然损失了很多可控性。原理是因为本机默认编译出的程序集本身就是“PublicKeyToken=null”,所以能够通过。

终于有点明白了,本人才疏学浅,这么简单的问题搞了这么久,不过欣慰的是总算有点收获。还有一点没有搞明白的是:VSTS中的插件路径在什么地方保存,要是知道直接改到本地编译后的路径就好了。我在本地文件和注册表中都没有找到(注册表中有这个路径,不过改了之后没有效果)。希望路过的高手能告诉一声,先谢了!