diff --git a/CloudStorageAccount.sln b/CloudStorageAccount.sln
index 2466c19..c186b9a 100644
--- a/CloudStorageAccount.sln
+++ b/CloudStorageAccount.sln
@@ -12,7 +12,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
readme.md = readme.md
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CloudStorageAccount.Source", "src\CloudStorageAccount.Source\CloudStorageAccount.Source.csproj", "{29911CE6-86EE-41F6-AB64-1C26DAEC2061}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CloudStorageAccount.Source", "src\CloudStorageAccount.Source\CloudStorageAccount.Source.csproj", "{29911CE6-86EE-41F6-AB64-1C26DAEC2061}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CloudStorageAccount.CodeAnalysis", "src\CloudStorageAccount.CodeAnalysis\CloudStorageAccount.CodeAnalysis.csproj", "{FC2D64C0-A42C-4981-BE73-E08DD2030093}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -32,6 +34,10 @@ Global
{29911CE6-86EE-41F6-AB64-1C26DAEC2061}.Debug|Any CPU.Build.0 = Debug|Any CPU
{29911CE6-86EE-41F6-AB64-1C26DAEC2061}.Release|Any CPU.ActiveCfg = Release|Any CPU
{29911CE6-86EE-41F6-AB64-1C26DAEC2061}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FC2D64C0-A42C-4981-BE73-E08DD2030093}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FC2D64C0-A42C-4981-BE73-E08DD2030093}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FC2D64C0-A42C-4981-BE73-E08DD2030093}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FC2D64C0-A42C-4981-BE73-E08DD2030093}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/CloudStorageAccount.CodeAnalysis/CloudStorageAccount.CodeAnalysis.csproj b/src/CloudStorageAccount.CodeAnalysis/CloudStorageAccount.CodeAnalysis.csproj
new file mode 100644
index 0000000..4410a8b
--- /dev/null
+++ b/src/CloudStorageAccount.CodeAnalysis/CloudStorageAccount.CodeAnalysis.csproj
@@ -0,0 +1,16 @@
+
+
+
+ netstandard2.0
+ analyzers/dotnet/roslyn4.0
+ false
+
+
+
+
+
+
+
+
+
+
diff --git a/src/CloudStorageAccount.CodeAnalysis/SponsorLinker.cs b/src/CloudStorageAccount.CodeAnalysis/SponsorLinker.cs
new file mode 100644
index 0000000..249c7fd
--- /dev/null
+++ b/src/CloudStorageAccount.CodeAnalysis/SponsorLinker.cs
@@ -0,0 +1,20 @@
+using System;
+using Devlooped;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.Diagnostics;
+
+namespace CloudStorageAccount.CodeAnalysis;
+
+[DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic, LanguageNames.FSharp)]
+class SponsorLinker : SponsorLink
+{
+ public SponsorLinker() : base(SponsorLinkSettings.Create(
+ "devlooped", "Devlooped.CloudStorageAccount",
+ diagnosticsIdPrefix: "DCSA",
+ version: new Version(ThisAssembly.Info.Version).ToString(3)
+#if DEBUG
+ , quietDays: 0
+#endif
+ ))
+ { }
+}
\ No newline at end of file
diff --git a/src/CloudStorageAccount.Source/CloudStorageAccount.Source.csproj b/src/CloudStorageAccount.Source/CloudStorageAccount.Source.csproj
index 3dc763a..8143e46 100644
--- a/src/CloudStorageAccount.Source/CloudStorageAccount.Source.csproj
+++ b/src/CloudStorageAccount.Source/CloudStorageAccount.Source.csproj
@@ -22,6 +22,10 @@
+
+
+
+
diff --git a/src/CloudStorageAccount/CloudStorageAccount.csproj b/src/CloudStorageAccount/CloudStorageAccount.csproj
index 98df384..89a8fb3 100644
--- a/src/CloudStorageAccount/CloudStorageAccount.csproj
+++ b/src/CloudStorageAccount/CloudStorageAccount.csproj
@@ -22,5 +22,9 @@
+
+
+
+