【问题标题】:"CS8700: Multiple analyzer config files cannot be in the same directory" but only one StyleCop file“CS8700:多个分析仪配置文件不能在同一个目录中”但只有一个 StyleCop 文件
【发布时间】:2020-09-28 04:16:01
【问题描述】:

我正在尝试学习在个人项目中使用 StyleCop。不是很大,解决方案结构如下:

- MySolution (2 of 2 projects)
   - Solution Items
      - .editorconfig
      - .gitignore
      - CODEOWNERS
      - my-pipeline-workflow.yml
      - README.md
      - stylecop.json
   - MyMainProject
      - Dependencies
      - .editorconfig (pointer Solution Items copy)
      - OneOfManyCsFiles.cs
      - stylecop.json (pointer Solution Items copy)
   - MyTestProject
      - Dependencies
      - .editorconfig (pointer Solution Items copy)
      - OneOfManyTestCsFiles.cs
      - stylecop.json (pointer Solution Items copy)

以下是文件夹本身的结构:

- RepoFolder
   - .github
      - workflows
         - my-pipeline-workflow.yml
   - src
      - MyMainProject.csproj
      - OneOfManyCsFiles.cs
   - test
      - MyTestProject.csproj
      - OneOfManyTestCsFiles.cs
   - .editorconfig
   - .gitignore
   - CODEOWNERS
   - MySolution.sln
   - README.md
   - stylecop.json

在为 StyleCop 添加文件之前,一切正常。我可以在 Visual Studio 中很好地构建和测试。无论出于何种原因,为 StyleCop 添加文件(可能还有 .editorconfig 文件)似乎在构建时导致了此错误:

CSC: error CS8700: Multiple analyzer config files cannot be in the same directory ('/home/runner/work/MySolution/MySolution').
[/home/runner/work/MySolution/MySolution/src/MyMainProject.csproj]

据我了解,StyleCop 文件是唯一的分析器文件,它在多个地方被引用。 .editorconfig 是否以某种方式算作另一个分析器文件?如果是这样,我该如何让他们玩得很好?

抑制.editorconfig 中的错误无济于事。单独搜索错误时,我也找不到任何有用的文档。

【问题讨论】:

    标签: c# build configuration stylecop analyzer


    【解决方案1】:

    原来问题是试图从项目中引用.editorconfig 文件。我删除了引用,只是将文件作为解决方案项留在了解决方案的根目录中。大多数设置我从那里都可以正常工作,但是我有一些 StyleCop 严重性设置没有被分析器正确拾取。

    为了解决这个问题,我改为为每个项目单独使用 GlobalSuppressions.cs 文件。我可能已经将它们捆绑在一起并像使用 stylecop.json 文件一样引用它们,但我决定限制抑制范围可能更合适。

    【讨论】:

    • 实际上,您应该能够添加嵌套在子文件夹中的特定于项目的.editorconfig文件,只需指定root = true选项(reference
    • @NiccoMlt - 是的,虽然我的问题是我在两个不同的项目中使用了对同一个文件的引用。目标是不在不需要的地方复制文件。
    • 是的,我理解了这个问题,您的解决方案可以正常工作。我指出,为了提高一致性,您可以通过使用项目中未引用的根 .editorconfig(就像您所做的那样)和每个项目中的嵌套 .editorconfig 文件来坚持使用单一类型的配置文件(EditorConfig)需要调整设置,避免使用GlobalSuppressions.cs
    • @NiccoMlt 我在你的结构中遇到了同样的错误。但这可能是视觉工作室的错误。我确保我没有使用同一个文件的引用。
    • @jeiea 是的,这似乎是 Visual Studio 的一种奇怪行为;我不再使用 Visual Studio,但 IIRC .editorconfig 文件应该存在,但在项目文件中声明。所以我认为您在下面的答案中提出的修复实际上是我期望 Visual Studio 将项目文件设置为
    【解决方案2】:

    仅供其他 googler 参考。

    我使用了NiccoMlt的结构,但是遇到了CS8700。我通过从有问题的项目文件中删除以下内容解决了这个问题。

      <ItemGroup>
        <EditorConfigFiles Include=".editorconfig" />
      </ItemGroup>
      <ItemGroup>
        <None Remove=".editorconfig" />
      </ItemGroup>
    

    我不知道为什么要插入,但它解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 2015-10-29
      • 2023-02-02
      相关资源
      最近更新 更多