C# VS2012 中添加引用的含义?

刚学C#,并第一次使用vs2012。
每当"缺少命名空间"时都会在"解决方案资源管理器"的"引用"里添加需要的dll。
之后就可以在代码里使用using了。

我有几个疑问:
1、添加引用到底是个什么概念?
2、这个添加引用和动态加载dll有什么区别?
3、这个添加引用和静态加载lib有什么区别?
4、添加引用可以加哪些内容?只可以加dll吗?
5、添加引用和添加服务引用有什么区别呢?
6、添加引用后,程序运行时是否可以不再需要相应的dll了,就像静态加载一样?

添加引用到底是个什么概念?
简单的说就是将你引用的dll的程序集加载到你的工程里,你就可以调用这个里面的内容了
这个添加引用和动态加载dll有什么区别?
动态加载牵扯到反射技术,你可以看看反射的实现
添加引用可以加哪些内容?只可以加dll吗?
不一定是dll甚至连exe也可以添加,可以访问exe里面实现的public类或接口
添加引用后,程序运行时是否可以不再需要相应的dll了,就像静态加载一样
有些要手动将dll拷贝到本地

这些问题你可以阅读一下《CLR via C#》但这本书比较深,在《精通C#》里面也有讲解,你可以看看

我说的脱离添加的dll是指:程序运行时不需要相应的dll了,就像静态加载一样。

添加dll就像做网页的时候引用JavaScript和css一样,vs提供了很多功能都是封装在了一些对应的dll里面,你只有引用了dll,才能使用里面的功能

如果你会html的话应该容易理解我说的,在vs项目里,dll这些需要添加的引用就像html里面需要引用的的JavaScript和css文件一样,唯一的区别是html里你不引用js和css最多就是没有你想要的样式和功能,vs里面你不加引用它会一直报错,直到你添加了引用

引用的添加是更多的使用类,动态库是为了使用下面的方法,我是这么理解的不晓得对不对,还请大佬指教