天天看点

VS C# dll依赖引用的传递复制

测试背景

对VS,假设a.exe程序依赖一个b.dll,而这个b.dll又依赖c.dll与第三方的d.dll,c.dll依赖第三方的e.dll那么在生成a.exe的时候,会不会将b.dll、c.dll、d.dll、e.dll也生成且复制到a.exe的生成目录呢?

新建工程测试

在VS的一个解决方案中添加a.exe, b.dll, c.dll的工程,关系如下:

a依赖b,b依赖c与d,其中c是项目,d是三方dll
           

这里直接写测试结果了:

1.对于a.exe直接依赖的dll,无论是否代码中实际引用,都在生成的时候复制

2.对于b.dll引用的c.dll,除非在代码中实际引用了,否则是不会复制

3.更新的规则是:有实际代码依赖的dll更新了代码,生成a.exe才会再次生成,当然如果选择重新生成则会跟着重新更新

4.生成或重新生成b.dll,都不会自动将新dll复制到a.exe的目录