简单、现代、通用

C#是一种通用的类型安全且面向对象的编程语言。这种语言的目标是提高程序员的生产力,为此,需要在简单性、可表达性和心能之间实现平衡。C#语言首席架构师从第一个版本开始就是Anders Hejlsberg(Turbo Pascal的发明者和Delphi架构师)。C#语言与平台无关,但是它能够很好的与Microsoft .NET Framework协同工作。

C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

给定关键字不在字典中

2017年11月28日

程序运行了一段时间,之后报错了,错误提示如下:异常详细信息: System.Collections.Generic.KeyNotFoundException: 给定关键字不在字典中。这个程序主要是每天从知乎获取文章内容,之后在我的网站上显示,突然有一个字段没有,就报上面的错误。看一下程序源代码:string url = "https://news-at.zhihu.com/api/4/news/"...

Class IndexWriter API

2017年11月19日

Class IndexWriter

【Visual Studio】解决方案未保存,请先保存你的解决方案,然后再管理Nuget包

2017年11月19日

上网下的Demo,文件夹中没有.sln文件,用VS打开.csproj文件来打开方案。此时可能因为一些引用问题想打开Nuget包管理器,会弹出如下提示:解决方案未保存,请先保存你的解决方案,然后再管理Nuget包1此时只需保存项目,就可看到即将保存的文件是.sln后缀的文件。保存后打开该.sln文件来打开方案(而不是之前通过.csproj文件来打开),就能在该方案打开Nuget包管理器了。.cspr...

Lucene.Net与RabbitMQ中间踩过的一些坑

2017年11月18日

最近由于项目组件变大,之后Lucene.Net单独要分开成为一个服务,使用RabbitMQ作为MQ(消息组件),中间存在很多坑,记录下来,让后来人少走弯路。首先提示:未能加载文件或程序集“PanGu, Version=2.3.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。具体解决方案可以看这篇文章:未能加载文件或程序集...

Writer初始化时的LockObtainFailedException的解决方法

2017年11月18日

Lucene的IndexWriter初始化时的LockObtainFailedException的解决方法 本网站使用了lucene来支持搜索功能,然后定时重建索引,但是最近日志里面出现了下面的异常。 这个异常是因为lucene进入到索引目录中,发现里面就是一个write.lock。而IndexWriter的构造函数在试图获取另外一个IndexWriter已经加锁的索引目录时就会抛出一个LockO...

未能加载文件或程序集 PanGu

2017年11月18日

未能加载文件或程序集“PanGu, Version=2.3.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。原因:执行这个写入索引的令一个程序也需要引用PanGu.dll,最先执行写入索引的程序与后面真正类所在的索引是相互依赖的。解决方案:把PanGu.dll这个文件复制到程序的运行目录。

Application.Exit() Environment.Exit(0)

2017年11月17日

Application.Exit(),先停止线程,然后终止进程.Environment.Exit(0)直接终止进程.

调试windows service的OnStart事件.

2017年11月10日

关于调试windows service, 其实这是一个老生常谈的问题了.通常的处理办法是, 在service运行后, 在调试器中选择attach to process.然而这种做法也有一定的局限性, 例如在service启动时的OnStart事件中的代码, 基本上很难调试. 往往当attach到我们的service的时候, 这部分代码已经执行过了. 于是, 有人提出, 可以另写一个project来...