现在是要做某个系统的插件,这个宿主系统引用了“Microsoft.ApplicationBlocks.Data.dll”,这个类库与微软提供的那个在类名和命名空间上完全相同,但具体代码有修改,并加了强名称签名。 为了实现插件的逻辑,需要使用另外一个类库,这个类库引用了微软提供的那个标准的“Microsoft.ApplicationBlocks.Data.dll”。 现在的问题是,这个两个类库名字相同,但互相不能替代,该如何部署呢?或是有其他的解决方法?? 清各位大侠帮忙,如果嫌分数少可再开帖给分,谢谢?
http://www.cnblogs.com/hunts/archive/2007/01/12/619008.html
只要有下列任何一个不同,程序集怎么会名称相同呢? 你不是做强名称签名了吗?
1、简单名称
2、版本号
3、强名称签名
4、支持的文化具体如何用extern alias,参考3楼GTX280朋友提供的链接。
好像您也没有看清楚我的问题
1.这两个重名的DLL都不是我创建的,所以我控制不了程序集的文件名,而且只有其中一个有强名称签名。
2.这两个DLL在我写的插件代码里面都没有引用的,所以根本涉及不到别名的问题。
3.现在的问题是宿主系统和我使用的类库都引用了文件名相同,但内容不同的两个程序集,在发布的时候我没有办法使这两个程序集共存在同一个文件夹下,因为文件名字相同,如何解决呢?
<configuration xmlns="urn:schemas-microsoft-com:asm.v1">
<runtime>
<assemblyBinding>
<probing privatePath="shared;myfolder" />
</assemblyBinding>
</runtime>
</configuration>MSDN中的How the Runtime Locates Assemblies
这个方法试过,不过不行,宿主程序好像有限加载宿主应用目录下的那个DLL,而忽略另外指定的 privatePath 下的DLL,还有其他可能的思路吗?
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.ApplicationBlocks.Data"
publicKeyToken="B7131CACA45CCF9D"
culture="neutral" />
<codeBase version="5.1.2.0" href="Microsoft.ApplicationBlocks.Data.Host.dll"/>
</dependentAssembly>
</runtime>