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以向下兼容的目的。

具体如下图所示

clipboard

图1

image

图2

查看编译输出的方法 打开vs的工具--选项 选择诊断或者详细,能捕捉到编译时更多的操作动作,具体如下图3

image

图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文件目录下。

image

在项目obj/bin文件目录下 会有”项目名.csproj.FileListAbsolute.txt”的文件,里面是编译时输出到bin文件目录下的dll列表。

转载于:https://www.cnblogs.com/flowwind/p/4204446.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值