300多个Sample工程,你怎么查找自己想要的?

  我们的All-In-One Code Framework项目里面的Sample工程已经增长到了300多个,于是就有了一个新问题:我是一个.NET开发者,我现在想知道怎么用VB.NET或者C#自动化操作Office,面对茫茫300多个文件夹,我迷茫了……

  为了解决这个问题,我制作了一个小工具可以帮助大家快速地从300多个(还在不断增长中)工程中快速搜索到自己需要的Sample:All-In-One Code Framework Sample Browser。

All-In-One Code Framework Sample Browser

  现在,你只需要在这个Sample Browser里面输入关键字(如上图所示的“office”和“automation”),所有和这些关键字匹配的工程就会被列出来(你还可以进一步用开发语言过滤结果);选择列表中的某个项目,就可以看到这个项目的说明(界面下方黑底白字部分);双击项目图标,就会直接在Visual Studio中打开该项目。方便多了吧?

  关于如何获得、安装(其实只是复制两个文件)这个工具,请参考:微软All-In-One Code Framework 代码示例浏览器 v1 beta版。哦,这篇Blog里面有一个错误:其实我WPF一点都不牛的。

All-In-One Code Framework 8月26日新增示例代码简介

微软一站式开发技术框架解决方案 2009年8月26号更新。下载地址:

http://cfx.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32006

如果您是第一次听说All-In-One Code Framework这个项目,请参阅主页上的相关介绍:http://cfx.codeplex.com/,以及这两篇博客:

All-In-One Code Framework:一站式微软开发技术框架解决方案
微软一站式开发技术框架解决方案 中文说明

在这次更新中,我们新增了不少Windows 7以及Windows 7 应用程序兼容性相关的sample。其中C++编写时代码示例,你需要安装Windows 7 SDK才能成功编译。

CSWin7TriggerStartService, VBWin7TriggerStartService

Trigger-start Service是Windows 7中的一大新特性。在Win7中Windows Service可以注册一些事件如USB插入。当这些事件触发时,Windows Service自动启动或关闭。如此一来,Service可以按需启动,从而提高系统的整体性能。CSWin7TriggerStartService和VBWin7TriggerStartService 演示的就是如何编写.NET代码开发Trigger Start Service。示例中你可以看到如何注册USB插入事件,以及如何注册网络连接和断开事件。

CppWin7ShellLibrary, CSWin7ShellLibrary

Shell Library同样是Windows 7中新引入的概念。Library是从过去的My Documents这个概念自然演变过来的。A library is a common store of user defined locations that applications can leverage to manage user content as their part of the user experience. CppWin7ShellLibrary和CSWin7ShellLibrary演示如何创建、打开、删除、重命名shell library,以及如何添加、删除、枚举shell library中的用户自定义文件夹。

CppCheckOSVersion, CSCheckOSVersion

这两个示例演示了如何正确检测当前操作系统版本。系统版本的检测和应用程序兼容性有着密切的关系。顺便说一下,Windows Vista的系统版本号是6.0。Windows7的操作系统版本是6.1,而不是7.0或7.1。

CSASPNETCascadingDropDownList

CSASPNETCascadingDropDownList 示例包含了两个例子:有页面刷新的级联下拉框 和无页面刷新的级联下拉框。前者主要是利用DropDown List 的SelectedIndexChanged 事件来绑定子DropDown List;第二个主要是使用XMLHttpRequest和JavaScript在客户端实现无刷新的级联DropDown List。

CSASPNETPageValidation

通过一个简单的用户名注册示例,介绍如何使用一组ASP.NET 验证控件对一些页面的通信类进行验证。

CSASPNETAjaxExtender

CSASPNETAjaxExtender 的实例主要介绍了如何使用ASP.Net Ajax Extender模型创建Extender控件。并且,在实例中描述了创建TimePicker Extender 控件的过程。TimePicker控件是一个时间选择器,用户可以通过拖动时间指针来选择时间。

VBADONETDataService, VBADONETDataServiceClient

这两个是ADO.NET Data Service 示例的VB.NET版本。C#版本请参见CSADONETDataService和CSADONETDataServiceClient。

