2009-08-19 36 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