为了支持命令行编译,我修改了工程引用方式,例如:
ProjectA-->projectB(原来为工程引用)
改为 ProjectA--->..\Runtime\projectB.dll
我先编译projectB,成功
再编译projectA,提示找不到project或引用,可projectB.dll明明存在啊,后来我打开projectA.vbp,发现其引用为CLSID指定的.dll文件,我查询注册表,发现projectB.DLL的CLSID与projectA.vbp中指定的不同,这个问题有没有办法解决或者避免?这个clsID不一致的原因可能是我在机器A上编译测试过工程,ok,拷贝源代码到机器B,出现上述情况,可能与不同机器编译时产生的clsid不一致有关,有没有办法预先指定clsID?

解决方案 »

  1.   

    编译DLL时选中二进制兼容试试
      

  2.   

    可能是projectB编译选项的问题吧。一般来讲,无论这个projectB.dll在什么位置,只要它的ID在注册表中存在,系统就可以识别它。所以你应该设置projectB工程为二进制兼容模式,使得projectB.dll的每次编译都保持同一个ID,这样projectA就可以对其正确引用。
      

  3.   

    谢谢两位,确实如你们所说,我终于发现了问题,原来的开发人员在指定二进制兼容的DLL时,使用了旧版本,而新版本的DLL与旧版本的不一致,所以用新版本的编译导致这个问题,搞定~~另外,想问问两位高手,有没有办法预先指定编译的CLSID??