VB6 exe/.Net dll的免注册COM [英] reg-free COM with VB6 exe/.Net dll

查看:89
本文介绍了VB6 exe/.Net dll的免注册COM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

希望这是正确的论坛...

hope this is the right forum...

我正在尝试使用无reg的COM来运行vb6 exe,并引用了VB.Net dll.在XP上,我得到了无用的配置错误"消息,启动时出错.在Vista上,我在激活时得到429.在事件日志中,有一个SideBySide事件,内容为"

i'm trying to get a vb6 exe running with reg-free COM, referencing a VB.Net dll.  on XP i get the useless "configuration incorrect" error on startup.  on Vista i get a 429 on activation.  in the event log there's a SideBySide event saying "

"C:\ ... \ Project1.exe.Manifest"的激活上下文生成失败.从属程序集系统,publicKeyToken ="b77a5c561934e089",版本="2.0.0.0".找不到.请使用sxstrace.exe进行详细诊断.

Activation context generation failed for "C:\...\Project1.exe.Manifest". Dependent Assembly System,publicKeyToken="b77a5c561934e089",version="2.0.0.0" could not be found. Please use sxstrace.exe for detailed diagnosis.

"

"

我创建了一个vb.net类库,并将以下内容添加到Class1

I've created a vb.net class library, and added the following to Class1

导入 System.Runtime.InteropServices

Imports System.Runtime.InteropServices

< Guid( " 420fed7d-41b8-44bb-8752-57ab3782bb31" )> _

<Guid("420fed7d-41b8-44bb-8752-57ab3782bb31")> _

公共 界面 IClass1

Public Interface IClass1

Sub Test()

Sub Test()

结束 界面

End Interface

< Guid( " c34a8893-eaaa-4a87-8b2a-2d4b1e94a10a" ),ClassInterface(ClassInterfaceType .none),ProgId( " RegFree.Class1.1.0" )> _

<Guid("c34a8893-eaaa-4a87-8b2a-2d4b1e94a10a"), ClassInterface(ClassInterfaceType.None), ProgId("RegFree.Class1.1.0")> _

公共 Class Class1

Public Class Class1

实现 IClass1

Implements IClass1

公共 Sub Test() 实现 IClass1.Test

Public Sub Test() Implements IClass1.Test

MsgBox( " hello from vb.net" )

MsgBox("hello from vb.net")

结束 Sub

End Sub

结束 Class

构建dll之后(称为RegFreeClassLibrary1),我使用genman32生成并嵌入了如下清单:

<? xml 版本 = &"; 1.0 &"; 编码 = " UTF-8 " 独立 = " " ?>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

< 程序集 xmlns = " ur chemas-microsoft-com :asm.v1 &; manifestVersion = " 1.0 &"; >

<assembly xmlns="urnchemas-microsoft-com:asm.v1" manifestVersion="1.0">

< assemblyIdentity

<assemblyIdentity

名称 = " RegFreeClassLibrary1 "

版本 = " 1.0.0.0 "

processorArchitecture = " MSIL " />

processorArchitecture="MSIL" />

< clrClass

<clrClass

clsid = " {C34A8893-EAAA-4A87-8B2A-2D4B1E94A10A} "

程序 = " RegFree.Class1.1.0 " >

threadingModel = " 两者 "

名称 = " RegFreeClassLibrary1.Class1 "

runtimeVersion = " v2.0.50727 " >

runtimeVersion="v2.0.50727">

</ clrClass >

</clrClass>

< 文件 名称 = " RegFreeClassLibrary1.dll " >

<file name="RegFreeClassLibrary1.dll">

</ 文件 >

</file>

</ 程序集 >

</assembly>

我用Form1中的以下代码创建了一个简单的Standard EXE项目

i've created a simple Standard EXE project, with the following code in Form1

私有子Command1_Click()
Dim foo作为RegFreeClassLibrary1.Class1
设置foo = New Class1
foo.Test
End Sub

Private Sub Command1_Click()
    Dim foo As RegFreeClassLibrary1.Class1
    Set foo = New Class1
    foo.Test
End Sub

和一个Project1.exe.manifest文件,其中包含:

and a Project1.exe.manifest file containing:

<? xml 版本 = " 1.0 " 编码 = " utf-8 " ?>

<?xml version="1.0" encoding="utf-8"?>

< 程序集 manifestVersion = " 1.0 " xmlns = " urn chemas-microsoft-com:asm.v1 ""; >

<assembly manifestVersion="1.0" xmlns="urnchemas-microsoft-com:asm.v1">

< assemblyIdentity 名称 = " Project1.exe " 版本 = " 1.0.0.0 " 语言 = " 中性 " processorArchitecture = " x86 " type = " win32 " />

<assemblyIdentity name="Project1.exe" version="1.0.0.0" language="neutral" processorArchitecture="x86" type="win32" />

< 依赖性 >

<dependency>

