【问题标题】:Project's StyleCop.Analyzers Ruleset appears in other solutionsProject 的 StyleCop.Analyzers 规则集出现在其他解决方案中
【发布时间】:2017-07-28 12:45:58
【问题描述】:

我们正在尝试基于 Microsoft 的默认规则为我们的公司创建自定义规则集,但禁用了一些更具争议性的规则集。这工作正常。 StyleCop.Analysers 效果很好,并且可以适当地创建警告和错误。它甚至可以在我们的构建服务器上运行。

但是...我在解决方案 1 中添加到 ProjectA 的规则集列在解决方案 2 中 ProjectB 的规则集下拉列表中。这是个问题。如果我选择这个规则集,那么它将在本地工作,但是当我签入它时,没有其他人会拥有相同的路径。由于我们希望通过 nuget 交付这些规则集,因此所有公司规则集将具有相同的名称并且彼此无法区分。因此,即使您有意,也很难在您当前的解决方案中找到合适的解决方案。

这显然很糟糕,我无法相信这是预期的操作模式。我错过了什么?规则集中是否有一个标志使它在本地范围内而不是在机器范围内? Microsoft 支持您在项目中创建规则集,那么为什么它们在不相关的解决方案中可用?

我是否需要解决这个问题并将它们作为 VS 扩展安装一次?这对于文本文件来说似乎非常复杂。这是 VS2017 的 bug 吗?

非常感谢任何指针

-- 更新--

我可以在这里安装 rulset:

“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Static Analysis Tools\Rule Sets”

它们将被 VS2017 接收。太好了,但是现在如果我尝试在构建服务器上构建,它将没有文件,而且人们的机器可能有不同的版本。这是一团糟。

我需要能够将规则集添加到解决方案并在该解决方案中使用它 - 无需进一步。

-- 进一步更新--

看起来是编辑器很脆弱。如果您加载一个规则集,它会将其添加到它维护的某个内部列表中。每当您转到可用规则集的下拉列表时,它都会向您显示它所看到的仍然可用的规则集。

【问题讨论】:

    标签: visual-studio-2017 stylecop


    【解决方案1】:

    所以(除非有人知道更好),看起来这个过程在 vs2017 中被破坏了。我的解决方法是在规则集名称中添加要部署 nuget 包的项目的命名空间。这不会阻止下拉列表中的重复,但它意味着您实际上可以区分并选择正确的规则集副本。

    如何在 NuGet 安装上转换规则集?在文件名末尾添加“.pp”,文件将被解析为占位符。所以在这种情况下,我的“Test.ruleset.pp”文件将有一个节点:

    <RuleSet Name="$rootnamespace$ Recommended Debug RuleSet" Description=" " ToolsVersion="15.0">
    

    是的,顾名思义,这相当冗长,去向微软抱怨他们的规则集流程被破坏了。

    其他占位符可以在这里找到: https://msdn.microsoft.com/library/vslangproj.projectproperties_properties.aspx

    【讨论】:

      猜你喜欢
      • 2015-10-25
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多