C#打包制作安装程序 zz

虫虫 发表于 2010-01-29 14:28:42

http://www.javaeye.com/topic/339524
该文是根据网上的文章并结合自己实际打包的过程而整理的。
开发平台:VisualStudio2005中文版。
步骤如下:
1. 创建一个安装向导项目或安装部署项目
新建项目-〉其他项目类型-〉安装与部署-〉安装向导(或安装部署),如命名为setup。
2. 将要打包的项目导入到这个安装项目中,有两种方式:
   第一种,自动方式,在解决方案上右击-〉添加-〉现有项目-〉选择你要打包的项目,这样就会把这个项目添加到该解决方案中来,
   然后在安装项目setup上右击-〉添加-〉项目输出-〉主输出,在项目下拉框中选择刚添加的项目,选择这样就会把这个要打包的项目的基本文件添加到左侧的应用程序文件夹中,名字为主输出来自**(活动)。
   第二种,手动方式,右击左侧的应用程序文件夹(这个文件夹就是要打包的项目中需要的文件)-〉添加-〉文件或文件夹,主要是exe文件和其他配置文件或数据文件。
在第一种方式中,系统会自动将要打包的项目所依赖的依赖项添加到“检测到的依赖项”中,如Microsoft .Net Framework,如果没有就需要手动添加了。
在第二种方式中,依赖项需要手动添加,右击项目-->添加-->合并模块,选择要添加的文件,.Net Framework是必须的,位于:C:\Program Files\Common Files\Merge Modules\ 下。
注意在第一种方式中,如果要打包的项目有配置文件或数据文件等其他,还需要手动将它们添加到应用程序文件夹中。
3. 建立目标机器上的开始-〉程序菜单和桌面的快捷方式
   右击应用程序文件夹中的可执行文件-〉创建快捷方式,创建完后,可以重命名为合适的中文名,将该快捷方式剪贴到用户的“程序”菜单中,一般可以先在“程序”菜单中创建一个文件夹。同样的,再创建一个到用户桌面中。
4. 创建卸载程序
   卸载程序的创建方式也有两种。
   第一种,自己编写代码,代码如下
  ///
  /// 应用程序的主入口点。
  ///
  [STAThread]
  static void Main()
  {
       System.Diagnostics.Process.Start("msiexec", "/X{C4A3986F-EA12-4194-BB8B-A9777E78A6ED}");
       Application.Exit();
       //Application.Run(new Form1());
  }
其中{C4A3986F-EA12-4194-BB8B-A9777E78A6ED}为安装项目的ProductCode属性值。查看该值时需要点击解决方案中的安装项目的名字,然后在属性窗口(菜单中的视图-〉属性窗口)中查看ProductCode属性值。
然后将该段代码的可执行文件加入到应用程序文件夹中,在卸载项上指向它即可.
   第二种,使用msi实现
   在左侧的应用程序文件夹中添加c:\windows\system32\msiexec.exe文件,为了明确其意义,可改为uninstall.exe。然后按照上面提到的步骤创建该卸载文件的快捷方式,同样剪贴到用户的“程序”菜单中。
   在第三步中提到先在“程序”菜单中创建一个文件夹,所以这里将该文件放到这个文件夹下,否则打包的程序安装后,在开始-〉程序列表中是看起来毫无关系的两个快捷方式。为了便于识别,将此快捷方式的名字修改为“卸载**”,**为软件名称。
   修改该快捷方式的Argument属性值为"/x {ProductCode}",ProductCode的查看方式见第4步中的第一种方式。
5. 设置安装项目的属性
   1) 设置安装文件安装时的路径
      该路径是由安装项目的属性manufacture,productname来决定的,为"C:\ProgramFiles\[manufacture]\[productname],可以修改这两个属性值,或者干脆去掉manufacture属性,操作如下:
      右击左边的"应用程序文件夹"打开属性对话框,将属性中的"defaultlocation"的路径中的"[manufacturer]"去掉。
   2) 在解决方案管理器中右击安装项目的名称-〉属性,在打开的属性页中,选择"系统必备",勾中.Net Framework2.0。
      并且选中下面的“从与我相同的位置下载系统必备组件”。默认是第一项从网站进行下载,第三项是手工添加的方式。
   3) 可选。设置安装项目的RemovePreviousVersion属性为True,InstallAllUsers属性为True。
