首页 > 代码库 > vs的dll引用机制
vs的dll引用机制
vs2012编译的时候,遇到一个问题就是项目A中运行时缺失dll的问题,项目A引用类库B,类库B引用了x,y等dll,编译A项目的时候,出现x没拷贝到bin 目录。
通过跟踪编译输出发现,x没拷贝的原因是y这个dll也引用了x,而且y引用的x版本高于当前B引用的。这样在编译的时候,就会出现提示x版本1.0.0.0与x版本0.9.3.0出现冲突,选择x版本1.0.0.0 因为此版本更高(图1),然后开始遍历相关路径(图2)去寻找该1.0.0.0版本的dll,这个编译机制应该是vs出于引用高版本dll以向下兼容的目的。
具体如下图所示
图1
图2
查看编译输出的方法 打开vs的工具--选项 选择诊断或者详细,能捕捉到编译时更多的操作动作,具体如下图3
图3
但是类库B也引用了x和y,b编译时却可以在bin文件得到x的输出,如果是依照上面的编译机制,x也是不能编译输出的,这里vs采用了如下机制,即类库B引用的x版本0.9.0.0虽然低于y引用的x 1.0.0.0,但在这里x是直接引用在类库B里,那这样x 0.9.0.0即为主版本,那这时会将该0.9.0.0版本的x编译到类库B的bin文件目录下。
在项目obj/bin文件目录下 会有”项目名.csproj.FileListAbsolute.txt”的文件,里面是编译时输出到bin文件目录下的dll列表。
vs的dll引用机制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。