我写了一个.net dll,我可以从vb6成功调用。部署到xp,vista 32和vista 64盒子一直在工作。它不适用于Windows 7 64位。我无法在最终用户计算机上运行regasm.exe /codebase name.dll
,因为他们不是管理员。
目前我的应用程序部署在“c:\ Program Files(x86)\ application name”目录中。
我正在使用免注册COM来访问.NET互操作程序集。
首先,您必须使用mt.exe
创建程序集清单,并可选择使用sn.exe
重新签名强名称
mt.exe -managedassemblyname:{Your_DLL} -nodependency -out:{Your_DLL}.manifest
mt.exe -manifest {Your_DLL}.manifest -outputresource:%{Your_DLL};1
sn -Ra {Your_DLL} {Your_PFX}
然后像这样在应用程序清单中引用此程序集清单
<dependency>
<dependentAssembly>
<assemblyIdentity name="{Your_DLL}" version="1.0.0.0" publicKeyToken="hash_here" processorArchitecture="x86" />
</dependentAssembly>
</dependency>
其中assemblyIdentity
在{Your_DLL}的汇编清单中匹配assemblyIdentity
。
在客户端计算机上,VB6可执行文件和.NET dll必须位于同一文件夹中。无需注册,也无需GAC注册。
我正在使用UMMM工具自动化清单创建过程,但如果是一次性设置,您可以手动完成。
部署需要管理员权限。在这种情况下,它应该会失败。