引用的dll的文件名是 api-sdk.dll ,他的dll引用了newTownSoft.json 并且还给合并了的那种。
然后我的项目是 webform,我把它的 api-sdk.dll复制到我的bin目录后引用完了,现在编译出错,提示我 xxx类同时存在与xxxxxxxxx。
如果我的项目是控制台之类的话,好像是可以在引用处点击属性然后设置别名,为这个 api-sdk的引用设置别名就不会冲突了,但是我发现在web项目里面并没有属性-别名这个设置项,
我又不能把我web项目里面的newTownSoft.json给删除掉。。。。。。毕竟这样一来我的项目岂不是得和这个 api-sdk.dll 共存亡了吗,那样万一我想升级一下 newTownSoft.dll 岂不是不能升级?
所以我该怎么搞。。。。。
api-sdk.dll 是苏宁家的 c# sdk ,苏宁在我眼里还算个大厂,搞出这种质量的东西,真的是不敢恭维。。。。。。
如果有苏宁的技术看到了,麻烦给个sdk的源代码我自己撸一下?我就搞不懂一个sdk为什么都不能给源码就提供一个dll文件,真的是。。。。。。
创建一个新的appdomain,并动态加载他们家的dll。实现隔离
新的project引用他们家的dll,并对接口做封装,2个appdomain要交换的对象要继承marshalrefobject,或者用值类型,字符串等。
@czd890: 动态加载?我没搞过这种的,很复杂吗。。。。
我刚刚已经封装了一个Lib了,Lib引用了他们家的sdk,然后设置了一个别名,然后编译出了一个新的Lib,然后和他们家的Lib一起复制到到bin目录去了,然后还是一样提示会冲突啊。
@LoveCoder: 没有的,最终还是在一个appdomain下。自然冲突。
https://www.cnblogs.com/rinack/p/5865372.html
搜索一下C# 跨appdomain调用。还是比较简单的
对使用到接口dll 我一般都是封装一下,这样才不会存在冲突。
创建一个新的应用程序类库,对dll 进行封装,重载,或者重新定义是可以的。
我不理解你说的这个“封装一下”,你的意思是,我自己写一个 Lib,这个Lib 引用它的dll,然后设置别名?
但是,我总归是要把它的dll一起复制到web项目的bin目录下的吧?最后还不是要冲突,提示某某类同时存在于xxx和xxxxxx吗?
求详细操作。我刚刚已经封装了一个Lib了,Lib引用了他们家的sdk,然后设置了一个别名,然后编译出了一个新的Lib,然后和他们家的Lib一起复制到到bin目录去了。
@LoveCoder: 可以设置类库是本地使用还是当前使用的 vs 里面貌似有设置。对编译有设置是否本地还是复制的。你看下有用吗?
@Sopcce: 没懂,能说明白点吗。。。。我没操作过这个
我所遇到的dll报错问题,主要是64位和32位冲突的问题,你可以先看看是否是这原因。
你好,请问你是用c#开发什么啊,客户端?我是小白,希望了解一下,谢谢!!!
@dudu 大还没来吗
– LoveCoder 5年前有人吗
– LoveCoder 5年前建议给出具体的编译出错信息
– dudu 5年前