diff --git a/TableStorage.sln b/TableStorage.sln
index 1f242e6..b9ea2a5 100644
--- a/TableStorage.sln
+++ b/TableStorage.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31220.234
+# Visual Studio Version 17
+VisualStudioVersion = 17.5.33516.290
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TableStorage", "src\TableStorage\TableStorage.csproj", "{FDB4D659-0F65-4D99-98C4-476E9408F767}"
EndProject
@@ -36,6 +36,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TableStorage.Newtonsoft", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TableStorage.Newtonsoft.Source", "src\TableStorage.Newtonsoft.Source\TableStorage.Newtonsoft.Source.csproj", "{72663FB4-F999-4EC0-94A8-9E0E002C5F87}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TableStorage.CodeAnalysis", "src\TableStorage.CodeAnalysis\TableStorage.CodeAnalysis.csproj", "{BC1CD1F2-5E6B-43B1-8672-E70F784F90C0}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -86,6 +88,10 @@ Global
{72663FB4-F999-4EC0-94A8-9E0E002C5F87}.Debug|Any CPU.Build.0 = Debug|Any CPU
{72663FB4-F999-4EC0-94A8-9E0E002C5F87}.Release|Any CPU.ActiveCfg = Release|Any CPU
{72663FB4-F999-4EC0-94A8-9E0E002C5F87}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BC1CD1F2-5E6B-43B1-8672-E70F784F90C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BC1CD1F2-5E6B-43B1-8672-E70F784F90C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BC1CD1F2-5E6B-43B1-8672-E70F784F90C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BC1CD1F2-5E6B-43B1-8672-E70F784F90C0}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/TableStorage.CodeAnalysis/SponsorLinker.cs b/src/TableStorage.CodeAnalysis/SponsorLinker.cs
new file mode 100644
index 0000000..2a34fdd
--- /dev/null
+++ b/src/TableStorage.CodeAnalysis/SponsorLinker.cs
@@ -0,0 +1,19 @@
+using System;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.Diagnostics;
+
+namespace Devlooped.TableStorage;
+
+[DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic, LanguageNames.FSharp)]
+class SponsorLinker : SponsorLink
+{
+ public SponsorLinker() : base(SponsorLinkSettings.Create(
+ "devlooped", "Devlooped.TableStorage",
+ diagnosticsIdPrefix: "DTS",
+ version: new Version(ThisAssembly.Info.Version).ToString(3)
+#if DEBUG
+ , quietDays: 0
+#endif
+ ))
+ { }
+}
\ No newline at end of file
diff --git a/src/TableStorage.CodeAnalysis/TableStorage.CodeAnalysis.csproj b/src/TableStorage.CodeAnalysis/TableStorage.CodeAnalysis.csproj
new file mode 100644
index 0000000..ebd4fb6
--- /dev/null
+++ b/src/TableStorage.CodeAnalysis/TableStorage.CodeAnalysis.csproj
@@ -0,0 +1,16 @@
+
+
+
+ netstandard2.0
+ analyzers/dotnet/roslyn4.0
+ false
+
+
+
+
+
+
+
+
+
+
diff --git a/src/TableStorage/TableStorage.csproj b/src/TableStorage/TableStorage.csproj
index c759fa1..b39ca2a 100644
--- a/src/TableStorage/TableStorage.csproj
+++ b/src/TableStorage/TableStorage.csproj
@@ -21,4 +21,8 @@
+
+
+
+