I added StyleCop.Analyzers to my project and managed to manually add a ruleset file to the csproj.
md test
cd test
dotnet new console
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="WebDAV-Server Ruleset" Description=" Rules for the WebDAV-Server project" ToolsVersion="15.0">
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">
<Rule Id="SA0001" Action="None" />
<Rule Id="SA1101" Action="None" />
<Rule Id="SA1300" Action="None" />
<Rule Id="SA1309" Action="None" />
<Rule Id="SA1400" Action="None" />
<Rule Id="SA1503" Action="None" />
<Rule Id="SA1600" Action="None" />
<Rule Id="SA1633" Action="None" />
</Rules>
</RuleSet>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.0</TargetFramework>
<CodeAnalysisRuleSet>test.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<AdditionalFiles Include="stylecop.json" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" Version="1.1.0-beta001">
<PrivateAssets>All</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
This file is malformed, because comments aren't allowed in the project.json file.
{
// ACTION REQUIRED: This file was automatically added to your project, but it
// will not take effect until additional steps are taken to enable it. See the
// following page for additional information:
//
// https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/EnableConfiguration.md
"$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
"settings": {
"documentationRules": {
"documentInternalElements": false
},
"orderingRules": {
"usingDirectivesPlacement": "outsideNamespace"
}
}
}
dotnet restore
dotnet build
Microsoft (R) Build Engine version 15.1.545.13942
Copyright (C) Microsoft Corporation. All rights reserved.
Program.cs(1,1): warning SA1200: Using directive must appear within a namespace declaration [C:\temp\test\test.csproj]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.SpecialRules.SA0002InvalidSettingsFile' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.'. [C:\temp\test\test.csproj]
test -> C:\temp\test\bin\Debug\netcoreapp1.0\test.dll
Build succeeded.
Program.cs(1,1): warning SA1200: Using directive must appear within a namespace declaration [C:\temp\test\test.csproj]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.SpecialRules.SA0002InvalidSettingsFile' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.'. [C:\temp\test\test.csproj]
2 Warning(s)
0 Error(s)
Time Elapsed 00:00:02.02
Either a good error message that the project.json is invalid or accepting the json file and not throwing the TypeLoadException
The error doesn't appear when run from inside VS 2017.
Sometimes I also see the following error:
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.DocumentationRules.SA1642ConstructorSummaryDocumentationMustBeginWithStandardText' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.'. [D:\Entwicklung\WebDavServer\FubarDev.WebDavServer\FubarDev.WebDavServer.csproj]
I am also getting the above error 100% of the time with the RC3 tooling with 1.0.0 of the analyzers.
Adding <Rule Id="AD0001" Action="None" /> to the ruleset suppresses the warning and the analyzers seem to be otherwise unaffected and work correctly.
This seems to be an issue with Json.NET. I noticed that we are using quite an old version of it as well. Maybe upgrading Json.NET to 9.0.1 will solve this issue.
@vweijsters I expect you are correct regarding cause and solution.
I've run into this too and i'm not using a ruleset file. I'm just using the stylecop.json
I have same issue on Linux as well.
After I update to 1.1.0-beta1 issue gone.
@fubar-coder :memo: Comments aren't allowed in strict JSON, but the parser we use allows them.
I get TypeLoadException as well when trying to use stylecop.json. I am using the latest version of the .Net SDK 1.0 that was released with VS2017
Same here, failing when using stylecop.json (without comments) and the SDK from VS2017.
Similar here, getting a buttload of warnings after migrating to new csproj:
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.DocumentationRules.FileHeaderAnalyzers' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.'.
It would be great if a 1.0.1 release of StyleCop could include the fix for this.
Getting the same error with a well formed JSON file.
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.SpecialRules.SA0002InvalidSettingsFile' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'System.Runtime.Serialization.Formatters.FormatterAssemblyStyle' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.'.
Prepared a PR to fix this issue in 1.0.0.
@sharwell can you check if this is enough for a 1.0.1 release?
@vweijsters There doesn't seem to be a due date for 1.0.1 or 1.1.0-beta2. When can we expect it?
@sharwell Is there anything we can do to help get this fix out the door? We have a linux build server that cannot enforce our rules because of this error
This should be fixed with 1.0.2.
Most helpful comment
This should be fixed with 1.0.2.