Visual Studio, .NET, Support Engineering, MSDN, CodeFx

程序怪人的工作间

MSDN技术支持工程师
随笔 - 30, 评论 - 48, 引用 - 2

导航

标签

每月存档

最新留言

  • re:300多个Sample工程,你怎么查找自己想要的?
    <p>&nbsp;</p> <p>Many gaming companies have been introducing new games on a re...
    by ewf433554(注册) on 2010/3/9 15:24:18
  • 求助VSTO的加载慢问题
    <p>你好!</p> <p>我部署后的VSTO程序的局域网内,没有连到internet。每次打开VSTO EXCEL都特别慢,大概30秒左右。别的同事也一样。很是苦...
    by summer(注册) on 2010/1/20 19:56:26
  • 关于VSTO问题请教
    <p>你好,我这两天在用C#做一个Outlook的插件,但是我有很多问题没有办法解决,在网上查了很多资料都发现没有太大帮助,可以加我QQ,给我指教一下吗?&nbsp; 谢谢哈<...
    by 丑猪儿(注册) on 2009/8/31 13:53:40
  • re: VSTO 先瘦身再发布:客户端配置文件
    re: dotAge 请确定在工程发布属性的预安装选项里面选择了“.NET Framework Client Profile”,并且没有选择“.NET Framework 3.5 SP1”,后者...
    by vsto(匿名) on 2008/10/31 14:01:38
  • re: vsto
    虽然我选择的是CDROM安装,但其实并不是说要刻个CD给用户,而是要做成一个本地的完全独立安装包。从客户体验角度讲,启动了一个setup以后,再让他等半天的感觉很不好。并且,即使下载时间相同,他们也宁...
    by dotAge(匿名) on 2008/10/27 17:58:35
  • re: VSTO 先瘦身再发布:客户端配置文件
    yanshuai: 你列出的那个 255.6MB 的安装包是用来给管理员在企业内部环境配置 .NET Client Profile 再分发用的,里面应该包含了适用于各种版本 Windows (XP /...
    by vsto(匿名) on 2008/10/24 11:48:51
  • re: VSTO 先瘦身再发布:客户端配置文件
    dotAge: 如果是在企业内部通过 UNC 发布,如果没有很苛刻的网络速率或者流量限制,其实完全可以考虑使用完整版本的 .NET Framework。因为很有可能其它的基于 .NET 的应用程序还是...
    by vsto(匿名) on 2008/10/24 11:44:07
  • re: VSTO 先瘦身再发布:客户端配置文件
    4color: 相比用 C++ 开发的 Office 加载项工程,26.5M 的客户端配置依然显得比较大。但是从 .NET 提供的功能、开发效率、调式难度等多方面综合考量,这样的配置有时候已经可以让我...
    by vsto(匿名) on 2008/10/24 10:54:39
  • re: VSTO 先瘦身再发布:客户端配置文件
    20多M另外的下载,还是很多的!!
    by 4color(匿名) on 2008/10/23 16:09:18
  • 仅适用于WebSite publish方式?
    如果我选择从UNC/CDROM位置发布,好像仍然是一个巨大的Framework分发包。
    by dotAge(匿名) on 2008/10/23 10:22:11
  • re: VSTO 先瘦身再发布:客户端配置文件
    The install location for prerequisites has not been set to 'component vendor's web site' and the fil...
    by yanshuai(匿名) on 2008/10/22 12:24:07
  • re: Visual Studio 2008 SP1 Beta 可以下载啦!
    已经更新,包含了正式下载页面的信息。
    by vsto(匿名) on 2008/5/13 10:48:50
  • re: Visual Studio 2008 SP1 Beta 可以下载啦!
    能否提供下载页面,而不仅仅是exe文件链接?毕竟主要想先看Release Note以评估改进之处
    by Ninputer(匿名) on 2008/5/12 7:53:42
  • re: 怎样捕捉 Outlook 对象的“保存”事件?
    不错!!
    by intermapper(匿名) on 2008/3/5 13:55:59
  • re: 谁想要 Xbox 360?
    诶~~不错,不错 可惜,自己英文不好啊~另外也不到怎么发现BUG
    by Gyc(匿名) on 2008/3/2 13:51:58

广告

谁动了我的插件?

  之前提到了 VSTO 2005 SE (以下简称 Cypress) 开发的 Office 插件可能无法被装载,微软已经提供了修正此问题的更新程序。现在我们来探究一下引发此问题的根本原因——谁动了我的插件?

  先了解一下 Cypress 针对 Office 2003 插件的基本装载原理。用 Cypress 开发的 Office 插件并不是直接被 Office 应用程序加载的,编译得到的 .NET 程序集没有被注册为 COM 组件,而是由一个 Cypress 提供的“Loader”加载。向 Office 应用程序注册插件信息的时候,COM 注册信息中“InprocServer32”实际上指向 Cypress Add-in Loader,并且提供一个清单文件(Manifest)告诉 Loader 真正应该加载的 .NET 程序集信息。这样做的好处有很多:各个 VSTO 开发的插件不会互相干扰(Loader 会为它们创建各自的应用程序域);Loader 还可以帮助检查插件的新版本、提供插件自动升级功能;还可以对插件程序集的安全权限进行控制等等。

  至于 COM 注册信息,我们知道在 Windows 中有三个地方可以存放(不考虑 Wow64 的情况):
  HKEY_CURRENT_USER\Software\Classes
  HKEY_LOCAL_MACHINE\Software\Classes
  HKEY_CLASS_ROOT (上面两个的合并版本)

  在 Cypress 的 RTM 版本中,插件的 COM 注册信息被写入 HKEY_CURRENT_USER\Software\Classes。因为这样做可以保证开发人员不需要管理员权限就可以调试、部署。这种方法在 Windows 2000 / XP / 2003 的平台上没有任何问题。而在 Windows Vista 中,新的安全特性“Mandatory Integrity Control ”使包括 Office 2003 在内的 COM 应用程序行为发生了变化。如果应用程序是以“中等”或者更低的 Integrity Level 运行,COM 信息会从 HKEY_CLASS_ROOT 读取,包含了 Cypress 写入 HKEY_CURRENT_USER\Software\Classes 中的信息;但是如果应用程序以高于“中等”的 Integrity Level 运行(即“以管理员身份运行”),或者 UAC 关闭,COM 信息只从 HKEY_LOCAL_MACHINE 中读取。在这种情况下,Office 2003 无法找到 Cypress 插件写入的信息,所以就导致插件装载失败!

  如果开发者在 Windows Vista 中“以管理员身份”启动 Visual Studio 2005,就会因为上述的原因无法在 IDE 中调试插件。因为此时的 Visual Studio 2005 进入调试模式启动的 Office 2003 程序默认也是“以管理员身份”运行的。

  为了修正这个问题,Cypress 的修正程序将改变插件信息的写入行为:先尝试写入 HKLM,如果因为没有权限而失败,再写入 HKCU。这样,即便 Visual Studio 和 Office 2003 被提升为“管理员身份”运行,也能够保证插件的 COM 信息被找到。

  值得开发人员注意的是,这次发布的 Cypress 修正程序并没有对插件工程配套的安装程序工程作任何修改(见图)。我们必须要自己在 HKLM 中添加和 HKCU 中同样的信息,才能保证插件安装在 Windows Vista 的机器上也可以完全正常工作。

  最后顺带提一下,Office 2007 “天生”就认识 VSTO 开发的插件,所以就没有 Office 2003 那样的麻烦事儿了。

posted on 2007-08-30 00:26:00 by vsto  评论(1) 阅读(4831)

无法调试 Outlook 插件?

  刚才想在自己的邮件机器上做一个 Outlook 插件的小实验,却发现 Visual Studio 2005 不能正确启动 Outlook 进入调试模式。感觉奇怪之余,马上想到“不能启动 Outlook”的真正原因可能是 Outlook 已经在内存中了。随后打开任务管理器证实了这一点。原来是 Windows Mobile Device Center 已经通过 COM 调用启动了 Outlook(同步数据用,无界面显示),所以 Visual Studio 2005 就无法再启动一个 Outlook 进程开始调试了。

  解决方法就是断开 Windows Mobile 设备连接,WMDC 会释放对 Outlook 的 COM 引用;如果没有别的程序也保持着对 Outlook 的 COM 引用,那么 Outlook.exe 就会从内存中卸载。

  平时一般都在专门的 Lab 机器上做实验,没有其它软件的干扰。如果在相对杂乱的环境里面做开发,务必要先排除其它软件可能造成的影响。特此记录。

posted on 2007-08-25 00:48:00 by vsto  评论(1) 阅读(4583)

Cypress 设计器更新

  由于 Visual Studio Tools 2005 第二版(代号 Cypress)早于 Windows Vista 发布,在后来发现了一些针对 Windows Vista 环境中用 Cypress 开发 Office 2003 插件时产生的问题。微软已经分别发布了一个设计时更新(Design Time,针对 Visual Studio)和一个运行时更新(Runtime,针对发布后的环境)。

  下载地址分别如下:

  建议开发环境/部署环境是 Windows Vista / Windows Server 2008 的 Cypress 用户安装这两个更新,可以避免一些麻烦哦!

posted on 2007-08-24 17:21:00 by vsto  评论(2) 阅读(4608)

新的开始

  本来打算在另外一个挺大的中文社区写写关于 VSTO / VSTA 的东西,但是那个社区的文章编辑器实在是太不好用,最终弃暗投明来了这里。

  在这个Blog中,我会主要写一些关于 Visual Studio Tools for Office / Application 的技术文章,也会翻译一些资料和大家共享。希望我们可以通过 VSTO 这座桥梁,联结起强大的开发平台和办公平台,构建出最棒的应用!

posted on 2007-08-24 16:58:00 by vsto  评论(9) 阅读(5095)

Powered by: Joycode.MVC引擎 0.5.2.0