Search code examples
c#.netnuget.net-standardstylecop

How to get a stylecop ruleset trough nuget in a .net standard project


We are trying to provide a nuget package for all our projects with a stylecop ruleset. We get the files in the project but the ruleset is not applied to our projects. It still uses the minimimumrecomended.ruleset.

what we have now is:

Custom.stylecop.props

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <RunCodeAnalysis>true</RunCodeAnalysis>
    <CodeAnalysisRuleSet>Custom.StyleCop.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
</Project>

custom.stylecop.targets

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <AdditionalFiles Include="$(MSBuildThisFileDirectory)\Content\stylecop.json">
      <Link>stylecop.json</Link>
    </AdditionalFiles>
  </ItemGroup>
</Project>

Custom.stylecop.nuspec

<contentFiles>
    <files include="Content/stylecop.json" buildAction="EmbeddedResource" />
</contentFiles>
....
<files>
    <file src="build\**" target="build" />
    <file src="Content/stylecop.json" target="contentFiles" />
</files>

Does anyone have any idee or an example on github or so where we can find an example because we could not find any.


Solution

  • We solved the issue with the following:

    CodeAnalysis.props

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)..\CodeAnalysis.ruleset</CodeAnalysisRuleSet>
      </PropertyGroup>
      <ItemGroup>
        <AdditionalFiles Include="$(MSBuildThisFileDirectory)..\stylecop.json" />
      </ItemGroup>
    </Project>
    

    CodeAnalysis.nuspec

    <?xml version="1.0" encoding="utf-8"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
        <metadata>
            <id>CodeAnalysis</id>
            <version>1.0.0</version>
            <description>Roslyn analyzers, rule sets and additional configuration to be used for Code Analysis</description>
            <authors></authors>
            <owners></owners>
    
            <dependencies>
              <dependency id="Stylecop.Analyzers" version="1.0.2" />
            </dependencies>
        </metadata>
        <files>
          <file src="stylecop.json" />
          <file src="CodeAnalysis.ruleset" />
          <file src="CodeAnalysis.props" target="build" />
        </files>
    </package>