什么VS项目选项“注册COM互操作”实际上做了什么?因为当我使用这个选项启用我的库时,我可以从VBScript调用我的库上的CreateObject。但是,如果我没有这个构建,然后手动运行regasm的CreateObject失败。所以我想知道 - VS2010做什么,我不做?“注册COM Interop”实际上做了什么?
51
A
回答
50
它与使用/ tlb和/ codebase选项运行Regasm.exe的做法相同。/codebase选项可能是您忘记的选项。 Regasm喜欢假设您将该DLL放入GAC中,并在不这样做时生成警告。 GAC确实是避免DLL Hell的一个很好的方法,总是COM问题。但在您的开发机器上不适合,您不想在开发和测试代码时污染GAC。它只对用户的机器很重要,可能会暴露于多个版本。
在64位机器上使用Regasm.exe的错误版本是另一种陷入困境的方法,通常在您的机器上有4个版本。一定要区分32位和64位版本(c:\ windows \ microsoft \ framework vs framework64),他们编写不同的注册表项。你想选择一个与客户端应用程序兼容的。使用两者都可以,.NET代码可以在任何一种模式下运行,但很不寻常。并区分v2.0.50727(.NET 2.0到3.5SP1)和v4.0版本。选择正确的Visual Studio命令提示符是战斗的一半。
相关问题
- 1. 注册为COM Interop
- 2. session_register_shutdown实际上做了什么?
- 3. Int [] Reverse - 这实际上做了什么?
- 4. rake db:test:prepare实际上做了什么?
- 5. LD_INCLUDE_PATH实际上做了什么吗?
- 6. numpy.cov实际上做了什么
- 7. ld -m --verbose实际上做了什么?
- 8. `python setup.py check`实际上做了什么?
- 9. IMetadataExchange端点实际上做了什么?
- 10. BlockingCollection.Dispose实际上做了什么?
- 11. pdb文件实际上做了什么?
- 12. Expression.Bind() - 它实际上做了什么?
- 13. #include实际上做了什么?
- 14. TortoiseSVN清理实际上做了什么?
- 15. CascadeType.REFRESH实际上做了什么?
- 16. Android SQLite - SQLiteDatabase.replace()实际上做了什么?
- 17. android:stretchMode实际上做了什么?
- 18. std :: ofstream :: close()实际上做了什么?
- 19. regsvr32 filename.ax实际上做了什么?
- 20. startAccessingSecurityScopedResource()实际上做了什么?
- 21. EntityManger.gettransaction.rollback方法实际上做了什么?
- 22. NSLog实际上做了什么?
- 23. DBSlayer - 它实际上做了什么?
- 24. terraform刷新实际上做了什么?
- 25. mysql_real_escape_string()实际上做了什么?
- 26. XCode'Clean'实际上做了什么?
- 27. e.preventDefault()方法实际上做了什么?
- 28. OpenGL - glDeleteTextures实际上做了什么?
- 29. -arrayWithArray实际上做了什么?
- 30. ifstream :: rdbuf()实际上做了什么?
谢谢!我使用/ codebase选项,但显然使用64位而不是32位版本。显式使用32位版本,并像魅力一样工作。 – hackerhasid 2010-08-22 20:23:46
请注意,使用这两个版本是可以接受的,.NET代码可以以任何方式运行。 – 2017-12-11 13:27:19