6. 生成解决方案
   生成-〉生成解决方案。
   
其更全的操作请到如下查看:
   http://www.microsoft.com/china/MSDN/library/netFramework/netframework/VCSdnnetdepvsredistdeploy.mspx
?mfr=true
http://www.java-asp.net/aspnet/200601/t_49903.html
部署.net平台的程序
关键词(Tag): c# 打包

C#日期控件datetimepicker保存空值方法(zz)

虫虫 发表于 2009-09-01 09:38:54

链接: hi.baidu.com/pollywog/blog/item/8ec254cecfd33731b600c856.html

方法一(推荐):

设置datetimepicker的属性ShowCheckBox为true

在窗口初始化时候,添加代码this.datetimepicker1.Checked = false;

保存日期值入库的时候,就可以根据if(this.datetimepicker1.Checked ==false),保存空值。

方法二:

在窗口初始化函数中添加:
this.dateTimePicker1.Format=DateTimePickerFormat.Custom;
this.dateTimePicker1.CustomFormat="   ";
在日期改变事件里写:
private void dateTimePicker1_ValueChanged(object sender, System.EventArgs e)
{
this.dateTimePicker1.Format=DateTimePickerFormat.Long;
this.dateTimePicker1.CustomFormat=null;
}
这样就实现了,在程序初始化时dateTimePicker显示为空

但是,这种写法有个问题,保存入库的时候,还要加一个判断if(this.dateTimePicker1.Text.toString()==""),保存空值;else 保存this.dateTimePicker1.value。

这种写法遇到个bug,一直没有解决,就是日期控件默认是空的,在第一次选择一个日期后必须失去焦点才能选择新的日期,不知道什么原因?

方法三:

在日期控件上面覆盖一个文本框,然后初始化时候文本框是空值,每次日期选择之后将值附在文本框里面。

ASP.NET学习路线图

虫虫 发表于 2009-04-28 09:26:48

最近在给人讲asp.net的课程,在网上转一个asp.net学习路线图

如果你已经有较多的面向对象开发经验,跳过以下这两步:

第一步 掌握一门.NET面向对象语言,C#或VB.NET 我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET。 ASP.NET是一个全面向对象的技术,不懂OO,那绝对学不下去!

第二步 对.NET Framework类库有一定的了解 可以通过开发Windows Form应用程序来学习NET Framework。ASP.NET是建构在.NET Framework之上的技术,你对.NET Framework了解得越深,学习ASP.NET就越快。 举个例子:下面简单列出几个对掌握ASP.NET非常重要的概念: 对象的内存模型,委托,事件,多线程,程序集和应用程序域,安全模 型 .NET Framework当然还有许多其它的东西,但不理解与把握清楚上述这些东西,是很难真正把握ASP.NET的。 出于急迫的心情与现实的考虑,不少人没有扎实的面向对象基础就想直接学习ASP.NET,其结果只能是欲速则不达。 在具备了OO基础之后,以下是具体的学习ASP.NET技术步骤。

第一步:学习HTML与CSS

这并不需要去学一大堆的诸如Dreamweaver,Firework之类的各种网页设计工具,关键是理解HTML网页嵌套的block结构与CSS的box模型。许多ASP.NET控件最后都必须转化为HTML。而且,div+CSS是当前主流的网页布局模型。 学习这部分时,关键在于理解概念,而不需要将精力花在美化页面的许多技巧上,那是网站美工的工作,不是程序员的工作。

第二步:学习JavaScript.JavaScript不是Java

它 主要运行于浏览器端。可以完成许多工作,功能也很强大:比如它将客户端网页中的HTML元素看成一棵树,可以编写代码访问并修改树节点,动态生成新的 HTML代码,从而达到动态修改网页显示特性的目的.JavaScript在目前的网站开发中用得很多,非常重要。另外,它也是目前非常流行的AJAX技 术的基础。

