我遇到了StyleCop的问题,这很可能是一个愚蠢的小事,但我无法纠正它,这让我发疯,因为它让我松了这么多时间。我希望你能帮助我。
问题是以下问题:我正在与一些同事一起开展大型项目,因此代码由Subversion控制,并且它被安排在树状文件夹层次结构中。我们正在将StyleCop与此项目一起使用,我们希望将相同的设置和相同的字典应用于所有源代码文件。
为了做到这一点,我将设置文件放在根目录中,以便编译器在编译项目的任何源代码文件时可以访问它,因为它被指定为here。
但我的麻烦是关于字典的。我希望将字典文件放在与设置文件相同的目录中,因此它也受版本控制。理论上,根据this,我可以指定相对于设置文件位置的路径,并在那里搜索字典。
所以,我只想告诉StyleCop在设置文件本身所在的同一文件夹中搜索字典!但我似乎无法写出意味着“这个当前文件夹”的相对路径。我尝试了很多东西:。,“。”,$。,$(。),. /,。\,%。%... 在设置文件中,实际上是一个XML文件,它看起来像这样:
<StyleCopSettings Version="105">
<GlobalSettings>
<CollectionProperty Name="DictionaryFolders">
<Value>%.%</Value> <!-- Relative paths here-->
<Value>.</Value>
<Value>./</Value>
<Value>.\</Value>
<!-- etc -->
</CollectionProperty>
</GlobalSettings>
...
但这些语法都不起作用。事实上,其中许多使编译器报告它无法解析XML设置文件的警告。
我错过了什么?正确的语法是什么样的?或者我做错了什么?
我希望我已经说清楚了,我真的很感激一些帮助。
此致 艾丽西亚。
修改
我终于设法从不同的角度来解决这个问题。我没有使用与设置文件放在同一文件夹中的字典,而是在设置文件中添加了我需要的单词,如下所示:
<StyleCopSettings Version="105">
<GlobalSettings>
<CollectionProperty Name="RecognizedWords">
<Value>aa</Value>
<Value>aspx</Value>
<Value>clk</Value>
<Value>dll</Value>
<!-- etc -->
</CollectionProperty>
</GlobalSettings>
...
答案 0 :(得分:0)
以下对我有用:
<GlobalSettings>
<CollectionProperty Name="DictionaryFolders">
<Value><![CDATA[\]]></Value>
</CollectionProperty>
</GlobalSettings>
提示:我得出了这个结论,因为当我向DictionaryFolders属性添加“..”时,我在类StyleCop.Utils.MakeAbsolutePath中得到一个NullReferenceException。因此,看起来StyleCop开发人员似乎没有以防御方式开发他们的MakeAbsolutePath方法,他们期望领先“\”。