标签: C#

使用 Visual Studio 2015 编译打包UWP程序总是失败的解决办法

今天遭遇了非常恶心的 Visual Studio 2015 的BUG,好好的UWP程序,能编译能运行,昨天也还打包过,今天就死活打包不能了,各种错误,什么找不到类型、什么文件被占用、什么无法访问路径,一看就是IDE自己的问题,折腾近一小时才编译成功,实现的要点如下: 用管理员方式运行 Visual Studio 2015 先清理一遍解决方案 以Release方式分别生成所有需要发行的平台版本(x86、x64、ARM),如果直接生成报缺少类型错误,那就选择“重新生成”指令来生成。 全部编译好之后不要做别的任何操作,去执行Windows应用商店程序打包 按上述方法应该就能正确编译了。 解决方法说完了,下面谁也别拦着我,我今天必须骂死微软里的这帮傻逼,自从印度阿三上台以来,微软的软件质量全都成了渣,我基本每天都在跟 Windows 和 Visual Studio 的BUG作斗争,UWP是时下的微软战略核心之一,就这还能做成这个B样,谁他妈还给你们开发应用,作为软件业的领头巨人,品控做成他妈这样真尼玛没治了,弄得我都有多次要改行的冲动了,真心希望印度狗赶紧滚出微软。 分享或转载本博客站点内的所...

更多

实现带图片迁移WordPress博客

本博客现已从新浪SAE迁出,记录一下带图片迁出的实现方式。 首先应当去后台导出所有内容: 下载后得到的是WordPress eXtended RSS文件,扩展名是xml。 然后去SAE的后台把源码全下载下来。 由于SAE的WordPress好像是修改版的,我索性从官网下了个新版的,上面下载到的源码里我只是用以导入主题、样式、插件。 然后需要编码下载一下原博客中的图片,这里只要写一个简单的爬虫,爬遍所有文章,取得其中的图片就可以了。 我是用.Net Winform程序实现的: 图上的两条正则表达式: http://skyd.sinaapp.com/archives/\d+ http://skyd-wordpress.stor.sinaapp.com.+?(png|jpg|jpeg|gif|bmp) 注意:我的文章URL是以数字命名的,你的如果不是就自己改改这里的表达式。 主要代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Sy...

更多