CSXmlSerialization, VBXmlSerialization

演示了如何将一个.NET对象XML 序列化到一个文件,再从这个文件反序列化成一个.NET对象。

CSWinFormSplashScreen

演示了两种给C#编写的WinForm程序添加splash screen的方法。方法一:在Application.Run 应用程序的主窗体之前,先Application.Run一个splash screen窗体。方法二:添加对Microsoft.VisualBasic的引用,然后通过Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase类来实现自定义的splash screen。

最后,如果您对新版的All-In-One Code Framework有任何建议和反馈,请在此提出。谢谢!

All-In-One Code Framework 6月14日更新:14个新示例代码

  这次 All-In-One Code Framework 新增了14个示例工程:

  • 使用C#扩展LINQ的功能
  • 使用C#开发Office Shared Add-in(非VSTO)
  • 使用C++开发托管Office Add-in(非VSTO)的包装程序,从而实现各个托管Add-in在应用程序域级别的隔离
  • 使用VSTO 2008 SP1的新特性获取Office对象的VSTO包装
  • 使用C#自动化PowerPoint
  • 使用VB.NET自动化PowerPoint
  • 使用VC++自动化PowerPoint
  • 在WinForm中使用DataGridView
  • 在VC++应用程序中实现UAC Elevation(Windows Vista及后续版本的安全机制)
  • 使用C#配置Windows防火墙
  • 使用VC++ Subclass窗口
  • 在C#应用程序中使用CodeDOM实现源代码动态生成、编译、运行
  • C++的同步I/O操作
  • C++的异步I/O操作

  感兴趣的同学们可以赶紧去下载了!

All-In-One Code Framework 4月11日更新

  All-In-One Code Framework项目4月11日发布了一个新的版本。在这个版本中,我们新增了COM+、LINQ、VSTO、.NET Reflection、MFC、Win32、C++相关的一些工程示例。要了解所有新增的示例详情,请参阅这篇Blog或者直接到All-In-One Code Framework网站下载源代码

  在这个版本中,VSTO相关内容是我增加的CSVstoExcelWorkbook项目。这个项目演示了一些基本的Excel文档级扩展功能:

  1. 如何连接到数据源(SQL Server、Oracle、Access等)
    参考文档:如何:创建与 SQL Server 数据库的连接如何:创建与 Oracle 数据库的连接如何:创建与 Access 数据库的连接
  2. 如何把数据绑定到Excel工作表中
    参考文档:如何:用数据库中的数据填充工作表
    Excel工作表设计界面
  3. 如何在“文档操作”任务窗格里面添加自定义控件。在我的示例中,用户可以通过“文档操作”选择数据查询的条件,并且把相应结果返回并显示在工作表中。
    参考文档:如何:向 Excel 工作簿添加操作窗格操作窗格概述
    “文档操作”任务窗格设计

最终用户打开文档之后,就可以通过我们添加的自定义元素快速获取需要的数据了:

运行效果

All-In-One Code Framework 新增模板

上个星期我的一篇博客提到了All-In-One Code Framework:一站式微软开发技术框架解决方案,之后看到有不少微软技术的爱好者开始从CodePlex上下载这个项目的源代码。我们也很受鼓舞。

本周的更新增加了下列内容:

数据访问:

  • 在C#中使用ADO访问数据
  • 在C#中使用ADO.NET访问数据

Office开发:

  • 使用VSTO的设计器自定义Outlook用户界面

IPC和RPC:

  • 使用C#制作一个named pipe服务端
  • 使用C#制作一个named pipe客户端
  • 使用C++创建shared memory
  • 使用C++访问shared memory
  • 使用VB或者C#制作一个.NET Remoting服务端
  • 使用VB或者C#制作一个.NET Remoting客户端

本周我们还在继续努力制作新的样板,并且会着手让工程文件更加容易访问。如果你有任何的建议,可以在这里发布,随便用中文还是英文都行(要不,咱还是说母语吧?)。

