最近在工作中发现了一个由于sln中空格引起的问题,为了记录问题的本质。下面将Sln进行了简化。
在发现问题之前,WindowsFormsApplication1project是存在于Main Folder之中,如下图所示:
问题发生后,WindowsFormsApplication1project变成了与Main Folder平行的结构,如下图所示:
刚开始的时候,认为可能是sln文件中除了问题,但是检查了一下GlobalSection(NestedProjects) ,发现结果是对的。其中红色的线是WindowsFormsApplication1的GUID,绿色的线是Main的GUID.
后来偶然发现,23行前面是空格而其它行都是Tab。所以将23行的空格全部删除,结果就是正确的。或者是将空格替换为Tab,结果也是正确的。如果是Tab+空格,或者全是空格,那么结果就是错误的。
VS2010和VS2012都有这个问题。很奇怪,也许是defect吧。
PS。之所以在工作中遇到这种问题。原因是在Merge Code的时候,Projects之间发生了冲突。手工Merge的时候,不小心使用了空格。