ng5*_*000 8 c# excel vsto clr-hosting
Excel VSTO如何工作?如果我在Visual Studio 2005中创建Excel工作簿解决方案,那么我可以愉快地编写代码,完全访问Excel对象模型,甚至将Excel工作表视为设计图面.当我构建解决方案时,我得到一个.XLS
文件和一个.DLL
(包含我的C#代码).
我现在可以通过双击来启动Excel工作表,.XLS
并且我的工作表上有我所有的C#代码和我在工作表上删除的任何控件等.
表格如何引用.DLL
?excel工作簿/表的哪一部分告诉它需要启动CLR并托管我的程序集?
根据这个(感谢PintSizedCat)Excel 2003,会发生以下情况:
Microsoft Office应用程序检查自定义文档属性以查看是否存在与文档关联的托管代码扩展.有关更多信息,请参阅自定义文档属性概述.
如果存在托管代码扩展,则应用程序会加载AddinLoader.dll.这是一个非托管DLL,它是Visual Studio 2005 Tools for Office Second Edition运行时的加载程序组件.有关更多信息,请参阅用于Office运行时的Visual Studio工具概述.
AddinLoader.dll加载.NET Framework并启动Visual Studio Tools for Office运行时的托管部分.
Visual Studio Tools for Office运行时创建应用程序域,为应用程序域设置不信任"我的计算机区域"的策略,并检查代码访问安全策略存储以查找自定义程序集的策略.
.NET Framework验证程序集针对策略提供的证据.如果失败,则会引发错误.如果通过,则该过程继续.
如果自定义使用部署清单,则Visual Studio Tools for Office运行时使用它来检查程序集更新.如果需要更新,则立即执行.
Visual Studio Tools for Office运行时将程序集加载到应用程序域中.
Visual Studio Tools for Office运行时调用自定义程序集中的Startup事件处理程序.有关详细信息,请参阅Office Project事件的Visual Studio工具.
在我的测试项目的Excel工作簿中,我有两个自定义属性:
_AssemblyName,value =*_AssemblyLocation,value = {533b2c13-a125-418a-bfff-9546b0762807}
我想这些是将VSTO运行时指向程序集的属性.
这一切都在注册表中完成,您应该能够找到密钥HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel
或您的equivelant应用程序.我有更多使用COM Addins的经验,这些经验也在注册表中的其他地方注册.此密钥下面应该有一个LoadBehaviour项,用于确定应用程序的加载方式(2是手动加载,3是启动时自动加载).
你有VSTO的安装项目吗?在那里你可以看到设置的注册表项,但是安装程序将/应该在GAC中注册VSTO(虽然我不会接受我的话,因为我对VSTO有点不和我所说).
希望这有帮助,我会尝试为您找到更多信息.
编辑您应该尝试阅读以下http://msdn.microsoft.com/en-us/library/bb386298.aspx,它将为您提供插件的说明.它实际上只是一个COM主机的包装器,它从注册表中加载,VSTO使用一些Interoparability代码与之对话.
另外有用的是http://msdn.microsoft.com/en-us/library/23cw517s.aspx(Visual Studio Tools for Office入门,请不要敲它因为它说入门,有很多有用的信息在那里)和http://msdn.microsoft.com/en-us/library/hy7c6z9k.aspx(从第一个链接,是VSTO Addins的概述).
归档时间: |
|
查看次数: |
6091 次 |
最近记录: |