第三步:学习计算机网络原理

找一本大学教材,重点看看它的有关互联网的部分,了解一些域名解析和HTTP协议等知识。这是进行互联网开发的理论基础。

第四步:学习ASP.NET表示层技术

会设计Web页面需要结合先前打好的面向对象技术的基础,至少掌握以下内容
(1) 各种Web控件的使用方法
(2) 理解信息在网页中的传送方式,比如Cookie,ViewState,Session等的使用。
(3) ASP.NET应用程序与网页的生命周期,以及相关对象(比如httpcontext,response,request)的用途。
(4) ASP.NET实现事件驱动的内幕
(5) 自定义用户控件

再次强调一下,没有OO基础,很难掌握上述技术,就只能被这些东东牵着鼻子走了,会很被动。

第五步 掌握数据库技术

具体地说,要学习以下内容:
(1) 学会使用SQLServer2005:不要求精通它的各种工具与管理配置技术,但至少知道如何连接,如何建表,如何创建
存储过程
(2) 学习ADO.NET,掌握使用代码人工访问数据库(别用VS2005的向导)的方法
(3) 学习数据绑定控件的使用

第六步 理解多层架构

这 时,先前在OO学习阶段涉及到的程序集与应用程序域等就派上用场了,现在,网站架构大多采用多层架构:表示层、业务逻辑层、数据存取层以及数据库本身。可 以先上网找一此多层架构的资料看,再找一个现成的比较复杂的开源ASP.NET项目分析一下其架构就差不多了。基本上都是一个套路,到处应用。有的朋友 问:学习架构是不是必须学习设计模式。

我 的看法是:不必!当然,你如果学习过设计模式,那当然更好。但在实际开发中,如果只想着机械地套用某种模式,反而起不到好的结果。我的观点:在学习设计模 式时要多思多悟,其思想就会渐渐地融入你的大脑,在真实的设计实践中,忘掉所有的写在书上的模式,一切从实际出发,相信你的直觉,只要达到设计要求的方案 就是可行的方案,事实上,你这样做了之后,回过头来再看,会发现你的设计往往暗合设计模式的理论。

第七步 学习XML与Web

先了解XML的基础知识,找本讲XML的书看一下就差不多了,然后,再学习Web Service。Web Service其实可类比为远程方法调用(以XML格式表达的调用信息)。

学到了这里,如果你还有兴趣,不妨再去看看SOA,不过SOA的资料都是理论与概念,看起来比较郁闷,而且离实际开发可能比较远。所以,这是可选项。

第八步 学习AJAX

学习AJAX的主要目的是创建具有更丰富特性的Web表示层,而经过前面七步的学习,到此再学习AJAX已水到渠成,所有的基础都已具备,不会有太大的问题了。在基础未具备的前提下直接学AJAX,就象“浮沙之上筑高台”,所以,将AJAX的学习次序安排在这里。

第九步 学习RIA技术

RIA:Rich internet application,可看成是将C/S与B/S优点合二为一的尝试。就具体技术来说,主要指微软的Silverlight(WPF_E),毕竟前头一 路行来都是微软路线。不过目前学习它主要是为了技术储备。估计此技术的普及需要2到3年的时间.

阅读128次 评论1条 个人主页 扔小纸条 文件夹: ASP

.Net几大优点

虫虫 发表于 2009-04-28 08:46:40

一:什么是.NET?它包括什么?

.Net是为简化在第三代因特网的高分布式环境下的应用程序开发,基于开放互联网标准和协议之上,实现异质语言和平台高度交互性,而构建的新一代计算和通信平台。

.Net主要包括公共语言运行时(Common Language Runtime)和.Net构架类库

 

