代码改变世界

微软一站式示例代码库2010-09-06 新增代码示例简介

2010-09-06 10:37  Jialiang  阅读(...)  评论(...编辑  收藏

微软一站式示例代码库2010年9月6日更新

 

下载地址:http://1code.codeplex.com/releases/view/51868

 

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

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

微软一站式开发技术框架解决方案 中文说明

 

Windows Shell 扩展 新示例

 

image
          Context Menu 扩展

 

image
          Property Sheet扩展

 

园子里和各大开发论坛有很多人询问如何使用.NET语言编写Windows Shell 扩展。在.NET 4.0出现之前,使用.NET语言编写Windows Shell扩展是不被官方支持的。你只能通过unmanaged C++进行开发。原因是一个进程只能host一个CLR runtime。假设Windows Shell已经加载了一个.NET 1.0/1.1编写的Windows Shell扩展,当你安装了一个.NET 2.0/3.0/3.5开发的Windows Shell扩展,后者将无法被载入。Jesse Kaplan, CLR team的一位资深项目经理,对此问题有更深入的解释:http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/1428326d-7950-42b4-ad94-8e962124043e


幸运的是,.NET 4.0加入了CLR In-process Side-by-Side 特性。张羿写过一篇相当不错的介绍.NET 4 In Process Side By Side的文章:http://blogs.msdn.com/b/yizhang/archive/2009/08/25/net-4-0-in-process-side-by-side.aspx。>=4.0的CLR是可以多个并存的,也就是说V4.0,V5.0,v6.0,等等,都是可以和平共处在同一个进程内。这使得基于.NET Framework 4.0, 5.0, … 开发的managed Windows Shell 扩展成为可能。

说了这么多原理,但具体如何开发managed Windows Shell扩展呢?


目前网上演示使用.NET 4 开发Windows Shell 扩展的示例、文档几乎没有。难得找到的几个也存在一些问题,比如无法在x64的操作系统上正常加载。为此,微软一站式示例代码库项目组计划开发一系列的Windows Shell 扩展示例,演示.NET代码编写Context Menu Handler, Property Sheet Handler, Icon handler, Data handler, Drop handler, Drag-and-drop handler, Thumbnail Handler, Icon Handler, Icon Overlay Handler 等等。这次发布的示例包仅仅是这一系列示例的开始。我们提供了如何通过基于.NET 4.0的C#, VB.NET,还有native C++来编写Context Menu Handler。你可以在示例包的Visual Studio 2010 目录下找到他们。附在每个sample上的ReadMe.txt是对这个示例非常详细的文档。

 

Name Description Owner
CppShellExtContextMenuHandler Shell context menu handler (C++) Jialiang
CSShellExtContextMenuHandler Shell context menu handler (C#) Jialiang
VBShellExtContextMenuHandler Shell context menu handler (VB.NET) Jialiang
CppShellExtPropSheetHandler Shell property sheet handler (C++) Jialiang


 

Azure 云计算 新示例

 

CSAzureXbap, VBAzureXbap

设想一个典型的云计算应用场景:你在云中部署一个服务,并且自云端向客户端分发软件,那些软件将与部署在云中的服务交互。

本示例正展示了以上场景。客户端软件是一个XBAP程序,而云中的服务则是一个部署在Windows Azure Web Role中的WCF服务。

 

Data Platform 新示例

 

CSEFPOCOChangeTracking, VBEFPOCOChangeTracking

这些事Entity Framework 4的示例。他们演示了如何使用与不使用变化跟踪代理来更新POCO实体对象的属性与关系。相关的MSDN文档可参阅 Tracking Changes in POCO Entities

 

Windows Forms 新示例

 

CSWinFormTreeViewLoad, VBWinFormTreeViewLoad

此示例演示了怎样从一个DataTable生成一个TreeView关系树(例如员工关系树)。

我们使用Dictionary来收集并标识不同父节点的子节点集合List<TreeNode>。然后从上至下的按照每个父节点找出对应的Dictionary项,将其组装到这棵树中,如此循环检查下一层节点的子节点集合并进行组装

 

Silverlight 新示例

 

CSSL4WCFNetTcp and VBSL4WCFNetTcp

Silverlight4 支持 netTcpTransportBindingElement, 如此以来,我们有了一个新方式来实现全双工WCF. 在这个例子里,我们创建了一个天气报告订阅程序,演示了如何在Silverlight中调用netTcp 通讯的 WCF.

 

Windows Base 新示例

 

CppCheckProcessBitness, CSCheckProcessBitness, VBCheckProcessBitness

一个论坛里经常被问到的问题是:给定一个进程,如果编程知道这个进程是运行在32bit模式还是64bit模式下。CppCheckProcessBitness, CSCheckProcessBitness, VBCheckProcessBitness 演示了这个编程场景。其检查的逻辑是:

1. 所有运行在32位操纵系统上的进程必然都是32位的
2. 在64位操作系统赶上,32位进程可以运行在Wow64环境下。

  1) 如果进程是 Wow64进程(IsWow64Process), 它是32位的。
  2) 否则,是64位的。