惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
Y
Y Combinator Blog
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
P
Proofpoint News Feed
Jina AI
Jina AI
B
Blog RSS Feed
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
D
Docker

博客园 - 阿不

10年总结,得到与失去 Windows phone7 软件发布:理财计算器(包括wp7房贷计算器,wp7个税计算器,wp7存款利息计算器) 从.NET到Mono-记Kooboo CMS对Mono的兼容历程:三、平台的兼容性 从.NET到Mono-记Kooboo CMS对Mono的兼容历程:一、Mono以及移平台的基本注意要点 ASP.NET MVC3 on Mono的折腾(一):Windows下的部署 ASP.NET MVC3 on Mono的折腾(二):Linux(openSUSE)下的部署 迟到的2010总结 周末随想之移动随笔 NVelocity for ASP.NET MVC ASP.NET 4.0在IIS6原生支持没有后缀名的URL请求 闲语MVC3和Razor ASP.NET MVC3 RC2和一些小bug ASP.NET MVC 的统一异常处理有多难?(衍生的意图,出错后如何保持表单的状态?) DataAnnotation脱离MVC独立验证 Attribute与TypeDescriptor的故事 DataContext是否可以静态化? 今日手记:ASP.NET进程内的定时任务 有趣的同名不同约束泛型扩展方法的编译问题 在程序中动态执行T4模板,如何传参数给T4模板?
从.NET到Mono-记Kooboo CMS对Mono的兼容历程:二、大小写敏...
阿不 · 2011-06-15 · via 博客园 - 阿不

在Linux/Unix系统中,对任何文件路径,文件名,URL地址的处理都是大小写敏感。对于这点设计,让我们长期从事基于Windows平台开发和工作的开发人员情何以堪啊。尽管可能这样设计是有它的特殊目的和出发点,但我直到现在仍然认为这点是一个非常蛋疼的设计。我试图找到一些理由来解释Linux为什么处理这些字符串使用大小写敏感,但是得到的答案都是一些无关痛痒的理由:

  • 大小写敏感后,可以用更短的文件名来表示更多的文件。比如a.txt和A.txt它们是不是一样的文件,但是大小写不敏感后,它们只能表示同一个文件。
  • 大小写敏感,让字符串(文件名)更容易排序。
  • Linux是用C语言写的,在C语言里面,字符串是大小写敏感的。难道C++,C#不是大小写敏感?
  • 大写和小写字符,本身它们的ASCII值就不一样,本来就应该认为它们是不一样的字符?

上面的这些讨论,难道有一个理由可以成为大小写敏感后所带来的不便的替罪羊(请允许我以一个Windows用户的角度来评论这个设计)?在我这段时间的跨平台研究经验中,这个问题已经不再是方不方便的问题了,已经上升到软件兼容层面上的很大问题。你可以说,这是我们自己写程序的的随意性造成的。但是对于长期基于Windows平台开发的开发人员,又有多少程序员会注意到文件路径和文件名的大小写统一问题。在我所遇到的问题中,至少80%以上是由于文件名和路径大小写的不一致所导致的,而这些问题,有时候也是相当长的时间来进行调试后才会察觉出来。下面就来看看,我到目前为止,发现的由大小写敏感所带来的软件的兼容问题吧:

还好,CSS,Javascript的语法都大小写敏感的,要不然痛苦还会多很多。

以上提到的这些大小写的问题,Mono团队也很早就意识到如果不解决,可能会是Mono更好发展的一个障碍。因此他们提供了一项叫做IOMap的底层映射来屏蔽由文件路径大小不同所带来了兼容性问题。但是,在介绍中,只是提及对基于Apache的配置例子,也许也有针对XSP的支持例子:

MONO_OPTIONS="--debug --profile=iomap" xsp2

但是由于我需要在MonoDevelop中调试更多的其它问题,因此我也需要在MonoDevelop用XSP启动站点调试时开启IOMap的选项,可惜,至今我还没有设置的办法。今晚,我看到了Mono Tools for Visual Studio 2.0 Beta 1调试可以配置这个选项,但为何这个Mono_Tools也可以跨平台呢?莫非它不仅仅是一个Visual Studio的插件?也许奥秘就在这里。希望过几天我就可以解决调试时使用IOMap的问题。这样真的可以减少太多的代码改动了大笑

本文结束

关于MonoDevelop的调试大小写问题的官方邮件列表讨论:http://go-mono.com/forums/#nabble-td3606760