Che cosa fa realmente l'opzione di progetto VS "Registra per interoperabilità COM"? Perché quando costruisco la mia libreria con questa opzione abilitata posso chiamare CreateObject sulla mia libreria da VBScript. Ma se costruisco senza questo e poi eseguo il regasm manualmente, CreateObject fallisce. Quindi mi chiedo - cosa fa VS2010 che non sto facendo?Cosa fa in realtà "Register for COM Interop"?
risposta
Esegue la stessa operazione di esecuzione di Regasm.exe con le opzioni/tlb e/codebase. L'opzione/codebase è probabilmente quella che hai dimenticato. A Regasm piace presumere che tu inserisca la DLL nel GAC e generi un avvertimento quando non lo fai. Il GAC è davvero un ottimo modo per evitare l'inferno DLL, sempre un problema di COM. Ma non appropriato sulla tua macchina di sviluppo, non vuoi inquinare il GAC mentre sviluppi e collaudi il codice. Importa solo sul computer dell'utente, quello che è probabile che sia esposto a più versioni.
L'utilizzo della versione errata di Regasm.exe su una macchina a 64 bit è un altro modo per mettersi nei guai, di solito ci sono 4 versioni sul computer. Assicurati di distinguere tra le versioni a 32 e 64 bit (c: \ windows \ microsoft \ framework vs framework64), scrivono chiavi di registro diverse. Vuoi scegliere quello che è compatibile con l'app client. Usare entrambi è ok, il codice .NET può essere eseguito in entrambe le modalità, ma piuttosto insolito. E distinguere tra v2.0.50727 (da .NET 2.0 a 3.5SP1) e le versioni v4.0. Scegliere il giusto Prompt dei comandi di Visual Studio è metà della battaglia.
- 1. "Register for COM Interop" vs "Make assembly COM visible"
- 2. Cosa fa in realtà CascadeType.REFRESH?
- 3. Cosa fa in realtà Kubernetes?
- 4. Che cosa fa in realtà StreamingContextStates.Clone?
- 5. Cosa fa in realtà registerHTTPOperationClass in AFNetworking?
- 6. Cosa fa "for (;;)" in C#?
- 7. COM Interop .NET STA
- 8. SQLite Android: cosa fa in realtà SQLiteDatabase.replace()?
- 9. Arduino F(): cosa fa in realtà
- 10. Cosa fa in realtà Sinatra :: Base.condition?
- 11. Cosa fa in realtà la Queue
- 12. Is System.Runtime.InteropServices.GuidAttribute utilizzato per qualsiasi cosa eccetto COM interop
- 13. C# + COM Interop, rilascio deterministico
- 14. Cosa fa in realtà questo? - Funzione Crazy C++
- 15. Cosa fa in realtà transitionEnterTimeout/transitionLeaveTimeout in React?
- 16. wordpress hacked: cosa fa in realtà questo script?
- 17. Cosa fa in realtà lo pseudo protocollo JavaScript?
- 18. Cosa fa in realtà la funzione python print()?
- 19. Che cos'è il motore di visualizzazione? Cosa fa in realtà?
- 20. Cosa fa in realtà il __file__ di Python?
- 21. Cosa restituisce in realtà System.in.read?
- 22. Cosa fa MethodImplAttribute (InternalCall, Runtime) per i metodi delle interfacce di interoperabilità COM?
- 23. Cosa è in realtà $ RPM_BUILD_ROOT?
- 24. COM Interop, il server RPC non è disponibile in C#
- 25. Quindi cosa significa "restituire 0" in realtà?
- 26. Forza .NET Interop per utilizzare la DLL COM locale
- 27. Cosa fa .shape [] fa in "for i in range (Y.shape [0])"?
- 28. Cosa fa overflow: hidden do for ul tag?
- 29. gfortran for dummies: cosa fa esattamente mcmodel = medium?
- 30. Interop COM e gruppi dipendenti dipendenti senza registrazione
Grazie! Stavo usando l'opzione/codebase ma apparentemente utilizzava la versione a 64 bit anziché a 32 bit. Ha usato esplicitamente la versione a 32 bit e ha funzionato come un fascino. – hackerhasid
Si noti che l'utilizzo di entrambe le versioni è accettabile, il codice .NET può essere eseguito in entrambi i modi. –