Com 可以注册/取消注册DLL的最大次数?

Com 可以注册/取消注册DLL的最大次数?,com,dll,cruisecontrol.net,nant,Com,Dll,Cruisecontrol.net,Nant,在特定时间段内,DLL可以注册和注销的最大次数是多少 以下是我的意思和原因:我有一个构建VB6应用程序的持续集成包,为了构建解决方案的80个组件中的每一个,我: 检索每个项目的依赖项 依次 注册dll(在NAnt中) 使用) 建设项目 发布输出.dll或.exe 安全的地方 取消注册dll(在NAnt中使用 ) 现在,如果我手动构建80个项目中的每一个,这些都能100%的工作;然而,如果我让我的NAnt脚本依次构建所有80个项目(按照正确的顺序),那么构建就会失败,在CruiseControl的

在特定时间段内,DLL可以注册和注销的最大次数是多少

以下是我的意思和原因:我有一个构建VB6应用程序的持续集成包,为了构建解决方案的80个组件中的每一个,我:

  • 检索每个项目的依赖项 依次
  • 注册dll(在NAnt中) 使用
  • 建设项目
  • 发布输出.dll或.exe 安全的地方
  • 取消注册dll(在NAnt中使用
  • 现在,如果我手动构建80个项目中的每一个,这些都能100%的工作;然而,如果我让我的NAnt脚本依次构建所有80个项目(按照正确的顺序),那么构建就会失败,在CruiseControl的输出中出现这个错误

    [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的日志记录设施报告真正的错误。有什么想法或建议吗?

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

    我不认为这是对DLL注册/取消注册数量的任何限制。

    好吧,这是我最初的想法,但这似乎表明我不是这样的…:o(正在取消注册且失败的DLL是我将在过程的早期构建的DLL-您认为可能会有问题吗?DllUnregisterServer是用于取消注册COM服务器的入口点。如果这是COM服务器DLL,则需要确保它具有该入口点。如果不是,则不要y来注册或注销它。事实上,我不明白你为什么要在生成过程中注销它。嗯,我试图注销它,否则我会让同一个dll在我的PC/服务器上的不同位置注册一百万次。原因是,我正在使用Ivy来解析从其“存储库”到其中一个lib文件夹的依赖关系项目所在的文件夹(正在该实例中生成)因为它是一个VB6 dll,所以我必须在使用前注册它,然后我希望在使用后进行清理并注销不需要的依赖文件。真的,仅此而已。COM服务器只能注册一次。如果从其他位置再次注册,则注册信息将替换前者。因此,您可能需要根本不需要注销它。但这并不能解释你所遇到的错误。如果是COM服务器DLL,你的DLL应该包含该入口点。我想知道找不到DllUnregisterServer是否只是猜测,而实际的错误是其他原因…?你能让Nant以某种方式显示Win32错误吗?也许你可以修改comregister任务发出更多信息…DllUnregisterServer是一个所有DLL COM服务器都必须导出的函数,注册代码只是盲目地调用它来注销服务器的对象。