MongoDB实现基于关键词的文章检索功能(C#)

我的实现目标是: 可以通过一个或多个关键词搜索到文章。 可以通过文章的关键词列表查询到其相关文章。 查询到的结果依据相关程度降序排列。 查询速度要够快。(理论上关键词检索比全文检索要快很多的) 在网上找了一大圈,就没有一个靠谱的方法,基本都是只能传入单词来检索,而且基本都没有提供C#驱动版本的代码,于是乎自己研究出了这个实现方案: 首先要求使用标签、分词、关键词提取组件对文章对应的关键词进行提取,然后作为数组格式,存入文章的Keywords字段中。 核心检索代码: /// <summary> /// 根据关键词获取文章编号与标题映射。 /// 注意:此方法会返回最为匹配的若干个项目,并根据匹配程度降序排列,即使是没有任何关键词匹配项,也会返回若干个结果的。 /// 另需注意:如果是根据文章关键词来查询,一般来说其中一定包含原文章,所以应该把期望获得的数量加1,并在结果中移除原文。 /// </summary> /// <param name=”limitNum”>数量上限</param> /// <param name=”keywo...

更多

C#对HTTP报文进行基本的解析

接上文《C#实现将TCP包拼接为完整的HTTP报文》的应用,更进一步,我们需要解析HTTP报文以进行数据分析。 要解析HTTP报文,需要实现以下操作: 读取HTTP报头提供的各种属性 分析属性值,从中获取内容编码和字符集编码 将报头数据和内容进行分离 判断内容是否文本还是二进制,如果是二进制的则不进行处理 如果内容是文本,按报头中提供的内容编码和字符集编码进行解压缩和解码 目前没有找到.Net框架内置的解析方法,理论上HttpClient等类在内部应该已经实现了解析,但不知为何没有公开这些处理方法。(亦或是我没找到) 那么只能自己来解析这些数据了。 我们先来看看这个经过gzip压缩的文本内容的HTTP报文: 这里提供一个老外写的简陋的解析类(已经过修改,原代码中存在一些严重BUG): public enum HTTPHeaderField { Accept = 0, Accept_Charset = 1, Accept_Encoding = 2, Accept_Language = 3, Accept_Ranges = 4, Authorization = 5, Cache_Contr...

更多

C#实现将TCP包拼接为完整的HTTP报文

接上篇《C#使用SharpPcap实现监听网卡TCP请求以获取所有HTTP访问的网址》场景,我们监听到的TCP包其实已经包含了HTTP请求的所有内容,但是它们是分段的,也就是说一个网页或文件会被截断成若干个TCP包分别发送。 那么如何拼合它们?这主要用到上篇中我们转换得到TcpPacket对象: //转换为TCP包 var packet = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data); var tcpPacket = TcpPacket.GetEncapsulated(packet); 先来看一下这一系列TcpPacket的数据: tcpPacket {[TCPPacket: SourcePort=9343, DestinationPort=80, Flags={ack[2733350940 (0xa2eba01c)]|psh}]} base {PacketDotNet.TransportPacket}: {[TCPPacket: SourcePort=9343, DestinationPort=80, Flags...

更多

C#使用SharpPcap实现监听网卡TCP请求以获取所有HTTP访问的网址

功能目标是监听系统内所有网络请求,并读获取请求的目标Url。 SharpPcap是基于WinPcap功能构建的类库,可以用于监听网络。 使用SharpPcap需要在系统中先安装WinPcap,否则执行时会报错说没有此模块。 WinPcap下载地址:http://www.winpcap.org/install/default.htm SharpPcap项目现在已经迁移到了Github,网址:https://github.com/chmorgan/sharppcap 下载源码并整合到项目中。 编写代码: class Program { private static Regex httpgetRegex = new Regex(@”GETs+([^srn]+)s+HTTP”); private static Regex hostRegex = new Regex(@”Host:s*([^srn]+)”); static void Main(string[] args) { var devices = SharpPcap.CaptureDeviceList.Instance; //遍历网卡设备...

更多

读写配置文件App.Config的注意事项

近期一个WPF需要读写简单的配置文件的功能,研究之后决定使用App.Config,这里记录一下使用要点: 项目中直接应该就有App.Config文件,没有的话自行创建。 打开后添加自己所需的配置项节点: <?xml version=”1.0″ encoding=”utf-8″ ?> <configuration> <startup> <supportedRuntime version=”v4.0″ sku=”.NETFramework,Version=v4.5.1″ /> </startup> <appSettings> <add key=”Url” value=””/> <add key=”Username” value=””/> <add key=”GroupId” value=””/> <add key=”LastPath” value=””/> </appSettings> </configuration> 读写代码示例: privat...

更多

使用JSON.NET反序列化抽象类或接口成员的方法

反序列化带有抽象或接口成员的类型时会遇到如下错误提示: Newtonsoft.Json.JsonSerializationException: Could not create an instance of type ITestInterface. Type is an interface or abstract class and cannot be instantiated. 问题和解决办法可以参考:http://stackoverflow.com/questions/15880574/json-net-how-to-deserialize-collection-of-interface-instances 这里总结一下,主要就是自己实现一个继承自SerializationBinder的类,来自己控制命名空间和程序集名称。 例如我们有一个文章类Article,里面有个成员是List<Paragraph>类型来表示段落列表,Paragraph是一个抽象类,其下面有若干个子类,表示诸如文本段落、列表段落、Markdown文本段落、引用段落等等,上述这些类都隶属于一个相同的程...

更多

ABP结合MongoDB的使用范例

ASP.NET Boilerplate官方的范例都是基于Entity Framework和NHibernate的,说是支持MangoDB,源码中也确实有MangoDB,但用Google寻遍世界也没找到任何说明或范例,无奈只有自己摸索了。 由于是刚刚接触ABP,测试时举步维艰,总算是得以达成,以下总结记录下这得来不易的成果: 首先前往官网去下载模板: http://www.aspnetboilerplate.com/Templates 选项如下: 下载好之后解压缩,用VS打开。 这时管理解决方案的NuGet包: 执行还原命令: 慢慢等待其自动下载和安装。 下好之后关闭NuGet窗口,执行重新生成解决方案操作,全部编译成功即可。 然后去其github空间: https://github.com/aspnetboilerplate 使用Git下载 aspnetboilerplate 项目的源码到本地,其地址为:https://github.com/aspnetboilerplate/aspnetboilerplate.git 下载好源码之后,添加现有项目: 选取这个 Abp.MongoDB ...

更多

正则表达式匹配“特定字符或开头或结尾”的方法

这个需求在标签搜索中常要用到,假设数据库中有类似以下标签字段字符串: 红色,樱桃红色,红色,玫红色,红宝石,红色尖晶石,玫红色石榴石,红色 这里我们要找完全匹配于“红色”的标签,为了方便测试准确性,我们使“红色”出现在了最前面、中间、最后面。 “红色”两个字前面可能是“,”或字符串开头,后面可能是“,”或字符串结尾,起先我想到的就是方括号匹配“[,^]”和”[,$]”,然而这根本不管用(C#、Mongodb和Javascript中都无效),原因不明,后来琢磨了半天,只能采用这样的形式才能匹配成功:”(^|,)”和”(,|$)” 最终的表达式为:(^|,)s*红色s*(,|$) 我们来检验一下: 替换后的结果: 分享或转载本博客站点内的所有原创内容时,都必须遵循此协议: 姓名标示-非商业性-相同方式分享 4.0 国际 (CC BY-NC-SA 4.0) 同时必须附加指向本文页面或本博客首页的超链接。 除此之外的转载、分享方式都必须征得本博客作者的授权,否则将会诉诸法律。

更多