【发布时间】:2011-01-23 15:02:52
【问题描述】:
我工作的软件公司为学校构建软件,因此我们的客户端计算机通常被锁定,导致我们几乎无法在其上安装任何东西。
我们的旧系统主要基于一个(非常大的)MS Access 项目,因此它只需从本地文件夹运行即可解决访问问题。
我被赋予了将一些系统重新开发为 c# .NET 的任务 - 但是在过渡阶段,如果能够让 access 项目触发 .NET 事情,那就太好了。
我今天已经玩了几个小时的 com 互操作,但是使这些工作的唯一方法是使用 RegAsm.exe 注册它们 - 不幸的是,这不是客户端环境中的选项。
我尝试过 GetObject / CreateObject 但在引用 dll 或 tlb 文件时都不起作用,还有其他方法可以实现吗?
理想的解决方案是将 com interop dll 放在与 Access 项目相同的目录中。
是的,在任何人说之前,我就知道 MS Access 是邪恶的,只适合非常小的项目 - 但我 4 个月前才到这里......
马龙
【问题讨论】:
-
呃,你可能“知道”这一点,但事实并非如此。访问不是邪恶的,也不适合大型项目。它只需要适当地使用。您的 cmets 暗示甚至没有使用 Access,只有 Jet,因此这表明存在一定程度的混乱,可能会使您难以解决问题。也就是说,如果您甚至不了解所使用工具的关键区别,那么您就不太可能编写一个与您的理解水平相当模糊的工具一起使用的应用程序。
-
在下面阅读您的 cmets,您说您正在“使用 MS Access 项目,没有编译 VB6.exe”,所以我很困惑。它是 VB6 应用程序还是 Access 应用程序?如果是后者,您应该能够通过不在 Access 应用程序中创建引用并使用后期绑定来解决许多问题。但是您的 CreateObject cmets 往往暗示您的问题实际上是您无法注册所需的组件,因此这无济于事。我不清楚问题是什么,即是 .NET 问题还是 Access 问题。简而言之,没有足够的信息来真正提供答案。
-
@David 我认为问题在于 Marlon 想要从 Access 应用程序调用 C# 对象。但是他不能注册他的兼容 COM 的 C# 对象,因为用户没有权限。问题是是否有任何技术可以让 Access 项目调用 C# 对象,而无需管理员权限来注册 C# 对象。
-
无法为当前用户注册组件?
-
是的,我们不能有任何类型的安装过程。
标签: c# ms-access com vb6 interop