随笔分类 - C#
摘要:上一篇文章已经简略介绍过TFS的安装与管理,本篇文章主要描述一下我个人在工作过程中使用TFS的一些指南与建议。本章内容预览:1.项目计划与跟踪经常有很多朋友在日常聊天中抱怨做计划很无畏,因为计划永远赶不上变化。确实如此,计划是赶不上变化,但你不计划,你永远不知道自己应该要做什么,什么时候做,虽然发生了变化,但是你可以根据原有的计划定制事情变化的解决方案与变化的定位,而控制变化的演变。1.1. 使用Project制定项目计划新建一个Project文件,或者打开TFS团队资源管理器中对话框中的项目-文档-项目管理-开发项目计划.xlsx文件。此时打开的文件均为一个空的Project文件,可以在此文
阅读全文
摘要:整了几天TFS,把相关的一些配置与安装的要点简单记下,希望对大家有用。本篇主要是安装与配置上的内容,下一篇会介绍如何使用以及使用方面的相关心得体会。本篇内容简要:1. 安装部署1.1. 流程1.2. 安装操作系统服务器建议2G以上内存,500G硬盘空间。必须是windows 2003、windows2008。1.3. 配置操作系统更改计算机名称。安装IIS。创建TFS运行报表服务与自动构建的用户,建议属于administrators组,建议命名:TFSBuilder 用于自动构建服务。TFSReports:用于报表服务。1.4. 安装必备软件安装visual studio 2010。SQL S
阅读全文
摘要:压栈(入栈)=执行方法中的指令.NET中栈和堆的比较1.NET中栈和堆的比较 #1原文出处:http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx尽管在.NET framework下我们并不需要担心内存管理和垃圾回收(Garbage Collection),但是我们还是应该了解它们,以优化我们的应用程序。同时,还需要具备一些基础的内存管理工作机制的知识,这样能够有助于解释我们日常程序编写中的变量的行为。在本文中我将讲解栈和堆的基本知识,变量类型以及为什么
阅读全文
摘要:本类库+工具用于快速实现一个简单的自动更新程序,旨在快速简单地为现有的.Net应用程序添加上比较简单的自动更新功能。在发布应用程序时,我们经常会需要给自己的程序加上自动升级功能。.Net Framework自带的ClickOnce中有自动升级的功能,但是往往不太好用,比如必须用ClickOnce发布,安装的文件夹一个版本一个等等,我们会想要一个比较简单、甚至绿色软件也能使用的自动升级功能,这个自动升级程序就是基于这个目的而制作的。为了让使用起来更加简单快捷,我对内置的功能进行了大幅度的精简和集成,最简单的情况下只需要你只需要一行代码即可实现自动更新,如下所示:FSLib.App.SimpleU
阅读全文
摘要:前言需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示。随便看一下,大部分网站基本都是将原图等比缩放来生成缩略图。但完美主义者会发现一些问题,比如显示排版时想让相片缩略图列表非常统一、整齐、和美观,比如要求每张缩略图大小固定为120 x 90且不拉伸变形怎么办?再比如用户头像如何让缩略图比原图更清晰?或是如何在上传的图片下加一个半透明的LOGO水印?OK,本文根据自己的项目代码描述以上问题的解决方案,所谓C#图片处理高级应用,感觉有点标题党了,这些功能并无多大技术含量。全部基于.Net Framework类库完成,代码中包含了
阅读全文
摘要:前言 此文译自CodeProject上<How I explained OOD to my wife>一文,该文章在Top Articles上排名第3,读了之后觉得非常好,就翻译出来,供不想读英文的同学参考学习。 作者(Shubho)的妻子(Farhana)打算重新做一名软件工程师(她本来是,后来因为他们孩子出生放弃了),于是作者就试图根据自己在软件开发设计方面的经验帮助她学习面向对象设计(OOD)。 自作者从事软件开发开始,作者常常注意到不管技术问题看起来多复杂,如果从现实生活的角度解释并以对答的方式讨论,那么它将变得更简单。现在他们把在OOD方面有些富有成效的对话分享出来
阅读全文
摘要:协变和逆变,这两个词的翻译实在很难表达出他们的真实含义。其实他们是继承和多态的衍生物,而且在.Net 1.0 和2.0中都提供了某种程度的支持,只是在.Net 4.0中支持的更加完善了。 简单说来,协变和逆变就是希望支持更多情况的隐式类型转换,使得我们的编程更加方便,而通常来说只有具备继承关系的两个对象才可以发生隐式类型转换,如Base b=new Derived(). 协变和逆变则使得更多的类型之间可以发生隐式类型转换,如通过协变以下代码可以正常工作:那么我们为什么需要这种功能呢?让我们从一个多态的例子开始:虽然FeedAnimal方法接受的参数类型为Animal ,但是当我们传入一个Tig
阅读全文
摘要:这段时间从我们各个系统抽取了基础的常用的部分,整理后形成了一个XCode示例项目,包含三部分:DLL引用程序集、Web网站、YWS实体类库。 之前发布了一些介绍XCode的文章,有些朋友希望能得到源码,更多的朋友是想知道怎么用,想试一试!我们现有的系统是一个大体系,分割开来无法独立工作,所以一直没有提供XCode的例子项目。现在整理的这个例子项目,用到了XCode中常用的70%功能,蕴含着XCode开发模式的思想,希望能加深大家对XCode的了解。 XCode v3.5源码(及相关组件、例子、代码生成器等)目前存放于CodePlex,地址:http://xcode.codeplex.com/
阅读全文
摘要:在微软的自家代码生成方案中我们有两种选择方式:CodeDom 和Text Template Transformation Toolkit(T4)模板。同样我们可以利用简单的String或者StringBuilder来拼接字符串,但是那对于简单的还可以,但是对于复杂的问题就。其实在ASP.NET MVC 3.0中有多处了一个更简洁语法的模板-Razor,我们同样可以运用于我们自己的代码生成中,我随便有一篇简单的介绍Razor Templating Engine,在以后有机会了会写Razor Demo。今天的主题不在这里,所以不多说了。一:简介CodeDom:这 个类库出现在我们的.NET Fra
阅读全文
摘要:即使是做网络应用,在断线情况下,也需要考虑数据的本地存储。在SQLite出现之前,数据量大的情况下,我们一直使用ACCESS,数据量小,则文件存储。ACCESS不支持事务原子性,在断电情况下(这种情况总是会发生)会导致数据很难恢复。 一:安装 SQLITE,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统。我直接使用的是http://sqlite.phxsoftware.com/(An open source ADO.NET provider for the SQLite database engine)。下载完毕是一个EXE,安装后根目录如下: Bin下有一个测试工具,可以查看本地
阅读全文
摘要:首先要说一下GAC,相信大家并不陌生,它全称是Global Assembly Cache,在我看来就是存放公用Assembly的一个文件夹,它的物理位置是%SystemRoot%\assembly,只要装了.NET Framwork这个文件夹就会存在,在里面你可以看到这里面的Assembly有Vesion,Public key,culture及Processor Architecture等信息,如...
阅读全文
摘要:0、摘要 今天看到吉日嘎拉的一篇关于管理软件中信息加密和安全的文章,感觉非常有实际意义。文中作者从实践经验出发,讨论了信息管理软件中如何通过哈希和加密进行数据保护。但是从文章评论中也可以看出很多朋友对这个方面一些基本概念比较模糊,这样就容易“照葫芦画瓢”,不能根据自身具体情况灵活选择和使用各种哈希和加密方式。本文不对哈希和加密做过于深入的讨论,而是对哈希和加密的基本概念和原...
阅读全文
摘要:引言 本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱。文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆;最后介绍值类型和引用类型,并说明一些有关它们的重要原理。 最后通过一个简单的示例代码说明装箱拆箱带来的性能损耗。声明变量的内部机制 在.NET程序中,当你声明一个变量,将在内存中分配一块内存。这块内存分为三部分:1,变量名...
阅读全文
摘要:这是一篇发表在《程序员》杂志8月刊的文章,是根据我对Anders Hejlsberg的演讲内容的翻译的缩写。原本的完整演讲内容有数万字,为了在杂志上发表因此简化成了五千字,因此如果您对完整内容感兴趣,不妨根据文末链接来访问完整内容,其中也包含大量分解的幻灯片以及代码。概述程序设计离不开编程语言,但是编程语言在国内的大环境中似乎一直是个二等公民。国内的计算机教育和工程培训,似乎一直在宣传&ldquo...
阅读全文
摘要:摘要: 语音是人类最自然的交互方式,也是现阶段软件用户界面发展的最高目标。微软公司一直积极推动语音技术的发展,并且公布了语音开发平台Speech SDK帮助开发人员实现语音应用。 随着.net技术深入人心,越来越多的程序员开始转到.net平台上进行开发。然而,在新发布的.net speechSDK里面并没有对中文语音进行支持,目前支持中文的Speech SDK最高版本为Windows平台下的SAP...
阅读全文
摘要:尽管MS为我们提供了丰富的.net framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写。当需要用到Dll引用的时候,我们通常会通过“添加引用”的方式将它们纳入到项目中,然后就可以像使用自己的类一样方便的使用它们了。但是,有些Dll库(OCX)文件是需要注册到Windows注册表后才能正常添加和使用的。本...
阅读全文
摘要:TextBox控件用到的所有属性、事件和方法,RichTextBox控件几乎都能支持,例如 MaxLength、MultiLine、ScrollBars、SelLength、SelStart 和 SelText。 注意:TextBoxBase.Undo 方法不可用于 KeyPress 或 TextChanged 事件。RichTextBox 控件没有TextBox控件一样具有64K字符容量的限制。...
阅读全文
摘要:全书总链接 来源:http://www.cnblogs.com/BeginnerClassroom/archive/2009/10/17/1584847.html
阅读全文
摘要:C# 语言的构造函数的名称和类名相同。静态构造函数最多只能有一个。不能有返回值,不能有参数,不能有访问修饰符。实例构造函数可以有多个。不能有返回值,可以有参数,可以有访问修饰符。如果没有为对象提供实例构造函数,则 C# 编译器将创建一个默认的实例构造函数,该构造函数实例化对象,并将所有成员变量设置为默认值。[代码]上述 C# 程序的运行结果是:[代码]上述 C# 程序运行时首先调用静态构造函数(....
阅读全文
摘要:1.总是用属性 (Property) 来代替可访问的数据成员 2.在readonly 和 const 之间,优先使用 readonly 3.在 as 和 强制类型转换之间,优先使用 as 操作符 4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if 5.总是为自定义类重载 ToString 方法 6.区别值类型和引用类型 7.使用不可变的值类型(Immu...
阅读全文