All-In-One Code Framework:一站式微软开发技术框架解决方案

  如果要你说说有哪些和开发相关的微软技术,不许打草稿,马上说!你能想到啥?MFC?COM?ActiveX?ATL?Win32?.NET?C++?C#?VB?VSTO?ASP?!@&*^#*(&!^ 脑袋里一团糟?

  如果老板说“我们需要一个ActiveX控件,哎那谁谁,你不是会ATL嘛,赶紧做一个吧,周末交货!”,而其实你最近一次用ATL做ActiveX控件是在大学三年级的时候……八年啦!忘光啦!怎么办?

  如果你想学一个微软的开发技术,却又苦于找不到简明易懂的示范工程,怎么办?

  请看广告!

  我团队里的一位同事在CodePlex上面创建了一个项目,叫做“All-In-One Code Framework”。这就是你所需要的东西!

  All-In-One Code Framework包含了(或即将包含)几乎所有常见的微软开发技术的项目框架,并且每个样板工程都有详细的文档说明。如果你需要快速创建一个某种技术的工程,参考里面的样板是再方便不过的了。对于某些技术,我们还提供了多种语言/框架的实现。比如创建一个ActiveX控件,我们提供的框架里面有ATL、MFC、VB、C#的等同实现。如果你精通ATL开发ActiveX,现在想学用C#开发,只要对比参照两个项目,很快就能摸出门道了。

  乍一看All-In-One Code Framework似乎是为了某些技术的初学者准备的,其实不然。即便是经验丰富的工程师,如果在日常工作中需要快速创建一个工程对某个技术难点进行调试,有一份All-In-One Code Framework的样板在手就可以节约很多重复劳动的时间。

  如果你开始觉得有兴趣了,可以到CodePlex上下载源代码。我们也很希望听到大家的反馈,有了反馈我们才能进一步完善它。

改变和新的开始

  时间过得特别快,一眨眼2009年都已经进入第三个月了。自从上次更新以来发生了很多事,公事、私事接踵而来。在这里当然只谈公事,私事是在Live Space上谈的。

  第一件大事就是“俺换工作啦!”从2006年中到2008年底,我在微软VSTO团队干了两年半的SDE/T(v-),也算是机缘巧合,将近年底的时候得到一个面试机会,最后加入了MSDN在线支持团队。

  由第一件大事引发的第二件“小事”,那就是我在这里的博客内容也会发生变化了。原来只专注于写VSTO技术,现在范围可得扩大很多。本来今天还打算把博客标题修改一下的,却发现新版本的管理功能内赫然写着“coming soon…”。

  今后打算在这里写一些我日常工作中“助人为乐”的时候得到的经验和启发,内容会比较零散,帮到哪儿写到哪儿吧。

免费的 Silverlight 2 讲座(中文)

  讲座主题:利用 Silverlight 2 的样式(Style)和模板(Template)更改控件的外观及行为。

  在 Silverlight 2 中,你可以通过使用样式和模板来充分展示你的创造力。让我们和台湾著名的 ASP.NET 专家 Alex Chang 一起探索如何入手学习这些新特性。

  讲师:Alex Chang。Alex 是连续六年的微软最有价值专家(MVP)得主,同时他也是一位资深的技术作家、顾问、活跃于海峡两岸的讲师。自 1990 年出版第一本书以来,Alex 已经出版了 70 多本书籍。他在微软技术大会(TechEd)、MIX、Ajax Day 等大规模业内活动中先后主讲了 100 多场次的课程。Alex 还为多本业内杂志撰写专栏,如 ComputerDIY、RUN!PC 和《程序员》。

  时间:2008年12月18日(星期四)中午12:00到13:00(北京时间)

  参加方法:点击这里加入 Live Meeting。

  电话会议接入方法:

  免费电话(美国): +1 (866) 500-6738
  付费电话:+1 (203) 480-8000
  北京:+86 10 5896 8000
  上海:+86 21 6151 8000
  台湾:+886 2 3725 3588
  接通后输入会议代码:6133095

  请在课程开始10分钟之前加入会议。如果您之前从未使用过 Live Meeting,请点击这里检查系统并且安装相关软件。

  如果无法加入会议,请尝试下列步骤:

  1. 在浏览器中输入下列地址:https://www.livemeeting.com/cc/mvp/join
  2. 在 Meeting ID 中输入“NDS36S”,在 Entry Code 中输入“A4558ml13BF”,Location 为“https://www.livemeeting.com/cc/mvp”。

  如果仍然无法加入会议,请联系技术支持

