首页 新闻 搜索 专区 学院

蛋疼,引用一个第三方dll,结果它的dll里面引用了和我项目里面同一个dll,编译报错,求解决?

0
悬赏园豆:5 [待解决问题]

引用的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文件,真的是。。。。。。

c#
LoveCoder的主页 LoveCoder | 初学一级 | 园豆:10
提问于:2019-02-26 21:01

@dudu 大还没来吗

LoveCoder 2年前

有人吗

LoveCoder 2年前

建议给出具体的编译出错信息

dudu 2年前
< >
分享
所有回答(4)
1

创建一个新的appdomain,并动态加载他们家的dll。实现隔离

czd890 | 园豆:11904 (专家六级) | 2019-02-27 10:10

新的project引用他们家的dll,并对接口做封装,2个appdomain要交换的对象要继承marshalrefobject,或者用值类型,字符串等。

支持(0) 反对(0) czd890 | 园豆:11904 (专家六级) | 2019-02-27 10:15

@czd890: 动态加载?我没搞过这种的,很复杂吗。。。。
我刚刚已经封装了一个Lib了,Lib引用了他们家的sdk,然后设置了一个别名,然后编译出了一个新的Lib,然后和他们家的Lib一起复制到到bin目录去了,然后还是一样提示会冲突啊。

支持(0) 反对(0) LoveCoder | 园豆:10 (初学一级) | 2019-02-27 15:17

@LoveCoder: 没有的,最终还是在一个appdomain下。自然冲突。
https://www.cnblogs.com/rinack/p/5865372.html
搜索一下C# 跨appdomain调用。还是比较简单的

支持(0) 反对(0) czd890 | 园豆:11904 (专家六级) | 2019-02-28 10:16
0

对使用到接口dll 我一般都是封装一下,这样才不会存在冲突。

创建一个新的应用程序类库,对dll 进行封装,重载,或者重新定义是可以的。

sopcce | 园豆:481 (菜鸟二级) | 2019-02-27 10:40

我不理解你说的这个“封装一下”,你的意思是,我自己写一个 Lib,这个Lib 引用它的dll,然后设置别名?
但是,我总归是要把它的dll一起复制到web项目的bin目录下的吧?最后还不是要冲突,提示某某类同时存在于xxx和xxxxxx吗?
求详细操作。我刚刚已经封装了一个Lib了,Lib引用了他们家的sdk,然后设置了一个别名,然后编译出了一个新的Lib,然后和他们家的Lib一起复制到到bin目录去了。

支持(0) 反对(0) LoveCoder | 园豆:10 (初学一级) | 2019-02-27 15:16

@LoveCoder: 可以设置类库是本地使用还是当前使用的 vs 里面貌似有设置。对编译有设置是否本地还是复制的。你看下有用吗?

支持(0) 反对(0) sopcce | 园豆:481 (菜鸟二级) | 2019-02-28 15:50

@Sopcce: 没懂,能说明白点吗。。。。我没操作过这个

支持(0) 反对(0) LoveCoder | 园豆:10 (初学一级) | 2019-02-28 20:26
0

我所遇到的dll报错问题,主要是64位和32位冲突的问题,你可以先看看是否是这原因。

Lorzen | 园豆:204 (菜鸟二级) | 2019-03-01 16:11
0

你好,请问你是用c#开发什么啊,客户端?我是小白,希望了解一下,谢谢!!!

小李飞刀初代 | 园豆:202 (菜鸟二级) | 2019-03-27 11:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册