已有条件:三个类库:A,B,C(三个类库的引用关系是A引用B,B引用C)
一、
题设:现在创建一个ProjectOne,仅引用A,并new了A中一个独立的对象(该对象构造函数中未使用B),请问ProjectOne能编译成功吗?
回答:可以;
二、
题设:现在创建一个ProjectTwo,引用A,并new了A中一个对象且调用该对象的一个成员函数,该成员函数会调用B中的一个类的实例的成员函数,这个编译能通过吗?
回答:不行,如果将对B的引用也加到ProjectTwo中的话,就可以编译成功。
注意:上面两个问题都是针对于间接引用而产生的问题,VS在编译过程有记忆之前引用的功能,如果第一次将间接引用加入项目,编译成功后,将间接引用删掉,那么vs还是能够找到间接引用的文件地址。这个是项目的缓存机制导致的。具体文件是DesignTimeResolveAssemblyReferencesInput.cache
一个工程在引用dll的时候,可以将引用方式设置为 嵌入式的引用。这样发布成exe的时候,将引用的dll一起打包起来。