我开发了一个免注册的COM组件,它可以在目标机器上正常工作而无需注册组件.它是一个嵌入了tlb的dll,以及一个RT_MANIFEST资源,它具有列出组件的程序集依赖关系和CLSID的清单.
在Visual Studio(2008)中,我仍然需要注册这个COM组件来做至少我尝试过的两件事.添加对组件的引用时,除非注册组件,否则无法为引用选择隔离属性.除非已注册组件,否则在调试器运行时也无法创建对象的实例.但是,我可以添加引用并编译应用程序并在不注册组件的情况下运行它.
是否有一些方法可以在Visual Studio中使用免注册COM组件而无需注册它,或者是否必须在开发计算机上注册才能使所有内容正常工作?
我在运行于位置A的.Net客户端中使用激活上下文API,以在WS2008上的位置B(与A完全不同的位置,而不是同一台机器上的同级/后代等)中加载无注册限制的COM组件。通过传入ACTCTX中的位置B,它可以正常工作。
但是,我现在需要对另一个COM dll做同样的事情,而后者又依赖于生活在完全不同位置的几个.Net COM程序集。
我已将依赖的.Net程序集添加到清单中,并将清单和COM dll放置在位置B中,但是我必须将依赖的.Net程序集放置在位置A(客户端运行的位置)中,以使其正常工作。实际上,它们将位于与位置A和位置B完全不同的目录中。
我正在尝试做的事情是否可能,即是否可以使用激活上下文api将多个COM组件加载到不同的不相关目录中?
我正在开发许多使用RegFree COM Activation的应用程序,除了使用使用JIT类型编译器的旧技术运行其中一个应用程序外,一切运行良好.
为了让RegFree COM正常工作,我必须为启动的可执行文件提供清单(如果我错了,请更正我),并列出我的依赖项.我所有的其他应用程序都是内部构建的,我可以完全控制我的清单(创作,如果我嵌入它,如果我将它放在并排,等等).但是这个JIT编译器(ala Java JRE)不是我的,它已经包含(嵌入)一个清单.
我已经提取了清单(使用带有-inputresource和-outfile的MT),修改它并重新嵌入它.它像预期的那样工作.但是,由于没有对此可执行文件的所有权,我担心这种操作的合法性(修改第三方的可执行文件并重新分发它!)并且希望避免不得不做这样的事情.此外,我担心在某些时候这个可执行文件可能会被第三方签名,因此修改嵌入式清单将打破签名.
有没有办法让sxs-loader首先查找另一个清单?似乎如果它找到一个嵌入式,它默认采用它(在大多数情况下是好的).我可以提供一个配置文件或任何可以跳过嵌入式清单的内容,并为我提供并行提供的一个(myExe.exe.manifest,而不是myExe.exe中的RT_MANIFEST资源)吗?
我有一个用C#编写的DLL,并设置为COM可见性.我将它设置为并排组件,并且可以将应用程序成功部署到客户端PC免费注册.我的问题与开发PC有关.是否可以在类似的免注册庄园中针对DLL进行编译,或者是否需要在开发机器上进行注册?我已经尝试通过Project -> References
菜单直接添加DLL 并收到错误,指出"无法添加对特定文件的引用".DLL与.vbp文件位于同一目录中,我尝试添加DLL,无论是否存在客户端应用程序清单.