2010-07-21 35 views
0

我想为.NET应用程序部署一个.NET COM互操作DLL。在开发过程中,对于需要注册COM interop的程序集,我在构建属性下选中了“Register for COM interop”选项。在这种方法中,一切正常。注册一个.NET COM互操作DLL工程从项目生成但不是从regasm

但是,当我部署ASP.NET应用程序并尝试使用regasm工具手动注册程序集时,它不起作用。 :(

我的最终目标是这样的:

一旦用户进入网站并没有注册的对象,用户可以使用ClickOnce的DLL注册之后,用户应该不会被提示输入任何东西,一切应该只是工作!

预先感谢您。

回答

2

正如你所预料的,即试图安装在客户端计算机上的COM DLL中的Web应用程序将要面对许多安全障碍。没有管理员权限的用户可以通过ClickOnce安装.NET代码(包括COM-visible类),但是我认为你可能会发现即使这样也达不到你想要的内容...

ClickOnce安装部署到位于文件系统的用户配置文件部分下方的隐蔽位置。部署的应用程序中的任何COM组件在应用程序中都可见,但在客户机上的其他位置不可见。特别是,在浏览器中运行的客户端脚本将无法调用通过ClickOnce部署的COM组件。

ClickOnce部署故意将部署的代码与系统其余部分分开。

我看不到任何方式让您的web应用程序部署,然后与COM DLL进行交互,除非用户具有管理员权限并显式注册该DLL。一般来说,我认为这是好东西

其他人可能会有更好的建议,但我可以看到的唯一方法就是让您将使用此DLL的功能构建到运行在桌面上的.NET应用程序中。这可以通过ClickOnce进行部署,并通过Web应用中的链接进行调用。它甚至可以将数据发布到您的Web服务器。但我无法看到它与浏览器交互的方式。

+0

谢谢先生!你的理解和知识帮助我找到了解决问题的方法。 – Sai 2010-07-23 19:18:58

1

不能帮助你的ClickOnce的东西,但它可能是你需要使用regasm的/基本代码选项(如果你不将其安装到GAC),例如,

regasm AssemblyName.dll /codebase 

你也将需要一个管理该到Vista/Windows环境下工作,7

相关问题