我有一些应用程序(一些本机,一些.NET)使用清单文件,以便它们可以完全隔离部署,而无需任何全局COM注册.例如,在myapp.exe.manifest文件中声明对dbgrid32.ocx com服务器的依赖关系如下,该文件与myapp.exe位于同一文件夹中:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity type="win32" name="myapp.exe" version="1.2.3.4" />
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="dbgrid32.ocx" version="5.1.81.4" />
</dependentAssembly>
</dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)
dbgrid32.ocx与它自己的dbgrid32.ocx.manifest文件一起部署到同一文件夹:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity type="win32" name="dbgrid32.ocx" version="5.1.81.4" />
<file name="dbgrid32.ocx">
<typelib
tlbid="{00028C01-0000-0000-0000-000000000046}"
version="1.0"
helpdir=""/>
<comClass progid="MSDBGrid.DBGrid"
clsid="{00028C00-0000-0000-0000-000000000046}"
description="DBGrid Control" />
</file>
</assembly>
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但手动维护这些清单文件有点痛苦.有没有办法自动生成这些文件?理想情况下,我只想声明应用程序对COM服务器列表(本机和.NET)的依赖性,然后自动生成其余部分.可能吗?
如何在未注册的情况下在.NET C#应用程序中使用AutoitX(OCX/ActiveX库)?
我想用它创建一个应用程序,而无需使用管理员权限进行安装.
我在MSDN上找到了一些页面,如COM组件的免注册激活:关于为DLL文件创建清单文件的演练.我尝试过但没有成功.也许这是可能的,我错误地创造了它.不幸的是我丢失了XML文件,所以我不能在这里发布.
我还尝试在参考属性中设置隔离并启用互操作类型,但没有成功.
是否可以让AutoItX在C#中工作而无需注册?如果是这样,我该怎么办?
我认为它应该可以用作DLL而不是OCX,但我不知道在C#中如何使用它.
目前,我使用它像:
AutoItX3Lib.AutoItX3 autoit = new AutoItX3Lib.AutoItX3();
autoit.AutoItSetOption("WinTitleMatchMode", 2);
Run Code Online (Sandbox Code Playgroud)
所以,如果我要进行直接的DLL调用,我该怎么办?