二: .NET的主要优点有哪些?

    .Net的主要优点有跨语言,跨平台,安全,以及对开放互联网标准和协议的支持.

    <a>.Net支持多种语言的互操作,即在一种语言下开发的组件,可在另一组件下通过面向对象的继承而得

       以重用,目前.Net支持的语言达二十多种。

    <b>.Net通过将各语言先编译成中间语言(IL),然后再执行时用即时编译器(Just In Time)将之编译成本

       地平台代码来实现异构平台下对象的互操作,目前.Net支持的平台有Windows,LinuxUnix的支持正

       在开发中。 

    <c>.Net通过公共语言运行时(Common Language Runtime)来实现资源对象,类型的安全.

    <d>.Net通过对HTTP,XMLSOAPWSDLInternet标准的强劲支持提供在异构网络环境下获取远程服务,

       连接远程设备,交互远程应用的编程界面.

 

三: .Net中的公共语言运行时(Common Language Runtime)指什么?它在.Net中处什么位置? 

    CLR(Common Language Runtime)公共语言运行时是整个.net framework构建的基础,是实现.Net跨平

    台,跨语言,代码安全等核心特性的关键。它实际上是驻留在内存里的一段代理代码,负责在.net

    整个执行期间的代码管理工作,比较典型的有:内存管理,线程管理,远程管理,代码强制安全类型

    等。这些都可称得上.net framework的生命线。实际上,CLR代理了一部分操作系统的管理

    功能。

 

四..Net构架类库是什么?包括哪些内容?

    <a>.Netl构架类库是基于运行时面向对象的特性而建造的,和CLR紧密集成的一族可重用类(Class)的集

        合。它大大简化了软件开发的难度,而且很容易与第三方组件无缝集成.

    <b>.Net架构类库主要包括对一下编程模型的支持:1.控制台应用程序 2.脚本与宿主应用程序

       3.Windows Form应用程序 4.asp.net应用程序 5.WebService应用程序.

 

五..Net支持的开发语言有哪些?.Net语言的互操作性是指什么?

<a>Net声称支持市面上20多种语言,但目前只有微软官方发布的C#,Visual Basic.Net,Managed C++,和

Jsript,其他厂商声称正在开发中的支持工具有COBOL,Eiffel,Perl,Smalltalk,Python。

<b>.Net语言的互操作性是指遵循CLR规范的语言在对象继承方面的支持,即用一种语言在.Net平台下开

发的类可在另一语言中重用,这通过一种称作微软中间语言MIL来实现,即语言编译器首先将该语言

编译成微软中间语言,再在相应平台下编译出本地代码。这一切都是在CLR的规范下进行的。

.Net与COM的关系是什么?.Net是否意味着COM的终结?

COM定义了组件对象间通信的二进制标准,.Net通过组件内置的类型系统提供了类似的机制,它为此提供

了另一个途经。.Net并不意味着COM的终结,但必将大大减少开发人员对COM的依赖。.Net 支持COM

和.Net组件之间的互操作性,实际上可通过Runtime Callable Wrapper(RCW)来实现在.Net中获取COM组

件,通过COM Callable Wrapper(CCW)来实现在COM中获取.Net组件。

 

七..Net的中间语言(IL)是什么?它在.Net平台中起什么作用?开发人员可以用中间语言(IL)编程吗?

.Net中的中间语言是指可以在普通语言运行时规范下,.执行时通过即时(Just In Time)编译器转化为本

地代码的,与CPU独立的一族指令集合。它在.Net平台中是实现语言互操作的一个核心环节,所有.Net平

台的语言都要先被编译成中间语言(IL)。程序员也可以直接利用中间语言(IL)来编程,但不推荐那样

做,中间语言对理解.Net对象某些行为和程序的调试很有帮助

 

八 ..Net中的自动垃圾收集是什么?它给.Net平台下的编程带来什么变化?

.Net垃圾收集器负责整个.Net运行时受管代码的内存分配与释放任务。它通过一定的优化算法来选择收

集的对象和时间。程序员只有在释放大量受管资源时可以进行立即强制垃圾收集,在释放非受管资源时

采用终止化(Finalize)操作来处理,需要在程序运行中释放的应该实现Dispose()方法,并明确调用。

其它时间将资源的回收交由.Net垃圾收集起来做。

 

