Documentation Request:
1) Please Clarify how to manage rulesets for the rosyln analyzers. Does one need to modify the csproj files to include the custom ruleset file.
2) There's not a lot of documentation on how to write a rulset xml files.
3) Given that this vscode extension is used by Unity a lot, is there a ruleset file that a project tries to load by default. Unity regenerates the csproj file frequently so any manual edits of the project file gets thrown out frequently. It would be nice to have a default file to fall back on so that one isn't editing the csproj files
VSCode version: 1.36.1
C# Extension: 1.20.0
Dotnet Information
.NET Core SDK (reflecting any global.json):
Version: 2.1.701
Commit: 8cf7278aa1
Runtime Environment:
OS Name: Windows
OS Version: 10.0.17134
OS Platform: Windows
RID: win10-x64
Base Path: C:Program Filesdotnetsdk2.1.701
Host (useful for support):
Version: 2.1.12
Commit: ccea2e606d
.NET Core SDKs installed:
2.1.4 [C:Program Filesdotnetsdk]
2.1.104 [C:Program Filesdotnetsdk]
2.1.502 [C:Program Filesdotnetsdk]
2.1.505 [C:Program Filesdotnetsdk]
2.1.508 [C:Program Filesdotnetsdk]
2.1.602 [C:Program Filesdotnetsdk]
2.1.701 [C:Program Filesdotnetsdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.6 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.9 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.12 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.6 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.9 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.12 [C:Program FilesdotnetsharedMicrosoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.5 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
Microsoft.NETCore.App 2.0.6 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
Microsoft.NETCore.App 2.1.6 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
Microsoft.NETCore.App 2.1.9 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
Microsoft.NETCore.App 2.1.12 [C:Program FilesdotnetsharedMicrosoft.NETCore.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
Visual Studio Code Extensions
|Extension|Author|Version|
|---|---|---|
|azure-account|ms-vscode|0.8.4|
|beautify|HookyQR|1.5.0|
|bracket-pair-colorizer|CoenraadS|1.0.61|
|code-runner|formulahendry|0.9.11|
|cpptools|ms-vscode|0.24.0|
|csharp|ms-vscode|1.20.0|
|csharpextensions|jchannon|1.3.0|
|csharpfixformat|Leopotam|0.0.81|
|debugger-for-chrome|msjsdiag|4.11.6|
|dotnet|formulahendry|0.0.4|
|electron-debug|kodetech|18.11.1|
|eppz-code|eppz|1.2.41|
|es7-react-js-snippets|dsznajder|2.3.0|
|heroku-command|pkosta2005|0.0.8|
|JavaScriptSnippets|xabikos|1.7.2|
|jshint|dbaeumer|0.10.20|
|LiveServer|ritwickdey|5.6.1|
|MagicPython|magicstack|1.1.0|
|Material-theme|zhuangtongfa|2.26.0|
|msbuild-project-tools|tintoy|0.2.55|
|mssql|ms-mssql|1.6.0|
|node-module-intellisense|leizongmin|1.5.0|
|node-modules-context-menu|darthyody|0.0.3|
|nodejs-extension-pack|waderyan|0.1.9|
|npm-intellisense|christian-kohler|1.3.0|
|path-intellisense|christian-kohler|1.4.2|
|plantuml|jkeys089|1.8.1|
|plantuml|jebbs|2.11.2|
|powershell|ms-vscode|2019.5.0|
|prettier-vscode|esbenp|1.9.0|
|prettify-json|mohsen1|0.0.3|
|python|tht13|0.2.3|
|qub-msbuild|qub|0.6.3|
|search-node-modules|jasonnutter|1.3.0|
|svg|jock|0.1.6|
|svgpreview|kisstkondoros|0.2.0|
|svn-scm|johnstoncode|1.54.3|
|tslint|eg2|1.0.44|
|unity-debug|Unity|2.7.2|
|unity-snippets|YclepticStudios|0.1.2|
|unity-tools|Tobiah|1.1.1|
|vscode-cosmosdb|ms-azuretools|0.10.2|
|vscode-dashboard|kruemelkatze|1.4.1|
|vscode-eslint|dbaeumer|1.9.0|
|vscode-exec-node|miramac|0.5.1|
|vscode-html-css|ecmel|0.2.0|
|vscode-npm-script|eg2|0.3.8|
|vscode-nuget-package-manager|jmrog|1.1.6|
|vscode-react-native|msjsdiag|0.10.1|
|vscode-svgviewer|cssho|2.0.0|
|xml|DotJoshJohnson|2.5.0|
|yog-plantuml-highlight|Yog|0.0.5|;
One very major improvement for this may be language support for .ruleset files.
AnalyzerId and RuleNamespace.Answer for 1: They need to be added to .csproj files. Basically they work same way as in visual studio. Visual studio has additional tooling on top of them however.
@majeric Thanks for filing this, I think this is a great issue. @savpek I'll write something up and ask you to review it.
we could consider adding support for "global" rulesets via Omnisharp.json file too
One of the common places this is used is by Unity which auto generates csproj files frequently. Any suggestion on how this may be worked around?
Unity auto generates csproj files, its impossible to use rulesets.
@majeric Did you manage to find a workaround?
Im all for the "rulesets via omnisharp.json" idea.
@caiolmd No, I have a script in my Unity project that injects the file in the csproj.
@caiolmd I should have mentioned that there's an undocumented event in Unity called:
private static void OnGeneratedCSProjectFiles()
You can use it to parse your csproj files and inject the ruleset in your csproj files when unity initializes them. It's a clumsy work around and it's far from perfect.
It's possible to add solution-wide ruleset support in a way Unity won't overwrite, by creating a Directory.Build.props file in the project root. e.g.
<Project>
<PropertyGroup>
<CodeAnalysisRuleset>$(MSBuildThisFileDirectory)Rules.ruleset</CodeAnalysisRuleset>
</PropertyGroup>
</Project>
Found another alternative by creating an .editorconfig file in the project's root directory, for example:
# Rules configuration
[*.cs]
dotnet_diagnostic.IDE0051.severity = none
dotnet_diagnostic.RCS1213.severity = warning
dotnet_diagnostic.RCS1169.severity = error
# Prevent analyzers from running in these directories
[Assets/ProCamera2D/**.cs]
generated_code = true
[Assets/Tayx/**.cs]
generated_code = true
Note: In order for this to work enable .editorconfig support in vscode by setting "omnisharp.enableEditorConfigSupport": true in your settings.json.
Here is some documentation about editorconfig:
Most helpful comment
we could consider adding support for "global" rulesets via Omnisharp.json file too