tcartwright/SqlServer.Rules

Rules don't evaluate on Visual Studio 2022

Opened this issue · 4 comments

I was working with a customer that was trying to implement these rules with Visual Studio 2022. When done through the VS GUI the rules were successfully evaluated, but when done from msbuild.exe, the rules were essentially ignored. The problem was determined to be that the SqlServer.Rules solution was compiled with DacFx 150. It appears this causes issues with the Microsoft Entity Framework such that when MEF tries to match the rules with the required condition, it can’t match the types in 150 and 160. We downloaded the source code of the SqlServer.Rules and compiled it using DacFx 160 and were able to get Visual Studio 2022 to recognize the custom rules and evaluate them when run from msbuild.exe.

If you want to make these custom rules compatible with VS 2022, please rebuild the solution with DacFx 160. This should be backwards compatible such that the new release still works with previous Visual Studio version as well.

Please see microsoft/DacFx#364 for reference.

@NathanMSFT FWIW, I have published a NuGet package with an updated .dll file: https://www.nuget.org/packages/ErikEJ.DacFX.SqlServer.Rules/

Thanks guys, I have been away for a while, I will get right on it.

@tcartwright just FYI I have forked the rules and published NuGet packages with rules that work in VS 2022 and also .NET 6 and later

https://erikej.github.io/dacfx/codeanalysis/sqlserver/2024/04/02/dacfx-codeanalysis.html

Also updated some rules to work well with temporal tables