繁体   English   中英

部署Excel UDF

[英]Deploying an Excel UDF

我有一个调用Web服务的excel UDF。 UDF代码是一个自动化插件代码,它是一个C#类库,我为它创建了一个安装程序。 当我运行设置时,没有对特定插件代码的引用出现在excel的toos - > addins - >自动化插件列表中,并且该功能在公式栏中没有出现。 我正在使用VS 2008和Excel 2003。

我在这里错过了什么吗? 我应该定义Excel必须从某个东西中选择dll的路径,以便它指向从udf代码生成的dll吗? 或者是否有任何安全问题需要处理? 客户端计算机的安全级别设置为“完全信任”,但插件未显示在列表中。

我在这里错过了什么吗?

发生这种情况是因为安装自动化加载项要求在注册表中创建自定义“CLSID {GUID} \\ Programmable”条目,在创建自动化加载项时,通常通过包含使用ComRegisterFunctionAttributeComUnregisterFunctionAttribute标记的方法来处理在你班上。 然后在程序集上运行RegAsm时注册这些类。

但是,在使用Visual Studio安装程序包时,会静静地忽略ComRegisterFunctionAttribute和ComUnregisterFunctionAttribute。 发生这种情况是因为安装项目使用/ regfile开关运行RegAsm,以生成包含所有必需注册表项的.reg文件。 这是.reg文件,然后在客户端站点运行.msi包时使用。 问题是当RegAsm通过/ regfile开关运行时,生成的.reg文件不包含由用户定义的寄存器函数(例如,用ComRegisterFunctionAttribute和ComUnregisterFunctionAttribute标记的那些)进行的任何注册表更新。

因此,您的自定义“CLSID {GUID} \\ Programmable”注册表项未创建,因此您的自动化加载项未显示在自动化加载项列表中。

要解决此问题,您必须通过其他方式创建自己的自定义“CLSID {GUID} \\ Programmable”条目。 最简单的方法是使用安装程序包的注册表编辑器部分。

正确处理自动化加载项的安装程序包的所有步骤有点复杂。 幸运的是,我逐步解释了如何执行此操作(以及对其发生原因的更详细描述)作为问题的答案: 如何在安装的VB.NET中编写用于Excel的COM Server并在自动化服务器列表中注册

希望这可以帮助!

麦克风

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM