关于C#工程的SubTye节点——记一个客户的极品挑剔

这段时间做了一个改造C#(Visual C# 2008 Express)项目,代码量很小,当然时间也就很短,大约10来个人日。

但实际上事情却没有那么简单!!!

这10天内,除了每二天一次报告会外,还有各种文档的修改整理。

虽然这些都已经是很平常的流程,但最后这一点真让我们崩溃了:

客户发现在最终版本里,工程文件xxx.csproj的xxx.resx节点多了一行<SubType>Designer<SubType>,

<EmbeddedResource Include="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
      <SubType>Designer</SubType>
   
</EmbeddedResource>

他们要求提供这个关于这个东西的说明,提供如何产生的操作流程!!

老实说这些以前很少去认真理解过,查来查去,结果发现好多人问过这个问题,从VS2005到VS2010都有,基本上当成微软已记录但并不打算修复的BUG,和项目代码文档的编辑器有关,对项目的编译没有任何影响。

然后开始试着怎么会产生这个节点的。

一开始发现,我们把xxx.csproj文件SubType节点全部删除掉,然后打开Visual C# 2008 Express,然后直接关掉Visual C# 2008 Express,这时候会提示要保存,可是我们根本没有动什么不是?

我们选择接受保存,然后去以文本方式打开xxx.csproj文件,发现很多地方SubType节点出现了,神奇吧!

但这一点并不能解释xxx.resx节点也会出现SubType,因为能过上面的操作,SubType一般只出现在Form.cs这样的节点中。

经过百般测试,终于找到问题所在:

我们在解决方案浏览器里找到这个xxx.resx文件(一般展开Form.cs可以找到),不要双击,我们用右击,选择用View Code的方式打开(你能发现它就是个XML文件)。

我们也不做任何修改,直接关闭Visual C# 2008 Express,然后又会看到“项目已经修改,你是否要保存”这样的提示了,那我们就选择“保存”,于是我们重新以文本方式打开xxx.csproj,神奇的一幕就发生了!!!

实在是不想碰到此类问题的你,还要像我一样这样浪费无意义的时间,所以写下这遍文章,希望能有所帮助吧。


郑重声明:
除特别声明为转载内容外,本站所有内容均为作者原创,谢绝任何单位和个人不经许可的复制和转播!
对于确有转载需要的,请先与作者联系,在获得允许后烦请在转载时保留文章出处。
本文出自Lupin's Blog:http://www.cnzui.com/archives/1035