< dependentAssembly >

<dependentAssembly>

< assemblyIdentity 名称 = " RegFreeClassLibrary1 " version = " 1.0.0.0 " processorArchitecture = " MSIL " > />

<assemblyIdentity name="RegFreeClassLibrary1" version="1.0.0.0" processorArchitecture="MSIL"/>

</ dependentAssembly >

</dependentAssembly>

</ 依赖关系 >

</dependency>

</ 程序集 >

</assembly>

在我看来,这一切都是教科书,但尝试在System.dll中查找清单失败:

It all looks text book to me, but it fails trying to look for a manifest in System.dll:

=================
开始激活上下文生成.
输入参数:
Flags = 0
ProcessorArchitecture = x86
CultureFallBacks = en-US; en
ManifestPath = C:\ Users \ rodman \ Documents \ Visual Studio 2005 \ Projects \ Binaries \ Project1.exe.Manifest
AssemblyDirectory = C:\ Users \ rodman \ Documents \ Visual Studio 2005 \ Projects \ Binaries \
Application Config File =
-----------------
INFO:解析清单文件C:\ Users \ rodman \ Documents \ Visual Studio 2005 \ Projects \ Binaries \ Project1.exe.Manifest.
INFO:清单定义标识为Project1.exe,processorArchitecture ="x86",type ="win32",version ="1.0.0.0".
INFO:参考:RegFreeClassLibrary1,processorArchitecture ="MSIL",版本="1.0.0.0"
INFO:解析参考RegFreeClassLibrary1,processorArchitecture ="MSIL",版本="1.0.0.0"
INFO:解析为ProcessorArchitecture MSIL的参考.
INFO:解析为Neu的文化的参考. tral.
INFO:正在应用绑定策略.
INFO:未找到绑定策略重定向.
INFO:开始进行程序集探测.
INFO:在WinSxS中找不到程序集.
INFO:尝试在C:\ Users \ rodman \ Documents \ Visual Studio 2005 \ Projects \ Binaries \ RegFreeClassLibrary1.DLL中探测清单.
INFO:清单在C:\ Users \ rodman \ Documents \ Visual Studio 2005 \ Projects \ Binaries \ RegFreeClassLibrary1.DLL.
INFO:结束程序集探测.
INFO:解析参考RegFreeClassLibrary1.mui,language =&#x2a;
INFO:解析ProcessorArchitecture MSIL的参考.
INFO:解析美国文化的参考.
INFO:正在应用绑定策略.
INFO:找不到绑定策略重定向.
INFO:开始进行程序集探测.
INFO:在WinSxS中找不到程序集.
INFO:找不到用于美国文化的清单.
INFO:结束程序集探测.
INFO:Reso
的参考资料.
INFO:正在应用绑定策略.
INFO:找不到绑定策略重定向.
INFO:开始进行程序集探测.
INFO:在WinSxS中找不到程序集.
> INFO:找不到用于文化en的清单.
INFO:结束程序集探测.
INFO:解析清单文件C:\ Users \ rodman \ Documents \ Visual Studio 2005 \ Projects \ Binaries \ RegFreeClassLibrary1.DLL.
INFO:清单定义身份为RegFreeClassLibrary1,processorArchitecture ="MSIL",版本="1.0.0.0".
INFO:参考:System,publicKeyToken ="b77a5c561934e089",版本="2.0.0.0" "
INFO:引用:System.Data,publicKeyToken ="b77a5c561934e089",版本="2.0.0.0"

INFO:引用:System.Xml,publicKeyToken ="b77a5c561934e089",version ="; 2.0.0.0"
INFO:解析参考系统,publicKeyToken ="b77a5c561934e089",版本="2.0.0.0".
INFO:解析ProcessorA的参考rchitecture System,publicKeyToken ="b77a5c561934e089",版本="2.0.0.0".
INFO:解决文化中性的引用.
INFO:正在应用绑定策略.
INFO:未找到发布者策略.
INFO:找不到绑定策略重定向.
INFO:开始程序集探测.
INFO:在WinSxS中找不到程序集.
INFO:尝试在C:\ Windows \ assembly \中探测清单GAC \ System \ 2.0.0.0__b77a5c561934e089 \ System.DLL.
INFO:尝试在C:\ Users \ rodman \ Documents \ Visual Studio 2005 \ Projects \ Binaries \ System.DLL中探查清单.在C:\ Users \ rodman \ Documents \ Visual Studio 2005 \ Projects \ Binaries \ System.MANIFEST中探查清单.
INFO:尝试在C:\ Users \ rodman \ Documents \ Visual Studio 2005 \ Projects \中探查清单Binaries \ System \ System.DLL.
INFO:尝试在C:\ Users \ rodman \ Documents \ Visual Studio 2005 \ Projects \ Binaries \ System \ System.MANIFEST中探测清单.
INFO:找不到清单对于邪教ure Neutral.
信息:结束程序集探测.
错误:无法解析引用System,publicKeyToken ="b77a5c561934e089",version ="2.0.0.0".
错误:激活上下文生成失败. br>结束激活上下文生成.

