Ok, so che questo è piuttosto specifico, ma ho perso tutta la giornata lavorativa su di esso quindi ho davvero bisogno di qualche spiegazione razionale, quindi il mio capo e mia moglie non lo farebbero licenziarmi
L'interruttore regafile RegAsm non fornisce lo stesso output dell'interruttore codebase
Secondo MSDN:
l'interruttore /regfile
"genera il file reg specificato per il montaggio"
l'interruttore /codebase
"crea una voce Codebase nel registro specifiying il percorso del file per un assembly"
Ho intuito che c'erano 2 modi diversi di fare il stessa cosa La verità era, mi sbagliavo:
METODO 1
C:\>"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" "C:\SERVER.dll" /regfile
Registry script 'C:\SERVER.reg' generated successfully
Reg uscita File:
REGEDIT4
[HKEY_CLASSES_ROOT\xfeed.server.X]
@="SERVER.XLS"
[HKEY_CLASSES_ROOT\xfeed.server.X\CLSID]
@="{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}"
[HKEY_CLASSES_ROOT\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}]
@="SERVER.XLS"
[HKEY_CLASSES_ROOT\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="SERVER.XLS"
"Assembly"="SERVER, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6e3de07ee666a5f5"
"RuntimeVersion"="v2.0.50727"
[HKEY_CLASSES_ROOT\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\InprocServer32\1.0.0.0]
"Class"="SERVER.XLS"
"Assembly"="SERVER, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6e3de07ee666a5f5"
"RuntimeVersion"="v2.0.50727"
[HKEY_CLASSES_ROOT\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\ProgId]
@="xfeed.server.X"
[HKEY_CLASSES_ROOT\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\Implemented Categories\ {62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]
METODO 2
Ma quando eseguo direttamente il comando di commutazione codebase piuttosto che usando il file reg, le chiavi hanno avuto impatto nella r egsitry sono diverse (e di lavoro, al contrario dell'uscita precedente)
C:\>"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" "C:\SERVER.dll" /codebase
Types registered successfully
ouptut Registro con codice di base:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}]
@="SERVER.XLS"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\Implemented Categories]
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}]
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="SERVER.XLS"
"Assembly"="SERVER, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6e3de07ee666a5f5"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///C:/SERVER.DLL"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\InprocServer32\1.0.0.0]
"Class"="SERVER.XLS"
"Assembly"="SERVER, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6e3de07ee666a5f5"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///C:/SERVER.DLL"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8F4A5B5E-8DD7-30A3-993F-18C7E2C457CF}\ProgId]
@="xfeed.server.X"
Come si può notare, roba è ora nel Wow6432Node e le informazioni sono molto più complete (in particolare CodeBase !!!)
Se qualcuno potesse darmi un motivo razionale per questo, quindi Potrei evitare di menzionare l'attività paranormale come causa di una giornata lavorativa persa, sarei molto grato
Si è verificato un problema durante la registrazione degli assembly dovuti all'utilizzo del RegAsm a 32 bit anziché della versione a 64 bit. Prova a registrarlo con entrambi gli strumenti, usando lo stesso parametro/Codebase, e vedi se questo aiuta. –
Una logica per cosa? Questo è tutto normale. Usa/codebase sulla tua macchina dev e riproduci i file .reg nel registro con la versione corretta di regedit.exe. c: \ windows \ syswow64 \ regedit.exe per un server COM a 32 bit. Poco importa usare un regfile diverso dall'avvio di un programma di installazione. –
@HansPassant: C'è un punto che utilizza regfile perché volevo creare uno script di installazione esplicita piuttosto che chiamare RegAsm sui computer client per l'implementazione, inoltre, volevo sapere esattamente quali voci del registro "codebase" stavano generando. –