Visual studio 2017 项目的StyleCop.Analyzers规则集出现在其他解决方案中

Visual studio 2017 项目的StyleCop.Analyzers规则集出现在其他解决方案中,visual-studio-2017,stylecop,Visual Studio 2017,Stylecop,我们正在尝试基于Microsoft的默认规则集为公司创建自定义规则集,但禁用了一些更具争议性的规则集。这个很好用。分析器工作得很好,警告和错误都被适当地创建了。它甚至可以在我们的构建服务器上工作 然而。。。我在解决方案1中添加到ProjectA的规则集列在解决方案2中ProjectB的规则集下拉列表中。这是一个问题。如果我选择这个规则集,那么它将在本地工作,但当我签入它时,没有其他人具有相同的路径。由于我们希望nuget交付这些规则集,所有公司规则集都将具有相同的名称,并且彼此之间无法区分。因此

我们正在尝试基于Microsoft的默认规则集为公司创建自定义规则集,但禁用了一些更具争议性的规则集。这个很好用。分析器工作得很好,警告和错误都被适当地创建了。它甚至可以在我们的构建服务器上工作

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

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

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

非常感谢您的指点

-更新-

我可以在这里安装rulset:

C:\Program Files x86\Microsoft Visual Studio\2017\Enterprise\Team Tools\Static Analysis Tools\Rule Set

它们将在2017年之前被提取。这很好,但是现在如果我尝试在构建服务器上构建,它将不会有文件,而且人们的机器可能有不同的版本。这真是一团糟

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

-进一步更新-


看来是编辑的问题。如果加载一个规则集,它会将其添加到它维护的一些内部列表中。无论何时,当您转到可用规则集的下拉列表时,它都会向您显示它看到的仍然可用的规则集。

因此,除非有人知道得更清楚,否则这个过程似乎在vs2017中被破坏了。我的解决方法是在规则集名称中添加要部署nuget包的项目的名称空间。这并不能阻止DropList中的复制,但这意味着您实际上可以区分差异并选择规则集的正确副本

如何在NuGet安装上转换rulset?将.pp添加到文件名的末尾,将解析文件中的占位符。因此,在本例中,我的Test.ruleset.pp文件将有一个节点,因此:

<RuleSet Name="$rootnamespace$ Recommended Debug RuleSet" Description=" " ToolsVersion="15.0">
是的,这是相当冗长的名字,去抱怨微软,他们的规则集过程被打破

其他占位符可在此处找到: