问题描述
我之前安装了某第三方控件,调用的是 A.dll(版本是5.0),现在系统升级该控件,现在使用A.dll(版本为7.0)。我现在想web程序中可以调用这两个版本的dll。由于工程庞大想用一种简单的方法让系统自己去找到调用版本。我的想法是用[全局程序集缓存工具和程序集链接器]来实现,现在实现下来不顺利。希望能有大神指点迷津。
解决方案
解决方案二:
顶,顶,顶,顶
解决方案三:
顶,顶,顶,顶
解决方案四:
mark一下,我也遇到这个问题了,求大神指点
解决方案五:
System.Reflection.Assembly.LoadFrom(string)和System.Activator.CreateInstance()可能帮到你
解决方案六:
高大上(就是看不懂),绑定下吧。dll如果换成方法,或者类,就可以用简单工厂了
解决方案七:
现在想用程序集链接器命令:A.dll之前做过强名称签名(sn),但是,不是我做的,所以不知道密钥对的文件名是什么;也不知道密钥对的容器是什么。有没有方法可以找到A.dll对应的密钥对的文件名和密钥对的容器?al/linksource:policy.config/t:lib/out:policy.X.X.A.dll/keyname:XXXXXX没有文件名或容器名,因此上面粗体部分不知道该填什么。请高手指教。
解决方案八:
我以前遇到过这个问题,记得当时是在用EnterpriseLogging的时候。一个Solution中有多个projectA,B,C.因为ProjectA是我自己加的这个dll,是3.x,而在ProjectB中,用到了一个第三方的dll,而这个dll依赖于5.x的Logging.所以从Nuget获取这个第三方dll的时候一同也就引用了这个5.x的Logging.总之就是,ProjectA用的是3.x的版本,而ProjectB用的是5.x的版本。但是我遇到了问题,就是一旦需要加载Logging这个dll的时候,它就会跑出找出的dll与预期的dll版本不一致的异常。你同时用到两个版本的dll,程序没有跑出任何异常吗?
解决方案九:
引用7楼sundacheng1989的回复:
我以前遇到过这个问题,记得当时是在用EnterpriseLogging的时候。一个Solution中有多个projectA,B,C.因为ProjectA是我自己加的这个dll,是3.x,而在ProjectB中,用到了一个第三方的dll,而这个dll依赖于5.x的Logging.所以从Nuget获取这个第三方dll的时候一同也就引用了这个5.x的Logging.总之就是,ProjectA用的是3.x的版本,而ProjectB用的是5.x的版本。但是我遇到了问题,就是一旦需要加载Logging这个dll的时候,它就会跑出找出的dll与预期的dll版本不一致的异常。你同时用到两个版本的dll,程序没有跑出任何异常吗?
就是想用程序集链接器解决版本冲突问题。现在不知道怎么找到之前dll的强名称签名的密匙容器。
解决方案十:
其实我是想跟你探讨一个问题。在一个solution中,在一般情况下,如果加入了同一个dll的不同的版本,那么会抛出异常吗?