九..Net的受管(Managed)代码与非受管(Unmanaged)代码指什么?他们的编码有什么区别?

.Net的受管代码(Managed Code)是指符合普通语言运行时(Common Language Runtime)规范,在内存中受

运行时代码代理进行内存管理,线程管理,远程管理,代码强制安全类型的代码。非受管代码指对内

存,文件,数据库等非受管资源进行操作的代码,他们通常不受运行时代码代理管理,是不安全的。对受

管代码的编程只需专注于编程的逻辑,对于内存等资源的管理交由普通语言运行时(Common Language

Runtime)来负责,而对非受管代码的编程,则要开发人员精心负责各种非受管资源的分配和回收工作。

关键词(Tag): .net

优秀程序员的十个习惯

虫虫 发表于 2009-03-25 08:56:20

兄弟没有忙什么,这几天在网上看到一篇文章还不错,给大家分享一下吧!!!

在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人能够成为一个优秀 的编码人员,他们非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需要注意,如果你能让下面十个 条目成为你的习惯,那么你才能真正算得上是优秀程序员。

1. 学无止境。就算是你有了10年以上的程序员经历,你也得要使劲地学习,因为你在计算机这个充满一创造力的领域,每天都会有很多很多的新事物出现。你需要跟 上时代的步伐。你需要去了解新的程序语言,以及了解正在发展中的程序语言,以及一些编程框架。还需要去阅读一些业内的新闻,并到一些热门的社区去参与在线 的讨论,这样你才能明白和了解整个软件开发的趋势。在国内,一些著名的社区例如:CSDN,ITPUB,CHINAUINX等等,在国外,建议你经常上一 上digg.com去看看各种BLOG的聚合。

**

2. 掌握多种语言。程序语言总是有其最适合的领域。当你面对需要解决的问题时,你需要找到一个最适合的语言来解决这些问题。比如,如果你需要性能,可能 C/C++是首选,如果你需要跨平台,可能Java是首选,如果你要写一个Web上的开发程序,那么PHP,ASP,Ajax,JSP可能会是你的选择, 如果你要处理一些文本并和别的应用交互,可能Perl, Python会是最好的。所以,花一些时间去探索一下其它你并熟悉的程序语言,能让你的眼界变宽,因为你被武装得更好,你思考问题也就更为全面,这对于自 己和项目都会有好的帮助。

3. 理性面对不同的操作系统或技术。程序员们总是有自己心目中无可比拟的技术和操作系统,有的人喜欢Ubuntu,有的人喜欢Debian,还有的人喜欢 Windows,以及FreeBSD,MacOSX或Solaris等等。看看我的BLOG。只有一部分优秀的程序员明白不同操作系统的优势和长处和短 处,这样,在系统选型的时候,才能做到真正的客观和公正,而不会让情绪影响到自己。同样,语言也是一样,有太多的程序员总是喜欢纠缠于语言的对比, 如:Java和Perl。哪个刚刚出道的程序员没有争论去类似的话题呢?比如VC++和Delphi等等。争论这些东西只能表明自己的肤浅和浮燥。优秀的 程序并不会执着于这些,而是能够理性的分析和理心地面对,从而才能客观地做出正确的选择。

4. 别把自己框在单一的开发环境中。 再一次,正如上面所述,每个程序员都有自己忠爱的工具和技术,有的喜欢老的(比如我就喜欢Vi编辑程序),而有的喜欢新的比如gedit或是Emacs 等。有的喜欢使用像VC++一样的调试器,而我更喜欢GDB命令行方面的调式器。等等等等。程序员在使用什么样的工具上的争论还少吗?到处都是啊。使用什 么样的工具本来无所谓,只要你能更好更快地达到你的目的。但是有一点是优秀程序员都应该了解的——那就是应该去尝试一下别的工作环境。没有比较,你永远不 知道谁好谁不好,你也永远不知道你所不知道的。

