木子屋 Dnawo's BLOG

分类:Win编程

共 358 篇

WinForm未能加载文件或程序集SharpZipLib:找到的程序集清单定义与程序集引用不匹配解决方法

今早给编辑更新了一个.NET桌面应用程序,结果却运行出错,提示: 未能加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.85.1.271, Culture=neutral, PublicKeyToken=1b03e6acf1164f73”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 1.问题分析 运行ildasm工具,载入应用程序exe文件,双击MANIFEST查看程序集清单,找到ICSharpCode.SharpZipLib,清单中其版本为0.85.1.271。 接着右键单击ICSharpCode.SharpZipLib.dll文件,选择属性,查看实际文件版本为0.85.5.452。…

Windows系统重启后消息队列中的消息不丢失解决方法

当调用MessageQueue对象的Send方法将消息发送到队列中后,若Windows系统意外重启,默认情况下,消息队列中的消息会丢失,MS显然考虑到了这个问题,只需将Message对象的Recoverable属性设置为true,然后再将其发送到队列,这样系统重启后消息就不会丢失了。 以下代码在Windows2003下测试通过:

身份证号码格式说明及校验码生成方法

一、身份证号码格式说明 1.旧15位身份证号码格式 01-06位:地址码,表示户口所在地行政区代码。 07-12位:出生日期码,表示出生的年、月、日。 13-15位:顺序码,表示同一地址码同年同月同日出生的人员顺序号,奇数分给男性,偶数分给女性。 2.新18位身份证号码格式 01-06位:地址码,表示户口所在地行政区代码。 07-14位:出生日期码,表示出生的年、月、日。 15-17位:顺序码,表示同一地址码同年同月同日出生的人员顺序号,奇数分给男性,偶数分给女性。 18位:校验码。 说明:第01-17位又称本体码,第18位称校验码。 二、身份证号码15位升级到18位方法 出生年份加个19,末尾加个校验码即可。…

.NET设置和读取环境变量示例

在Windows操作系统中,环境变量分为三种:应用程序环境变量、用户环境变量和系统环境变量,三者作用域、保存位置是不同的,.NET中提供了对应的方法进行设置和读取。 三种环境变量的区别 1.作用域: 应用程序环境变量:当前应用程序进程内有效; 用户环境变量:对当前系统登录用户有效; 系统环境变量:系统内所有用户有效; 2.生效时间: 应用程序环境变量:设置后在应用程序中直接生效; 用户环境变量:重启应用程序生效; 系统环境变量:重启应用程序生效; 3.保存位置: 应用程序环境变量:内存; 用户环境变量:HKEY_CURRENT_USER\Environment; 系统环境变量:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment;…

C#使用TcpClient发送和接收TCP数据示例

一、示例代码 1.服务器端代码 2.客户端代码 二、SocketException.ErrorCode代码列表 10004 The operation is canceled. 10013 The requested address is a broadcast address, but flag is not set. 10014 Invalid argument. 10022 Socket not bound, invalid address or listen is not invoked prior to accept. 10024 No more file descriptors are available, accept queue is empty.…

淘宝助理辅助工具

using System; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Text.RegularExpressions; namespace ConsoleApplication1 { class Program { /// <summary> /// csv文件编码,(4.6=Unicode,5.0=Default) /// </summary> static Encoding csvEncoding = Encoding.…

C#多线程编程笔记

今天在调试一段多线程程序时老出错,经过一番分析后发现了原因,为了便于说明问题,将代码简化如下: 原本希望程序能输出数字1到10,每个数字输出一次,顺序可不固定,结果呢,完全不是预期的,但想想得出这样的结果并不奇怪,多线程类似于异步,这样就可能在执行某个线程时,i的值已经被修改了,分析上边结果可知,在执行线程1和线程2代码时,i的值已被赋值为3了。 第二版 问题解决了吗?加个Thread.Sleep看下: 问题并没解决,原因和第一版类似,在执行前面9个线程的代码时,counter的值已被第10个线程改为10了。 正式版 编程心得 在多线程编程时,应避免在多个线程中修改和使用同一个变量的情形出现。

C#使用LINQ查找同名文件示例

1.文件结构 F:\test ├a │└b.txt ├b.txt └c.xls 2.C#代码 引用命名空间: 代码一:使用IEnumerable.GroupBy 代码二:使用group...by...into... 3.测试结果 b.txt,2

谈谈年度最佳代码“不管你们信不信,反正我信了”

最近有段十分流行的代码,是从江湖传闻“身怀八蛋”的铁道部发言人王勇平同志的一句名言:“不管你们信不信,反正我信了……这是生命的奇迹……它就是发生了”所引申出来的。这段代码虽然只是在调侃,但是围绕这段代码也产生了一些讨论(如代码风格,编程规范等等),在此顺手记录一下,就当无聊罢。 这段代码是这样的: 代码与原文的对应关系不言自明,从命名风格上看,我们默认其为Java代码。话题主要是围绕在if条件的写法上。 书写风格 先来看看它的书写风格问题。我说这段代码不是老鸟写的,因为老鸟不会把一个布尔表达式跟true和false直接判断,而会写成: 于是有朋友提出,把布尔表达式跟true或false相比较来的更清晰一些,我表示这话并没有什么道理,因为这种读代码的方式是把视角停留在“数据”层面上:一个布尔表达式返回了布尔型的“数据”,于是把它和另外一个“数据”进行比较。如今的编程都在不断强调“语义”,“语义”的清晰才是真的清晰。我说Java是一门糟糕的语言,主要原因就是指它的表达能力太差,导致写出来的代码体现不出问题的解决方式,让人们把目光都集中在具体每条语句上了,所谓“见木不见林”。C#等现代语言都在强调“做什么”而不是“怎么做”,语义上就有很大提高了。…

.NET Framework 3.5新增泛型委托System.Func和System.Action

在.NET Framework 3.5中,新增了个泛型委托System.Func,它有5个重载: T1-T4表示委托封装的方法的参数类型,TResult表示方法返回值类型,可见,System.Func委托封装的方法允许带的参数最多可以达到4个。有了这些委托,在一些场合中,省了我们自己去定义委托的麻烦。 另一个委托是System.Action,它和System.Func基本一样,只是没有返回值: 官方文档 .Func委托:http://msdn.microsoft.com/zh-cn/library/bb534303(v=VS.90).aspx .Action委托:http://msdn.microsoft.com/zh-cn/library/system.action(v=vs.90).aspx