vb6和vb .net在vista 64上与Windows 7互操作

问题描述 投票:1回答:3

我写了一个.net dll,我可以从vb6成功调用。部署到xp,vista 32和vista 64盒子一直在工作。它不适用于Windows 7 64位。我无法在最终用户计算机上运行regasm.exe /codebase name.dll,因为他们不是管理员。

目前我的应用程序部署在“c:\ Program Files(x86)\ application name”目录中。

.net deployment vb6 uac dll
3个回答
2
投票

我正在使用免注册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工具自动化清单创建过程,但如果是一次性设置,您可以手动完成。



0
投票

部署需要管理员权限。在这种情况下,它应该会失败。

© www.soinside.com 2019 - 2024. All rights reserved.