2 tjz119 tjz119 于 2016.03.15 17:33 提问

类名,命名空间,dll名冲突问题,求各位大神帮助,给个思路也行。c#

我现在有两个项目,项目A要调用项目B的B1.dll。但是B1.dll中调用了common1.dll等dll。

这种common dll在两个项目中都存在。悲剧的是,因为一些原因,在移植的过程中common dll被修改了。比方说部分命名空间,部分类名,以及类中部分属性(也有没变的)。换句话说就是虽然他们的dll名字一样,但是已经不是一个东西了。如果直接引用的话,一定会出现dll,类之间的冲突。

如图所示:ConsoleApplication1要调用右侧项目中SO生成的dll,但是该dll应用了CommonContract.dll。该dll在第一个项目中也存在,但是内容不完全相同。
如图所示:ConsoleApplication1要调用右侧项目中SO生成的dll,但是该dll应用了CommonContract.dll。该dll在第一个项目中也存在,但是内容不完全相同

请问各位大神,假设不修改过多的两边的项目代码(实在是庞大且公用逻辑不敢乱动)的话,有什么办法可以对之进行类型转换?序列化有这种用法么?请各位不吝赐教。

2个回答

oyljerry
oyljerry   Ds   Rxr 2016.03.15 17:38

直接把dll改成两个名字,根据不同的要求,调用不同的dll

tjz119
tjz119 不能改名字,涉及太广。
2 年多之前 回复
u013104440
u013104440   2016.03.18 11:33

你调用类库的时候,类库不是有命名空间吗?带上命名空间啊

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C#中程序集与名称空间区别及冲突时解决方案
写两个点的东西,一个是程序集与名称空间的区别,另一点是,两个程序集(库)使用同一个名称空间,另一个程序集同时应用这两个库时发生的二义性及解决方法。 程序集在定义和使用上有很麻烦的地方,这里主要简要的能和名称空间区分开就好。关于强名,版本问题,私有程序集,共享程序集的问题可以参考文章最后给出的文档及MSDN。另外《C#入门经典》第三版中也有专门一个章节写这个,但是第四版的时候就被删减了。 程序集是.NET的最小逻辑单位,有两种主要的程序集。应用程序程序集(*.exe)这个具有入口点,另一个是库程序集(*.
使用命名空间解决名字冲突
命名空间时间上就是一个由程序设计者命名的内存区域。程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分割开来。 在程序设计中,难免会有一个页面包含多个其他页面的情况。当包含不同的页面是,不同的页面就有可能出现同名的类或者变量等,但显然他们在不同的页面中的作用是不同的,当包含到同一个页面的时候,就会出现重复定义的错误。这种情况可以使用命名空间来结
C++学习小疑问:类的名称能否和命名空间的名称相同?
对于类的名称能否和命名空间名称相同。我们可以看如下的实例: 定义命名空间和类名称相同: //name.h #pragma once namespace li { class li { public : void cotestout(); }; }//name.cpp #include #include "name\name.h" using namespace std; void
c++动态库中使用命名空间的问题
这是C++才会有的语言特性. 假如你使用一个程序库,他里面有桓霰淞拷衋bc,但是你自己也不小心定义了一个叫abc的变量,这样就会引起重定义错误.所以为了避免这种现象,C++引入了名字空间(namespace)的概念,编写程序库的时候最好把所有东西放在一个namespace中,例如 namespace MY { int abc; char cab; } 这样,你在外界就要通过MY::a
PHP基础篇--利用命名空间解决类名问题
//util.php <?php namespace com\instance\util; class Debug{ static function sayHello(){ print("Hello,".__NAMESPACE__."\n"); } }//main.php namespace main; require_once "util.php"; use com\inst
namespace和里面的类不能同名
类和他所在的命名空间不能同名,如果同名虽然编译包括生成dll都没有问题,但是当别的地方引用这个命名空间时,不能直接引用这个同名类,在编辑器里输入类名时不会自动显示这个类,只能找到namespace ,
IntelliSense: 后面有“::”的名称一定是类名或命名空间名
IntelliSense: 后面有“::”的名称一定是类名或命名空间名 修改一个简单的helloworld实例,重新创建一个scene 但是scene。cpp和scene。h相同的名称 建了又删除,再建 scene 关键字就报这样的错, 最后重新建了一个项目就可以了 应该是前面的文件没有删除彻底还是什么?
项目引用了DLL文件,也写了Using,但是编译时提示:未能找到类型或命名空间名称
“引用了DLL文件,也写了Using,但是提示:未能找到类型或命名空间名称”的解决办法
引入第三方类库冲突报错
在工程内引入了zbar 和baidushare 。在编译时,抛出了如下异常: - duplicate symbol _base64_encode in: - /Users/admin/Develope/TestThirdPart/TestThirdPart/ZBarSDK/libzbar.a(symbol.o) - /Users/admin/Develope/TestThirdP
vs 2015 不是类或命名空间名称
原本没有错误的工程, AutoUpdater项目使用了poco,好好的,结果另一个项目 include 了 AutoUpdater.h,居然提示 “Poco”: 不是类或命名空间名称” #include "stdafx.h" #include "AutoUpdater.h" #include //#include "Utility.h" //#include "Poco/Timer.h" #