VSTO 先瘦身再发布:客户端配置文件

  曾经在一个 VSTO 2008 的讨论会上听到一些小型软件开发商的担忧:我们本来使用 C++ 为 Office 开发插件,然后通过互联网给用户下载,并且收取费用。现在我们想用 VSTO,但是发布插件的时候,居然要用户下载 200MB 的 .NET Framework???我的插件本身才 50K 哎!我的很多用户现在依然使用低速网络接入,200MB 的内容够他们下载整整一天的了,这样我的产品怎么卖得出去?

  发布,很现实的问题,开发人员使用 VSTO 强大的功能,可以快速做出以前很难实现的功能,可是如果最后却很难把产品分发给用户,那前面的工作又有什么意义呢?在企业内部,我们可以通过“推送”的方法把 .NET Framework 方便地部署到每个客户端 PC,接下来再部署基于 VSTO 的解决方案就不是那么困难了;但是对于 ISV 呢,难道他们就注定和 VSTO 无缘了?

  也许不是。

  在先前的 Blog 里面我们提到过随着 Visual Studio 2008 SP1 的发布,VSTO 现在可以把“.NET 框架客户端配置(.NET Framework Client Profile)”作为目标框架。在这种配置下,如果目标系统没有安装 .NET Framework,那么安装程序将下载一个面向客户端应用程序的 .NET Framework 3.5 SP1 的子集。下载量将从原来的 200MB 缩小到 26.5MB。

  那么如何使 VSTO 的解决方案使用针对客户端的配置呢?

  1. 创建一个新的 VSTO 加载项工程(针对 Office 2007)
  2. 打开工程属性页面
  3. 在“应用程序”选项卡的“目标框架”选项中,钩选“客户端配置文件子集”
    工程属性配置
  4. 保存工程

  作了上述的修改之后,工程中所有对 .NET 框架类库的引用,都必须限制在“客户端配置文件”这个子集内,编译器会负责这项检查,并且指出超出范围的引用。关于“客户端配置文件”的详细信息,可以参阅这篇 MSDN 文档:.NET Framework 客户端配置文件

  在准备发布工程的时候,我们还需要在“工程属性”的“发布”页面里面对预安装选项进行调整:原先需要预安装完整版本的 .NET Framework 3.5 SP1 可以改为预安装 .NET Framework Client Profile。

预安装客户端配置文件

怎样移除文档和 VSTO 代码的关联?

(原文 – Harry Miller:http://blogs.msdn.com/vsto/archive/2008/07/18/removing-customization-code-before-e-mailing-a-document.aspx

  为一个 Word / Excel 文档创建 VSTO 自定义代码之后,这个文档的后续拷贝也会和这些代码关联,哪怕你“另存为”的时候换一个文档名字,关联依然存在。每次文档被打开的时候,它就会试图去寻找关联的 VSTO 代码并且开始运行。问题来了:如果我们需要把文档发送给外部人员呢(比如客户、供应商)?他们没有权限访问到我们的内部网络,文档也就找不到关联的代码,于是一个讨厌的错误对话框就会跳出来,告诉一头雾水的用户“无法找到或加载自定义程序集”,对于普通 Office 用户来说,这简直就是天书一样的信息。

  所以有时候我们需要在向外派发文档之前移除文档和 VSTO 代码的关联。

  一个方法是手工在文档的“属性-高级属性-自定义”项目中删除“_AssemblyName”和“_AssemblyLocation”属性。

  另外一种方法是通过编程,使用“ServerDocument.RemoveCustomization()”方法,可以解除文档和代码的关联。VSTO 文档中的示例程序包含了相关的代码可以参考。

相关资源:

ServerDocument.RemoveCustomization 方法(2007 Office 系统)
ServerDocument.RemoveCustomization 方法(2003 Office 系统)
ServerDocument 示例代码
使用 ServerDocument 类在服务器上管理文档