Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和#x2B;StyleCop+;MSBuild+;无法拾取全局区域性设置_C#_Msbuild_Culture_Stylecop - Fatal编程技术网

C#和#x2B;StyleCop+;MSBuild+;无法拾取全局区域性设置

C#和#x2B;StyleCop+;MSBuild+;无法拾取全局区域性设置,c#,msbuild,culture,stylecop,C#,Msbuild,Culture,Stylecop,我已经将我的C#项目文件设置为导入一个StyleCop.Targets项目,该项目在构建时运行所有StyleCop规则。这很好,在通过VisualStudio编译时,我将项目的错误降至零 但是,当我通过MSBuild(在同一台计算机上)进行编译时,会出现以下错误: 构造函数摘要标记中的文档文本必须以文本开头:初始化类的新实例。 关注首字母缩写中的“Z”。。。我已使用en GB全局设置配置了我的Settings.StyleCop,这样我就不会在代码中出现关于美国化的错误。但是,我无法理解为什么这会

我已经将我的C#项目文件设置为导入一个StyleCop.Targets项目,该项目在构建时运行所有StyleCop规则。这很好,在通过VisualStudio编译时,我将项目的错误降至零

但是,当我通过MSBuild(在同一台计算机上)进行编译时,会出现以下错误:

构造函数摘要标记中的文档文本必须以文本开头:初始化类的新实例。

关注首字母缩写中的“Z”。。。我已使用en GB全局设置配置了我的Settings.StyleCop,这样我就不会在代码中出现关于美国化的错误。但是,我无法理解为什么这会导致MSBuild中出现错误

我知道MSBuild使用的是相同的Settings.StyleCop文件,就好像我更改了一条规则(比如TabsMustNotBeUsed)一样。MSBuild(和Visual Studio)会拾取此更改并到处抛出错误

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

以下是my 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应用程序文件夹中的设置)。但是,如果执行此操作,请确保从不再合并的文件中复制所有必需的设置。从您的描述中,我怀疑这是否能解决这个特殊问题,但我发现它有助于保持规则的一致性。

一个月后重新审视这一点,正如您所说,有了一个更新版本的StyleCop。在更新并没有执行任何代码更改之后,本地化开始像一个符咒一样工作。我确实调查了设置从子文件夹中层叠下来的可能性,但在那里什么也看不到。为帮助干杯!请注意,安装文件夹中还有一个“默认”设置文件(很可能是
C:\Program Files\StyleCop 4.7
)。这通常包含顶级设置文件。