5. 使用版本管理工具管理你的代码。千万不要告诉我你不知道源码的版本管理,如果你的团队开发的源代码并没有版本管理系统,那么我要告诉你,你的软件开发还处 于石器时代。赶快使用一个版式本管理工具吧。CVS 是一个看上去平淡无奇的版本工具,但它是被使用最广的版本管理系统,Subversion 是CVS的一个升级版,其正在开始接管CVS的领地。Git 又是一个不同的版本管理工具。还有Visual SourceSafe等。使用什么样的版本管理工具依赖于你的团队的大小和地理分布,你也许正在使用最有效率或最没有效率的工具来管理你的源代码。但一个 优秀的程序员总是会使用一款源码版本管理工具来管理自己的代码。如果你要我推荐一个,我推荐你使用开源的Subversion。

6. 是一个优秀的团队成员。 除非你喜欢独奏,除非你是孤胆英雄。但我想告诉你,今天,可能没有一个成熟的软件是你一个人能做的到的,你可能是你团队中最牛的大拿,但这并不意味着你就 是好的团队成员。你的能力只有放到一个团队中才能施展开来。你在和你的团队成员交流中有礼貌吗?你是否经常和他们沟通,并且大家都喜欢和你在一起讨论问 题?想一想一个足球队吧,你是这个队中好的成员吗?当别人看到你在场上的跑动,当别人看到你的传球和接球和抢断,能受到鼓舞吗?

7. 把你的工作变成文档。 这一条目当然包括了在代码中写注释,但那还仅仅不够,你还需要做得更多。有良好的注释风格的代码是一个文档的基础,他能够让你和你的团队容易的明白你的意 图和想法。写下文档,并不仅仅是怕我们忘了当时的想法,而且还是一种团队的离线交流的方法,更是一种知识传递的方法。记录下你所知道的一切会是一个好的习 惯。因为,我相信你不希望别人总是在你最忙的时候来打断你问问题,或是你在休假的时候接到公司的电话来询问你问题。而你自己如果老是守着自己的东西,其结 果只可能是让你自己长时间地深陷在这块东西内,而你就更本不可以去做更多的事情。包括向上的晋升。你可能以为“教会徒弟能饿死师父”,但我告诉你,你的保 守会让你失去更多更好的东西,请你相信我,我绝不是在这里耸人听闻。

8. 注意备份和安全。 可能你觉得这是一个“废话”,你已明白了备份的重要性。但是,我还是要在这里提出,丢失东西是我们人生中的一部份,你总是会丢东西,这点你永远无法避免。 比如:你的笔记本电脑被人偷了,你的硬盘损坏了,你的电脑中病毒了,你的系统被人入侵了,甚至整个大楼被烧了,等等,等等。所以,做好备份工作是非常非常 重要的事情,硬盘是不可信的,所以定期的刻录光盘或是磁带可能会是一个好的方法,网络也是不可信的,所以小心病毒和黑客,不但使用软件方面的安全策略,你 更需要一个健全的管理制度。此外,尽量的让你的数据放在不同的地方,并做好定期(每日,每周,每月)的备份策略。

9. 设计要足够灵活。 可能你的需求只会要求你实现一个死的东西,但是,你作为一个优秀的程序,你应该随时在思考这个死的东西是否可以有灵活的一面,比如把一些参数变成可以配置 的,把一些公用的东西形成你的函数库以便以后重用,是否提供插件方面的功能?你的模块是否要以像积木一样随意组合?如果要有修改的话,你的设计是否能够马 上应付?当然,灵活的设计可能并不是要你去重新发明轮子,你应该尽可能是使用标准化的东西。所谓灵话的设计就是要让让考虑更多需求之外的东西,把需求中这 一类的问题都考虑到,而不是只处理需求中所说的那一特定的东西。比如说,需要需要的屏幕分辨率是800×600,那么你的设计能否灵活于其他的分辨率?程 序设计总是需要我们去处理不同的环境,以及未来的趋势。我们需要用动态的眼光去思考问题,而不是刻舟求剑。也许有一天,你今天写的程序就要移植到别的环境 中去,那个时候你就能真正明白什么是灵活的设计了。