=================
Begin Activation Context Generation.
Input Parameter:
 Flags = 0
 ProcessorArchitecture = x86
 CultureFallBacks = en-US;en
 ManifestPath = C:\Users\rodman\Documents\Visual Studio 2005\Projects\Binaries\Project1.exe.Manifest
 AssemblyDirectory = C:\Users\rodman\Documents\Visual Studio 2005\Projects\Binaries\
 Application Config File =
-----------------
INFO: Parsing Manifest File C:\Users\rodman\Documents\Visual Studio 2005\Projects\Binaries\Project1.exe.Manifest.
 INFO: Manifest Definition Identity is Project1.exe,processorArchitecture="x86",type="win32",version="1.0.0.0".
 INFO: Reference: RegFreeClassLibrary1,processorArchitecture="MSIL",version="1.0.0.0"
INFO: Resolving reference RegFreeClassLibrary1,processorArchitecture="MSIL",version="1.0.0.0".
 INFO: Resolving reference for ProcessorArchitecture MSIL.
  INFO: Resolving reference for culture Neutral.
   INFO: Applying Binding Policy.
    INFO: No binding policy redirect found.
   INFO: Begin assembly probing.
    INFO: Did not find the assembly in WinSxS.
    INFO: Attempt to probe manifest at C:\Users\rodman\Documents\Visual Studio 2005\Projects\Binaries\RegFreeClassLibrary1.DLL.
    INFO: Manifest found at C:\Users\rodman\Documents\Visual Studio 2005\Projects\Binaries\RegFreeClassLibrary1.DLL.
   INFO: End assembly probing.
INFO: Resolving reference RegFreeClassLibrary1.mui,language="&#x2a;",processorArchitecture="MSIL",version="1.0.0.0".
 INFO: Resolving reference for ProcessorArchitecture MSIL.
  INFO: Resolving reference for culture en-US.
   INFO: Applying Binding Policy.
    INFO: No binding policy redirect found.
   INFO: Begin assembly probing.
    INFO: Did not find the assembly in WinSxS.
    INFO: Did not find manifest for culture en-US.
   INFO: End assembly probing.
  INFO: Resolving reference for culture en.
   INFO: Applying Binding Policy.
    INFO: No binding policy redirect found.
   INFO: Begin assembly probing.
    INFO: Did not find the assembly in WinSxS.
    INFO: Did not find manifest for culture en.
   INFO: End assembly probing.
INFO: Parsing Manifest File C:\Users\rodman\Documents\Visual Studio 2005\Projects\Binaries\RegFreeClassLibrary1.DLL.
 INFO: Manifest Definition Identity is RegFreeClassLibrary1,processorArchitecture="MSIL",version="1.0.0.0".
 INFO: Reference: System,publicKeyToken="b77a5c561934e089",version="2.0.0.0"
 INFO: Reference: System.Data,publicKeyToken="b77a5c561934e089",version="2.0.0.0"
 INFO: Reference: System.Xml,publicKeyToken="b77a5c561934e089",version="2.0.0.0"
INFO: Resolving reference System,publicKeyToken="b77a5c561934e089",version="2.0.0.0".
 INFO: Resolving reference for ProcessorArchitecture System,publicKeyToken="b77a5c561934e089",version="2.0.0.0".
  INFO: Resolving reference for culture Neutral.
   INFO: Applying Binding Policy.
    INFO: No publisher policy found.
    INFO: No binding policy redirect found.
   INFO: Begin assembly probing.
    INFO: Did not find the assembly in WinSxS.
    INFO: Attempt to probe manifest at C:\Windows\assembly\GAC\System\2.0.0.0__b77a5c561934e089\System.DLL.
    INFO: Attempt to probe manifest at C:\Users\rodman\Documents\Visual Studio 2005\Projects\Binaries\System.DLL.
    INFO: Attempt to probe manifest at C:\Users\rodman\Documents\Visual Studio 2005\Projects\Binaries\System.MANIFEST.
    INFO: Attempt to probe manifest at C:\Users\rodman\Documents\Visual Studio 2005\Projects\Binaries\System\System.DLL.
    INFO: Attempt to probe manifest at C:\Users\rodman\Documents\Visual Studio 2005\Projects\Binaries\System\System.MANIFEST.
    INFO: Did not find manifest for culture Neutral.
   INFO: End assembly probing.
 ERROR: Cannot resolve reference System,publicKeyToken="b77a5c561934e089",version="2.0.0.0".
ERROR: Activation Context generation failed.
End Activation Context Generation.

推荐答案

它接近了,但探测了GAC文件夹而不是GAC_MSIL.我闻起来像是处理器的体系结构问题.


这篇关于VB6 exe/.Net dll的免注册COM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