如何在没有nuget或VSIX的情况下为项目添加自定义代码分析器?

Mic*_*142 7 c# analyzer roslyn visual-studio-2015

我想在Visual Studio 2015中为C#ConsoleApplication编写自定义代码分析器.出于这个原因,我不想在模板中创建一个单独的"带代码修复分析器"项目,因为这需要在我的项目中将此分析器添加为nuget包.

在此输入图像描述
是否可以手动添加分析仪参考?我想参考没有nuget的分析仪.

Gur*_*ron 10

您可以通过项目引用添加分析器并将OutputItemType其设置为Analyzer

<ItemGroup>
  <ProjectReference Include="..\Analyzers\A1.csproj">
     <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     <OutputItemType>Analyzer</OutputItemType>
   </ProjectReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

或者通过元素属性:

<ItemGroup>
    <ProjectReference Include="..\Analyzers\A1.csproj" OutputItemType="Analyzer"
                      ReferenceOutputAssembly="false"/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)


Tam*_*mas 7

如果您将分析器添加为Nuget并检查项目的内容,您将看到只<Analyzer Include="..." />添加了一个项目.您可以手动执行相同操作.此外,您也可以在.csproj.user文件中执行此操作,因此您也可以在本地执行此操作,而不是将此更改提交到SCM.

  • 我在VS2017中至少发现,如果仅在项目中添加&lt;Analyzer /&gt;标记,则仅在构建时得到警告,而不是在键入时得到警告。您似乎需要在packages.config和&lt;Analyzer /&gt;标记中包含nuget软件包,以便在编辑代码和编译时均获得警告。 (2认同)