我有一个 dll 项目,它从Microsoft Enterprise Library 3.1的安装目录中引用Microsoft.Practices.EnterpriseLibrary.Common.dll
(=“ dll ”) 。它有一个以“b03f”开头的公钥。
我有另一个引用版本 9.30.2.5168 的项目(它在 GAC 文件夹中显示 9.2.0.0)。Miner dll 有一个以“196b”开头的公钥。
第三个 dll 引用另外两个。 Miner.Geodatabase.dll
这是一个简单的vs2005解决方案,上面的项目
ELTest.rar -
1. RefEL,只是从它的lib文件夹中引用dll 。
2. RefGeodatabse,仅引用Miner.Geodatabase.dll
来自 GAC 的。
3. RefBoth,引用其他两个项目。
编译后,RefEL 的 bin/debug 文件夹包含dll的“b03f”(“real”)版本,而 RefGeodatabase 和 RefBoth 的 bin/debug 包含公钥以“196b”开头的 dll版本- 与 Miner dll 相同。在我看来,他们已经重新编译了企业库(并且可能改变了一些东西)。
在运行时(在我的真实解决方案中,而不是在这个伪造的解决方案中),我的“两个”项目调用“EL”项目,需要“b03f”dll,找不到它,然后崩溃。
我应该做些什么?也许如果我在 GAC 中注册企业库 dll,它们会在运行时找到。是否有不需要我在目标计算机上安装 entlib 的不同解决方案?