C#StyleCop MSBuild全局文化设置无法获取

我已经设置了我的C#项目文件来导入一个StyleCop.Targets项目,该项目在构建时运行所有StyleCop规则.这很棒,我在通过Visual Studio进行编译时将项目误差为零.

但是,当我通过MSBuild编译(在同一台机器上)时,我得到的错误是:

构造函数的摘要标记中的文档文本必须以文本开头:初始化< see cref =“MyClass”/>的新实例.类.

在初始化时关注’Z’…我已经使用en-GB全局设置配置了我的Settings.StyleCop,这样我就不会在代码中获得有关Americanisms的错误.但是我无法理解为什么这会导致MSBuild中的错误.

我知道MSBuild正在使用相同的Settings.StyleCop文件,就像我更改规则(比如TabsMustNotBeUsed)一样,MSBuild(和Visual Studio)选择此更改并在整个地方抛出错误.

我正在使用StyleCop 4.7,Visual Studio 2012和MSBuild 4.

这是我的Settings.StyleCop文件的片段:

<StyleCopSettings Version="105">
  <GlobalSettings>
    <StringProperty Name="Culture">en-GB</StringProperty>
  </GlobalSettings>
  <Parsers>
    <Parser ParserId="StyleCop.CSharp.CsParser">
      <ParserSettings>
        <BooleanProperty Name="AnalyzeDesignerFiles">False</BooleanProperty>
      </ParserSettings>
    </Parser>
  </Parsers>
  <Analyzers>
    <Analyzer AnalyzerId="StyleCop.CSharp.SpacingRules">
      <Rules>
        <Rule Name="TabsMustNotBeUsed">
          <RuleSettings>
            <BooleanProperty Name="Enabled">False</BooleanProperty>
          </RuleSettings>
        </Rule>
      </Rules>
      <AnalyzerSettings />
    </Analyzer>
  </Analyzers>
</StyleCopSettings>

有线索吗?

干杯!

最佳答案 我假设您正在使用最新版本的StyleCop(4.7.41.0)或接近该版本的版本. 4.7版本系列中有很多更改和修复,并且已经发布了相当规律的更新.

我猜测文件夹层次结构中必须有另一个Settings.StyleCop文件(在子文件夹中),该文件将文化设置回en-US.修改此特定设置文件中的其他规则(如TabsMustNotBeUsed)仍将按预期运行,只要您不在其他设置文件中再次设置它.可能的原因可能是正在运行StyleCop的工作文件夹.

我建议您在文件系统中进行快速扫描,看看是否可以找到任何其他设置文件,如果找到,请检查他们的文化设置.

我做的另一个技巧是停止在解决方案根目录下合并设置文件.这可以通过添加以下设置来完成:

<GlobalSettings>
    <StringProperty Name="MergeSettingsFiles">NoMerge</StringProperty>
</GlobalSettings>

这将确保StyleCop在所有开发和构建计算机上的行为相同,无论在层次结构的更高层配置的设置如何(例如StyleCop应用程序文件夹中的设置).但是,如果执行此操作,请确保从不再合并的文件中复制所有必需的设置.从您的描述中我怀疑这将解决这个特定问题,但我发现它有助于保持规则一致性.

点赞