文章标签 ‘C#’
[转载]WinRAR(WinZip)压缩与解压实现(C#版Window平台) – Stone_W – 博客园. 本文的原理是借助Windows平台安装的WinRAR(WinZip)实现C#程序的调用(注:WinRAR压缩解压WinZip同样适用)。 先来看WinRAR(WinZip)自身的支持调用命令: 压缩命令:a {0} {1} -r 【{0}:压缩后文件名|{1}:待压缩的文件物理路径】 ex:”a 你妹.rar f:\\MM -r” (含义为将f盘下MM的文件夹压缩为”你妹.rar”文件) 解压命令:x {0} {1} -y 【{0}:待解压文件名称|{1}:待解压文件物理路径】 ex:”x 幺妹.rar f:\\幺妹 -y”(待压缩文件物理路径:”f:\\幺妹\\幺妹.rar”) 参数说明 参数 含义 a 添加文件到压缩包 x 以完整路径从压缩包解开压缩 WinZip(WinRAR)调用通用类 using System; using System.Collections.Generic; using System.Text; //————–using using System.Diagnostics; using Microsoft.Win32; using System.IO; /// <summary> /// Name:Stone /// DateTime: 2011/12/31 16:39:26 /// Description:WinRAR压缩 /// </summary> public class WinRARCSharp { // WinRAR安装注册表key private const string WinRAR_KEY = [...]
[转载]C#项目如何打包,或者叫生成安装文件 – 码农熊 – 博客园. C#项目打包,安装部署 开发好的网站或程序如何打包呢?或者是叫如何生成安装文件呢? 其实这个很简单,只需要在解决方案中添加部署项目就可以了,如果是 WinForm程序的话,一般都会生成.msi为后缀的自动安装文件,当你把生成完毕的安装包发给别人安装的时候,别人只需像安装QQ那样,一步一步点击 就OK,但是这个过程中也会遇到问题,就是数字签名,如果没有数字签名,杀毒软件会有危险警告,这样别人在安装的时候就会受阻,具体的这个问题怎么解决我 在这篇文章里面就暂不描述了,先说说怎样把程序打包吧! 第一步:建立空白解决方案 第二步:添加现有项目或现有网站 这个部分就看你的需求了,你要是想发布网站的话,就选择现有网站; 在解决方案上右键,点击添加现有项目, 在打开对话框里面选择要发布的项目,点击确定 第三步:添加安装部署项目 在解决方案上右键,点击添加,添加新项目,然后选择其他项目类型,选择安装和部署,在右边选择安装项目,点击确定 第四步:设置项目输出 在setup1上点击右键,点击添加,项目输入,在弹出的对话框中选择你要生成部署的项目,点击确定。 第五步:生成安装文件 在setup1上点击右键,点击生成,然后打开你刚才保存解决方案的那个文件夹,然后找到Setup1文件夹,然后选择Debuge文件夹,里面有两个文件,就是你想要的了,呵呵 原创:http://www.wanghaiyu.com/2011/05/c%e9%a1%b9%e7%9b%ae%e5%a6%82%e4%bd%95%e6%89%93%e5%8c%85-%e7%94%9f%e6%88%90%e5%ae%89%e8%a3%85%e6%96%87%e4%bb%b6-%e7%94%9f%e6%88%90exe-msi/ /*728*90,创建于2011-1-13*/ var cpro_id = ‘u350373′;
[转载]总结一下ERP .NET程序员必须掌握的.NET技术,掌握了这些技术工作起来才得心应手 – James Li – 博客园. 从毕业做.NET到现在,有好几年了,自认为只能是达到熟练的水平,谈不上精通。所以,总结一下,自己到底熟练掌握了哪些.NET方面的开发技术,以此对照,看看还有哪些不足,欢迎补充。 1 .NET Framework常见的API要熟练掌握。有些API可能需要多个类型配合使用,也有必要掌握。 IEntity2 clonedEntity = null; BinaryFormatter formatter = new BinaryFormatter(); using (MemoryStream memStream = new MemoryStream()) { formatter.Serialize(memStream, sourceEntity); memStream.Seek(0, SeekOrigin.Begin); clonedEntity = (IEntity2)formatter.Deserialize(memStream); } 这个例子是.NET的深拷贝(deep copy)的实现,类似于这样的例子,还有很多。这些API的组合应用是需要掌握的。经过积累后,通常都会有自己的一个Utility类型库。 2 Linq to Object。虽然Linq to SQL已经被抛弃和遗忘,但是Linq to Object还真是一项很重要的技术。如果没有这项技术,数据的查找和操作的代码会被foreach充满,这样不容易维护,而且有很多代码都是 routine代码,可以省略的。 string[] names = { “Tom”,”Dick”,”Harry”,”Mary”,”Jay” }; IEnumerable<string> query = [...]
[转载]XmlAttribute与实体的转换和匹配方案(附源码) – JasenKin – 博客园. 一、前言 可扩 展标记语言 (XML) 是具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是用来存储数据的,重在数据本身。本 文中的代码是几个月前整理的,最近几个月的时间很少写随笔,除了工作以外,主要还是忙于整理自己的框架。这篇随笔主要是针对于XML的特性 Attribute与实体之间的匹配与转换,其中的内容包括反射、XML以及LinqToXml,代码的内容也是想到什么就写什么,纯属练习下手感,仅供 参考。下一篇随笔将以另外的形式来转换Xml为对象实体,当然,也是以反射为主,和本随笔中的思路差不多,主要是XML的格式和解决方案不同而已。对于如 何将对象转换成Xml的话,主要还是看情况,仅仅转换简单的对象的话,直接反射就可以生成。对于复杂的对象的话,可以采用dynamic,树结构和递归算 法的方案来定制XML。 二、类图设计 该处的主要思路为:通过反射将与类名(类特性名称或者类名)的节点匹配,然后匹配属性(属性特性名称或者属性名称)值。反之,则遍历实体对象的属性,设置 相应的XML。本来还想细化一下匹配与转换操作的,但是该类的EA文件不知道放在哪里了,只有设计的截图还在,XO。相关类图设计如下: PropertyAttribute主要设置属性的特性名称,用于转换过程设置属性的别名,同时匹配过程中匹配XML的特性与属性的名称。 ClassAttribute主要设置类的特性名称,用于转换过程设置类的别名,同时匹配过程中匹配XML的节点与类的名称。 StringExtension主要是字符串的扩展方法。 FuncDictionary主要转换字符串为特定类型的值。 XmlAttributeUtility主要转换实体对象为XML以及匹配XML为实体对象,其中还包括一些其他基本操作。 三、具体实现 先看下FuncDictionary,该类主要通过异步委托将字符串转换成相应的简单类型,所有实现围绕该类进行相关操作。FuncDictionary基本涵盖了C#中的所有简单类型,可以将字符串转换成这些简单类型。 主要方法为:public object DynamicInvoke(Type type, string arg),通过传入的类型和字符串值,可以转换成相应的Object值。属性Dictionary中涵盖了所有简单类型转换的委托操作。代码如下: 1 public class FuncDictionary 2 { 3 public static IDictionary<Type, Delegate> Dictionary 4 { 5 get; 6 private set; 7 } 8 9 static FuncDictionary() 10 { 11 [...]
[转载][C#基础知识]Ref 关键字在修饰在引用类型时的行为 – sujiantao – 博客园. 这是个老话题了,不过还是有一些初学者不是太明白,这个也是在面试时容易问的问题。 试验1:Ref对于改变引用对象的属性时的影响 using System; namespace SOVT { class Program { static void Main() { MyClass myClass=new MyClass(); Console.WriteLine(myClass.Field); ChangeMyClass(myClass); Console.WriteLine(myClass.Field); ChangeMyClass(ref myClass); Console.WriteLine(myClass.Field); Console.ReadKey(); } public class MyClass { public int Field; } public static void ChangeMyClass(MyClass myClass) { myClass.Field = 1; } public static void ChangeMyClass(ref MyClass myClass) { myClass.Field = 2; } } } [...]

