2009-08-19 50 views
0

在特定时间段内可以注册和取消注册DLL的最大次数是多少?一个DLL可以注册/注销的最大次数?

这里就是我的意思是,为什么:我有一个持续集成包,建立我的VB6应用程序,为了构建每个解决方案的80个组件,I:

  1. 检索每个项目的依赖 在转
  2. 注册DLL(使用< comregister注销的恶性 = “假” ......>)
  3. 建设项目
  4. 发布输出.dll文件或.exe 安全的地方
  5. 注销(使用 < comregister注销= “真” ...... 在恶性...>)的dll

现在,这一切工作时间的100%,如果我手动构建了80个项目中的每一个;但是,如果我让我的恶性脚本来构建又将所有的80个项目(以正确的顺序),那么构建失败,让我在CruiseControls'输出这个错误...

[comregister] Unregistering 1 files 
[comregister] c:\location\myBuild.include(301,4): Error while unregistering 'c:\\[project-location]\lib\myDependentDLLFile.dll' Unable to find an entry point named '**DllUnregisterServer**' in DLL 'c:\\[project-location]\lib\myDependentDLLFile.dll'. 

(我不知道其中“DllUnregisterServer的”来源于尽管!)

同样的错误,那么出现,我过去建故障点,这大约是50项目,建成区面积每后续项目。我的意思是,前50个项目的建设情况良好,其余的则反过来失败。

我已经通过在NAnt内的comregister调用中使用failonerror =“false”属性来减轻这一点,但是这会让我怀疑这是否正常或不... ...!

理想情况下,我想删除failonerror属性和报告真正的错误,回到CruiseControl的日志工具。任何想法或建议?

+0

我不知道是否找不到DllUnregisterServer只是一个猜测,实际的错误是别的...?你能否让Nant以某种方式显示Win32错误?也许你可以修改comregister任务来发出更多的信息.​​..... DllUnregisterServer是所有DLL COM服务器必须导出的函数,以及哪个注册代码只是盲目地调用注销服务器的对象。 – 2009-08-20 07:36:25

回答

1

没有没有最大值。使用Dumpbin.exe或Depends.exe来查看该DLL内部并检查是否实际定义了DllUnRegisterServer入口点。

+0

未注册并且失败的DLL是我在此过程中早期构建的DLL - 您认为可能存在链上的问题吗? – 2009-08-19 10:55:32

+0

DllUnregisterServer是用于取消注册COM服务器的入口点。如果这是一个COM服务器DLL,那么你需要确保它有入口点。如果不是,那就不要尝试注册或取消注册。事实上,我不明白你为什么要在构建过程中取消注册它。 – 2009-08-19 11:29:48

+0

那么,我试图注销它,否则我会有相同的DLL在我的PC /服务器上的不同位置注册了一百万次。原因在于,我正在使用Ivy来解决从它的存储库到项目(即在此实例中构建的)文件夹内的lib文件夹的依赖关系。因为它是一个VB6 DLL,我必须在使用前注册它,然后我希望自己清理并取消注册不需要的依赖文件。这就是所有,真的。 – 2009-08-19 11:34:12

0

我不认为teher任何限制,无DLL注册/注销的。

+0

那么,多数民众赞成在我最初的想法,但这似乎向我显示,否则...:o( – 2009-08-19 10:53:39