SqlServer.Rules icon indicating copy to clipboard operation
SqlServer.Rules copied to clipboard

Rules don't evaluate on Visual Studio 2022

Open NathanMSFT opened this issue 1 year ago • 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 https://github.com/microsoft/DacFx/issues/364 for reference.

NathanMSFT avatar Dec 01 '23 16:12 NathanMSFT

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

ErikEJ avatar Feb 25 '24 12:02 ErikEJ

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

tcartwright avatar Jul 12 '24 14:07 tcartwright

@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

ErikEJ avatar Jul 12 '24 15:07 ErikEJ

Also updated some rules to work well with temporal tables

ErikEJ avatar Jul 13 '24 06:07 ErikEJ