Windows允许使用COM对象without having to register the COM dll。
该机制是在应用程序的清单中包含“依赖程序集”:
MyProgram.exe.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="myapp.exe" version="1.2.3.4" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Contoso.Frobber" version="5.1.81.4" /> </dependentAssembly> </dependency> </assembly>
然后你的文件夹包含:
MyProgram.exe
MyProgram.exe.manifest
(如果您使用的是外部清单;也可以嵌入RT_MANIFEST
资源)Contoso.Frobber.manifest
(COM DLL清单)confrob.dll
(包含我们要使用的COM类的dll)使用COM dll的程序集清单包含:
Contoso.Frobber.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="Contoso.Frobber" version="1.0.0.0" /> <file name = "confrob.dll"> <comClass progid="Frobber.Gizmo" clsid="{00028C00-0000-0000-0000-000000000046}" description="Gizmo Frobber by Contoso" threadingModel = "Apartment" /> <typelib tlbid="{00028C01-0000-0000-0000-000000000046}" version="1.0" helpdir=""/> </file> </assembly>
优异。我现在可以使用来自(本机或.NET)可执行文件的COM对象,而无需注册COM对象。
现在我想使用 ASP.NET网站中的COM对象,而无需注册COM对象。
可能的?
Windows还允许使用exe to call a .NET library, without having to install the .NET assembly into the Global Assembly Cache。