10. 不要搬起石头砸自己的脚。程序员总是有一种不好的习惯,那就是总是想赶快地完成自己手上的工作。但情况却往往事已愿违。越是想做得快,就越是容易出问题, 越是想做得快,就越是容易遗漏问题,最终,程序改过来改过去,按下葫芦起了瓢,最后花费的时间和精力反而更多。欲速而不达。优秀程序员的习惯是前面多花一 些时间多作一些调查,试验一下不网的解决方案,如果时间允许,一个好的习惯是,每4个小时的编程,需要一个小时的休息,然后又是4个小时的编码。当然,这 因人而异,但其目的就是让你时常回头看看,让你想一想这样三个问题:1)是否这么做是对的?2)是否这么做考虑到了所有的情况?3)是否有更好的方法?想 好了再说,时常回头看看走过的路,时常总结一下过去事,会对你有很大的帮助。

ZZ IT学习力

虫虫 发表于 2008-07-04 10:33:52

自从《执行力》一书畅销之后,开始有很多书都流行取个「XX力」的名称,我也仿效这些作风,弄个「IT学习力」。不管处于任何行业,都必须每隔一段时间充实自己的技能,以免被淘汰。对于IT界来说,技术的「半衰期」更是相当短,所以「IT学习力」相当重要。

就如同CMM用五个层次来评估软件成熟度一样,我将IT学习力分成五个层次,分别描述如下:

【幼稚班】这个等级的人,相当被动,不会主动注意IT新知,不会主动学习IT技术。他总是等别人告诉他什么东西重要,等别人开班授课,等人教导。有任何技 术问题,不会去查网络,不会去查书,也不会动手做实验,只会开口问人,而对方回答不知道的时候,他也就算了,没有追根究柢的精神。

在这个等级的人,如果不进入下一个等级的话,通常不会在IT产业待太久(除非他已经熬成婆,成为中阶以上的主管了),毕竟IT产业可没这么好混。IT产业的人,学习力至少要在小学等级。

【小学】这个等级的人,已经具有主动学习的精神,但是英文能力不佳,限制了信息的取得与吸收。他们一看到英文就头痛,会去逛天珑书局,但只逛右手边(中文区),除了结账时,才会进入左手边(原文书与柜台区)。这个等级的人相当多。

其实,要离开这个阶段进入下一个阶段,对许多人来说,还真是满不容易的。毕竟英文阅读能力的培养,不是两三个月就办得到。更何况许多人在学生时代就对英文产生恐惧感,早就放弃英文了。因为英文不好,而限制了IT学习能力,真的很可惜。

我还发现,这个等级的人对许多「IT名人」或「知名IT作家」趋之若鹜,有偶像崇拜情节。他们把IT名人的话奉为圭臬,但往往只是复述偶像的话,却又说不出个道理来。

【中学】这个等级的人,习惯看IT英文书。习惯上Amazon.com网站注意最近有出版哪些IT英文书,以及读者对这些书的评价如何。这个等级的人,一 个月至少会买一本IT原文书。如果他所喜欢的IT原文书国内没进口,就会心急如焚,直接到Amazon.com等国外网站购买。

他还相当熟悉一些国外的知名作家和他们的作品,可以如数家珍地说出「Mr. X的上一本书是讲Y技术的;今年他会推出Z语言书籍的第二版,估计年底前出版。」

我还发现,IT学习力在小学和中学等级的人,似乎都很喜欢参加「技术研讨会」,还会真的把研讨会赠送的JavaT-Shirt穿上身、.NET背包背出门。搭捷运时遇到一身「研讨会赠品」行头的人,我都会忍不住说出「Oh! My God」。

【大学】这个等级的人,习惯看英文文件,并提前学习有可能会用到的技术。英文书的出版速度已经不能满足他们,他们往往抢先在任何英文书出版之前,就先学该技术,因此,他们必须透过英文文件学习。他们也会常常阅读官方关键人士的Blog

官方网站充斥着各种免费的文件,这些文件的阅读难度介于Spec(规格书)和商业书籍之间。最常见的这类文件包括了:User's GuideUser's ManualThe Whitepaper。这些通常是由官方的技术人员所编写,欠缺IT出版社专业编辑与美工的参与,所以阅读的质量距离商业书籍还有一段距离。

