根据这个(感谢 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 运行时调用自定义程序集中的启动事件处理程序。有关详细信息,请参阅用于 Office 项目事件的 Visual Studio 工具。
在我的测试项目的 Excel 工作簿中,我有两个自定义属性:
_AssemblyName,值 = * _AssemblyLocation,值 = {533b2c13-a125-418a-bfff-9546b0762807}
我想这些是将 VSTO 运行时引导到我的程序集的属性。