【研究所】这个等级的人,习惯看英文版的论文、SpecWorking Draft(工作草案)。这些资料通常份量不多,但很精确,也相当不容易阅读。许多文件都会交互参考,甚至有许多外部参考文件。

许多时候,他们还会去阅读源码,从源码中了解文件没提到的地方,或解决有疑义的问题。能够进入这个阶段,其实已经相当不容易,在IT产业算是菁英中的菁英了。

幼儿园学习力的人必须等官方把源码写完,公布严谨精确的Spec,几个月后官方依据Spec写成比较易懂的文件,半年后某专业作家用英文写出一本商业书 籍,再过一年后国内授权将这本书翻译成中文,再过半年后某培训单位找来老师开班授课。想想看【研究所】等级和【幼儿园】等级的信息接收速度差多少?精确性 又差多少?接受信息的速度差,得到的知识精确度也差,就表示没有竞争力。

评估一下你自己的IT学习力在那个层次,并积极往下一个层次,看看自己欠缺的是什么能力,然后给自己一段时间,逼自己在这段时间内进步到下一个等级。选择进入IT产业,你就走进了这样的宿命。

 

SQL Server2005导入MDF文件

虫虫 发表于 2008-06-23 11:11:51

在Sql Server Management Studio里连接上数据库后,选择新建查询,然后执行语句 
   EXEC sp_attach_db @dbname = N'DBNAME',
    @filename1 = N'D:\FileName.mdf',
    @filename2 = N'D:\
FileName.ldf' ;
数据就可以导入sqlserver2005了。

但这时导入之后,你会发现这个数据库的属性是只读的,所以在导入之前需做如下的

配置:

打开 SQL Server Configuration Manager, 打开SQL Server SQLEXPRESS 的属性

在内置帐号处,把“网络服务”改成“本地系统”,重新启动SQL Server 2005 Express 后,再附加(Attach)数据库一切正常。

总结:之所以附加(Attach)上的数据库为“只读”,是因为启动SQL Server 的默认的启动帐号“网络服务”对所附加(Attach)的数据库文件的权限不够造成的

阅读971次 评论1条 个人主页 扔小纸条 文件夹: ASP

BC30807: 不再支持“Let”和“Set”赋值语句

虫虫 发表于 2008-06-18 15:45:16

.NET与ASP的兼容问题:
1、BC30807: 不再支持“Let”和“Set”赋值语句
2、无法创建组件“adodb.connection”仅可在带有 <%@ Page aspcompat=true %> 页指令的页上创建单元线程组件
 
 
一、ASP原码(假设文件名为conn.asp)

<!--********conn.asp*********-->

<%
   dim conn
   dim sql as string
   set conn=server.createobject("adodb.connection")
   sql="driver={sql server};server=(local);uid=sa;pwd=;database=school"
   conn.open(sql)
   %>

 


 

二、把上面的代码复制到.NET中(假设文件名为conn.aspx)

<%@ Page Language="vb"  AutoEventWireup="false" Codebehind="Conn.aspx.vb"

Inherits="wuliu.Conn"%>
<%
   dim conn
   dim sql as string
   set conn=server.createobject("adodb.connection")
   sql="driver={sql server};server=(local);uid=sa;pwd=;database=school"
   conn.open(sql)
   %>

编译出现的错误如下:

1:BC30807: 不再支持“Let”和“Set”赋值语句

2:无法创建组件“adodb.connection”仅可在带有 <%@ Page aspcompat=true %> 页指令的页上创建单元线程组件

 


 

三、解决办法(添加下面红色的字并且去掉set)

<%@ Page Language="vb" aspcompat=true AutoEventWireup="false" Codebehind="Conn.aspx.vb"

Inherits="wuliu.Conn"%>
<%
   dim conn
   dim sql as string
   conn=server.createobject("adodb.connection")
   sql="driver={sql server};server=(local);uid=sa;pwd=;database=school"
   conn.open(sql)
   %>