From 6c29603ad30b5c467c3e8819fd47a884ed8e319e Mon Sep 17 00:00:00 2001 From: Nathan Mytelka Date: Tue, 22 Dec 2020 08:14:45 -0800 Subject: [PATCH 1/6] Add analyzer --- .../MSBuildLocatorAnalyzer.sln | 49 ++++ .../CodeFixResources.Designer.cs | 83 ++++++ .../CodeFixResources.resx | 124 +++++++++ .../MSBuildLocatorAnalyzer.CodeFixes.csproj | 22 ++ .../MSBuildLocatorAnalyzerCodeFixProvider.cs | 81 ++++++ .../MSBuildLocatorAnalyzer.Package.csproj | 44 +++ .../tools/install.ps1 | 250 +++++++++++++++++ .../tools/uninstall.ps1 | 257 ++++++++++++++++++ .../MSBuildLocatorAnalyzer.Test.csproj | 28 ++ .../MSBuildLocatorAnalyzerUnitTests.cs | 59 ++++ .../CSharpAnalyzerVerifier`1+Test.cs | 26 ++ .../Verifiers/CSharpAnalyzerVerifier`1.cs | 38 +++ .../Verifiers/CSharpCodeFixVerifier`2+Test.cs | 28 ++ .../Verifiers/CSharpCodeFixVerifier`2.cs | 61 +++++ .../CSharpCodeRefactoringVerifier`1+Test.cs | 26 ++ .../CSharpCodeRefactoringVerifier`1.cs | 36 +++ .../Verifiers/CSharpVerifierHelper.cs | 33 +++ .../VisualBasicAnalyzerVerifier`1+Test.cs | 17 ++ .../VisualBasicAnalyzerVerifier`1.cs | 38 +++ .../VisualBasicCodeFixVerifier`2+Test.cs | 16 ++ .../Verifiers/VisualBasicCodeFixVerifier`2.cs | 61 +++++ ...sualBasicCodeRefactoringVerifier`1+Test.cs | 14 + .../VisualBasicCodeRefactoringVerifier`1.cs | 36 +++ .../MSBuildLocatorAnalyzer.Vsix.csproj | 48 ++++ .../source.extension.vsixmanifest | 24 ++ .../MSBuildLocatorAnalyzer.csproj | 21 ++ .../MSBuildLocatorAnalyzerAnalyzer.cs | 67 +++++ .../Resources.Designer.cs | 90 ++++++ .../MSBuildLocatorAnalyzer/Resources.resx | 132 +++++++++ MSBuildLocatorAnalyzer/NuGet.config | 11 + 30 files changed, 1820 insertions(+) create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.sln create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.resx create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/install.ps1 create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.Designer.cs create mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.resx create mode 100644 MSBuildLocatorAnalyzer/NuGet.config diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.sln b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.sln new file mode 100644 index 00000000..94cfa968 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.sln @@ -0,0 +1,49 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30807.9 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer", "MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.csproj", "{BFF38CC3-651E-4BCF-BD06-792DE348EA2C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.CodeFixes", "MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.CodeFixes\MSBuildLocatorAnalyzer.CodeFixes.csproj", "{78A91E45-74F2-438A-8B4B-8DEDE153E1E5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Package", "MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.Package\MSBuildLocatorAnalyzer.Package.csproj", "{9F8529A4-8BE8-40C7-B359-3F46AB49F642}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Test", "MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.Test\MSBuildLocatorAnalyzer.Test.csproj", "{9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Vsix", "MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.Vsix\MSBuildLocatorAnalyzer.Vsix.csproj", "{47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Release|Any CPU.Build.0 = Release|Any CPU + {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Release|Any CPU.Build.0 = Release|Any CPU + {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Release|Any CPU.Build.0 = Release|Any CPU + {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Release|Any CPU.Build.0 = Release|Any CPU + {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {13DE32B1-9D03-42E4-B12E-EC0161A5E981} + EndGlobalSection +EndGlobal diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs new file mode 100644 index 00000000..c4067d27 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs @@ -0,0 +1,83 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.0 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +namespace MSBuildLocatorAnalyzer +{ + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class CodeFixResources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal CodeFixResources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MSBuildLocatorAnalyzer.CodeFixResources", typeof(CodeFixResources).GetTypeInfo().Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Make uppercase. + /// + internal static string CodeFixTitle + { + get + { + return ResourceManager.GetString("CodeFixTitle", resourceCulture); + } + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.resx b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.resx new file mode 100644 index 00000000..97abe689 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Make uppercase + The title of the code fix. + + \ No newline at end of file diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj new file mode 100644 index 00000000..d2e900fa --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj @@ -0,0 +1,22 @@ + + + + netstandard2.0 + false + MSBuildLocatorAnalyzer + + + + + + + + + + + + + + + + diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs new file mode 100644 index 00000000..d48013cb --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs @@ -0,0 +1,81 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Formatting; +using Microsoft.CodeAnalysis.Rename; +using Microsoft.CodeAnalysis.Text; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Composition; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace MSBuildLocatorAnalyzer +{ + [ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(MSBuildLocatorAnalyzerCodeFixProvider)), Shared] + public class MSBuildLocatorAnalyzerCodeFixProvider : CodeFixProvider + { + private const string title = "Move to separate method"; + + public sealed override ImmutableArray FixableDiagnosticIds + { + get { return ImmutableArray.Create(MSBuildLocatorAnalyzerAnalyzer.DiagnosticId); } + } + + public sealed override FixAllProvider GetFixAllProvider() + { + // See https://github.com/dotnet/roslyn/blob/master/docs/analyzers/FixAllProvider.md for more information on Fix All Providers + return WellKnownFixAllProviders.BatchFixer; + } + + public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) + { + var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false); + + // TODO: Replace the following code with your own analysis, generating a CodeAction for each fix to suggest + var diagnostic = context.Diagnostics.First(); + var diagnosticSpan = diagnostic.Location.SourceSpan; + + // Find the type declaration identified by the diagnostic. + var declaration = root.FindToken(diagnosticSpan.Start).Parent.AncestorsAndSelf().OfType().First(); + + // Register a code action that will invoke the fix. + context.RegisterCodeFix( + CodeAction.Create( + title: title, + createChangedDocument: c => AddBracesAsync(context.Document, diagnostic, root), + equivalenceKey: title), + diagnostic); + } + + Task AddBracesAsync(Document document, Diagnostic diagnostic, SyntaxNode root) + { + StatementSyntax statement = root.FindNode(diagnostic.Location.SourceSpan).FirstAncestorOrSelf(); + SyntaxNode method; + for (method = root.FindNode(diagnostic.Location.SourceSpan); !(method is MethodDeclarationSyntax); method = method.Parent); + MethodDeclarationSyntax toInsert = SyntaxFactory.MethodDeclaration(attributeLists: SyntaxFactory.List(), + modifiers: SyntaxFactory.TokenList(SyntaxFactory.Identifier("private")), + returnType: SyntaxFactory.ParseTypeName("void"), + explicitInterfaceSpecifier: null, + identifier: SyntaxFactory.Identifier("UseMSBuild"), + typeParameterList: null, + parameterList: SyntaxFactory.ParameterList(), + constraintClauses: SyntaxFactory.List(), + body: SyntaxFactory.Block(statement), + semicolonToken: SyntaxFactory.Token(SyntaxKind.SemicolonToken)) + // Annotate that this node should be formatted + .WithAdditionalAnnotations(Formatter.Annotation); + var newRoot = root.InsertNodesAfter(method, new List() { toInsert }); + ExpressionStatementSyntax expression = SyntaxFactory.ExpressionStatement(SyntaxFactory.InvocationExpression(SyntaxFactory.IdentifierName(toInsert.Identifier.ValueText)) + .WithArgumentList(SyntaxFactory.ArgumentList() + .WithOpenParenToken(SyntaxFactory.Token(SyntaxKind.OpenParenToken)) + .WithCloseParenToken(SyntaxFactory.Token(SyntaxKind.CloseParenToken)))); + var thirdRoot = newRoot.ReplaceNode(statement, expression); + return Task.FromResult(document.WithSyntaxRoot(thirdRoot)); + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj new file mode 100644 index 00000000..8b371a24 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj @@ -0,0 +1,44 @@ + + + + netstandard2.0 + false + true + true + + + + MSBuildLocatorAnalyzer + 1.0.0.0 + nmytelka + http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE + http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE + http://ICON_URL_HERE_OR_DELETE_THIS_LINE + http://REPOSITORY_URL_HERE_OR_DELETE_THIS_LINE + false + MSBuildLocatorAnalyzer + Summary of changes made in this release of the package. + Copyright + MSBuildLocatorAnalyzer, analyzers + true + + $(TargetsForTfmSpecificContentInPackage);_AddAnalyzersToOutput + + + + + + + + + + + + + + + + + + + diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/install.ps1 b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/install.ps1 new file mode 100644 index 00000000..46df0bea --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/install.ps1 @@ -0,0 +1,250 @@ +param($installPath, $toolsPath, $package, $project) + +if($project.Object.SupportsPackageDependencyResolution) +{ + if($project.Object.SupportsPackageDependencyResolution()) + { + # Do not install analyzers via install.ps1, instead let the project system handle it. + return + } +} + +$analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers") * -Resolve + +foreach($analyzersPath in $analyzersPaths) +{ + if (Test-Path $analyzersPath) + { + # Install the language agnostic analyzers. + foreach ($analyzerFilePath in Get-ChildItem -Path "$analyzersPath\*.dll" -Exclude *.resources.dll) + { + if($project.Object.AnalyzerReferences) + { + $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName) + } + } + } +} + +# $project.Type gives the language name like (C# or VB.NET) +$languageFolder = "" +if($project.Type -eq "C#") +{ + $languageFolder = "cs" +} +if($project.Type -eq "VB.NET") +{ + $languageFolder = "vb" +} +if($languageFolder -eq "") +{ + return +} + +foreach($analyzersPath in $analyzersPaths) +{ + # Install language specific analyzers. + $languageAnalyzersPath = join-path $analyzersPath $languageFolder + if (Test-Path $languageAnalyzersPath) + { + foreach ($analyzerFilePath in Get-ChildItem -Path "$languageAnalyzersPath\*.dll" -Exclude *.resources.dll) + { + if($project.Object.AnalyzerReferences) + { + $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName) + } + } + } +} +# SIG # Begin signature block +# MIIjkgYJKoZIhvcNAQcCoIIjgzCCI38CAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCA/i+qRUHsWzI0s +# FVk99zLgt/HOEQ33uvkFsWtHTHZgf6CCDYEwggX/MIID56ADAgECAhMzAAABh3IX +# chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB +# znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH +# sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d +# weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ +# itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV +# Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw +# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1 +# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu +# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu +# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w +# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3 +# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx +# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy +# S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K +# NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV +# BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr +# qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx +# zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe +# yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g +# yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf +# AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI +# 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5 +# GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea +# jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS +# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK +# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 +# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0 +# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla +# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS +# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT +# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB +# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG +# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S +# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz +# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7 +# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u +# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33 +# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl +# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP +# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB +# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF +# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM +# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ +# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud +# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO +# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0 +# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p +# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB +# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw +# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA +# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY +# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj +# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd +# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ +# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf +# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ +# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j +# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B +# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96 +# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7 +# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I +# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVZzCCFWMCAQEwgZUwfjELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z +# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN +# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor +# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgRjg7DcI6 +# uhYfXWwAQ6hK0mPW7iyr2tzHR0DHSDJkscIwQgYKKwYBBAGCNwIBDDE0MDKgFIAS +# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN +# BgkqhkiG9w0BAQEFAASCAQCMjRK3YvDB0Sy30hadcXmGkSLrq7U7R+bkBh+FsWz8 +# CLSdV9Sh1z6mmVlEk6jHf7h3fiMEZwXGSvBEH4dc+equuU9KhYkhfTTfd3SSCER6 +# swWv/vqzQgz7WZOzuDuOrMc4lqCc3qUeLCeFnZEjfDKgymUi7UaTDofM0HNZtYA1 +# f2kLORo2CzvvZLHK+xQYvefFFrCsHSiNFvH5zM9142c1aMpGVgyuB6cBxL3johS/ +# 7i4myLHr9LB7GcSmEYqDH5q4mxgNNtunYqEyK0V0b/UI0b9q1p50KJPag9zh/HB0 +# Q+fY1t8guPwGoxkO+hqDV6k1R3tJBHG5c8kDSCVR/CbVoYIS8TCCEu0GCisGAQQB +# gjcDAwExghLdMIIS2QYJKoZIhvcNAQcCoIISyjCCEsYCAQMxDzANBglghkgBZQME +# AgEFADCCAVUGCyqGSIb3DQEJEAEEoIIBRASCAUAwggE8AgEBBgorBgEEAYRZCgMB +# MDEwDQYJYIZIAWUDBAIBBQAEIHQWatv8aXHB68pc0SETnr9LF64Haou9lbLES5Og +# 6ES0AgZfu81ohkkYEzIwMjAxMjAzMTM0MjE0Ljc2MlowBIACAfSggdSkgdEwgc4x +# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt +# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1p +# Y3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMg +# VFNTIEVTTjowQTU2LUUzMjktNEQ0RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUt +# U3RhbXAgU2VydmljZaCCDkQwggT1MIID3aADAgECAhMzAAABJy9uo++RqBmoAAAA +# AAEnMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo +# aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y +# cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw +# MB4XDTE5MTIxOTAxMTQ1OVoXDTIxMDMxNzAxMTQ1OVowgc4xCzAJBgNVBAYTAlVT +# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK +# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVy +# YXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjowQTU2 +# LUUzMjktNEQ0RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj +# ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPgB3nERnk6fS40vvWeD +# 3HCgM9Ep4xTIQiPnJXE9E+HkZVtTsPemoOyhfNAyF95E/rUvXOVTUcJFL7Xb16jT +# KPXONsCWY8DCixSDIiid6xa30TiEWVcIZRwiDlcx29D467OTav5rA1G6TwAEY5rQ +# jhUHLrOoJgfJfakZq6IHjd+slI0/qlys7QIGakFk2OB6mh/ln/nS8G4kNRK6Do4g +# xDtnBSFLNfhsSZlRSMDJwFvrZ2FCkaoexd7rKlUNOAAScY411IEqQeI1PwfRm3aW +# bS8IvAfJPC2Ah2LrtP8sKn5faaU8epexje7vZfcZif/cbxgUKStJzqbdvTBNc93n +# /Z8CAwEAAaOCARswggEXMB0GA1UdDgQWBBTl9JZVgF85MSRbYlOJXbhY022V8jAf +# BgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBH +# hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNU +# aW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF +# BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0 +# YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsG +# AQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQAKyo180VXHBqVnjZwQy7NlzXbo2+W5 +# qfHxR7ANV5RBkRkdGamkwUcDNL+DpHObFPJHa0oTeYKE0Zbl1MvvfS8RtGGdhGYG +# CJf+BPd/gBCs4+dkZdjvOzNyuVuDPGlqQ5f7HS7iuQ/cCyGHcHYJ0nXVewF2Lk+J +# lrWykHpTlLwPXmCpNR+gieItPi/UMF2RYTGwojW+yIVwNyMYnjFGUxEX5/DtJjRZ +# mg7PBHMrENN2DgO6wBelp4ptyH2KK2EsWT+8jFCuoKv+eJby0QD55LN5f8SrUPRn +# K86fh7aVOfCglQofo5ABZIGiDIrg4JsV4k6p0oBSIFOAcqRAhiH+1spCMIIGcTCC +# BFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC +# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV +# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJv +# b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcN +# MjUwNzAxMjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv +# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 +# aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCASIw +# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0 +# VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEwWbEw +# RA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQe +# dGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKx +# Xf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw2k4G +# kbaICDXoeByw6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEA +# AaOCAeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7 +# fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC +# AYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX +# zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20v +# cGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYI +# KwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5j +# b20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0g +# AQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93 +# d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYB +# BQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0AGUA +# bQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOh +# IW+z66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtRgkQS +# +7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlK +# kVIArzgPF/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon +# /VWvL/625Y4zu2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3DnKOi +# PPp/fZZqkHimbdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/ +# fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110mCII +# YdqwUB5vvfHhAN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0 +# cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffIrE7a +# KLixqduWsqdCosnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQ +# cdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+ +# NR4Iuto229Nfj950iEkSoYIC0jCCAjsCAQEwgfyhgdSkgdEwgc4xCzAJBgNVBAYT +# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD +# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBP +# cGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjow +# QTU2LUUzMjktNEQ0RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy +# dmljZaIjCgEBMAcGBSsOAwIaAxUAs5W4TmyDHMRM7iz6mgGojqvXHzOggYMwgYCk +# fjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH +# UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD +# Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIF +# AONy0cMwIhgPMjAyMDEyMDMwNjUzNTVaGA8yMDIwMTIwNDA2NTM1NVowdzA9Bgor +# BgEEAYRZCgQBMS8wLTAKAgUA43LRwwIBADAKAgEAAgIfDgIB/zAHAgEAAgIR5jAK +# AgUA43QjQwIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIB +# AAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAGxya6RvpAkKeXHC +# GyLVn0l1IXJgo881ZHrospc5cKqZLyX5TBAZpv/NDei2cKDLeXuat0gSEs7mrn5U +# 8vV3LxU+7HgSBOotXtr2NEW9M7I5R8XDkQRM6Pc1K/LmIbGuPkLue6xS6z9uUpK5 +# DadsOpcPsWBeU6g5ThWyojwU8kAlMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMC +# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV +# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp +# bWUtU3RhbXAgUENBIDIwMTACEzMAAAEnL26j75GoGagAAAAAAScwDQYJYIZIAWUD +# BAIBBQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0B +# CQQxIgQg34jbdm7WDG53Ccs/FrVH3+JIC+Hdx3omxwLN3u1jOqIwgfoGCyqGSIb3 +# DQEJEAIvMYHqMIHnMIHkMIG9BCAbkuhLEoYdahb/BUyVszO2VDi6kB3MSaof/+8u +# 7SM+IjCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u +# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp +# b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAB +# Jy9uo++RqBmoAAAAAAEnMCIEILgon52MKbAD8g3G36p3uDsvSqDzncE8iP3YoYsg +# BuSeMA0GCSqGSIb3DQEBCwUABIIBAMzLCu3TjnmzrQ+yK0iBl9Xyr63vjvXR8R7p +# NS/2I2m/jGzdcdGOPScJC3DPb4kQlwKt0BIPQX8XQZ4TBevzH5TQE6CE47YWLWkz +# 6s7Ya5+qLvr14hY0PApCJJ9Th+JFEq7rFJqpowTEhbqWe+4v4+yCzoNiBT4tSSzu +# weKbfPOZF0E2Ml1ceUFG5GcL7sXvRHU/+sZSs3AkwZoxBYUUTJipGo9YniCG9Jm7 +# N8bPyClB/YEOPtnOEOk65pJ6yNPVqr9pF9ntxQ7bjTUrgyt6zFFoid1xq5RoUW4L +# vWRxZDk+X+kjSmV7lRq1aTHRSlJbdEYucUoRyNbdJ5zuHoeve90= +# SIG # End signature block diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 new file mode 100644 index 00000000..3adc538e --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 @@ -0,0 +1,257 @@ +param($installPath, $toolsPath, $package, $project) + +if($project.Object.SupportsPackageDependencyResolution) +{ + if($project.Object.SupportsPackageDependencyResolution()) + { + # Do not uninstall analyzers via uninstall.ps1, instead let the project system handle it. + return + } +} + +$analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers") * -Resolve + +foreach($analyzersPath in $analyzersPaths) +{ + # Uninstall the language agnostic analyzers. + if (Test-Path $analyzersPath) + { + foreach ($analyzerFilePath in Get-ChildItem -Path "$analyzersPath\*.dll" -Exclude *.resources.dll) + { + if($project.Object.AnalyzerReferences) + { + $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName) + } + } + } +} + +# $project.Type gives the language name like (C# or VB.NET) +$languageFolder = "" +if($project.Type -eq "C#") +{ + $languageFolder = "cs" +} +if($project.Type -eq "VB.NET") +{ + $languageFolder = "vb" +} +if($languageFolder -eq "") +{ + return +} + +foreach($analyzersPath in $analyzersPaths) +{ + # Uninstall language specific analyzers. + $languageAnalyzersPath = join-path $analyzersPath $languageFolder + if (Test-Path $languageAnalyzersPath) + { + foreach ($analyzerFilePath in Get-ChildItem -Path "$languageAnalyzersPath\*.dll" -Exclude *.resources.dll) + { + if($project.Object.AnalyzerReferences) + { + try + { + $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName) + } + catch + { + + } + } + } + } +} +# SIG # Begin signature block +# MIIjkgYJKoZIhvcNAQcCoIIjgzCCI38CAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDC68wb97fg0QGL +# yXrxJhYfmibzcOh8caqC0uZprfczDaCCDYEwggX/MIID56ADAgECAhMzAAABh3IX +# chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB +# znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH +# sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d +# weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ +# itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV +# Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw +# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1 +# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu +# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu +# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w +# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3 +# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx +# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy +# S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K +# NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV +# BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr +# qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx +# zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe +# yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g +# yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf +# AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI +# 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5 +# GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea +# jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS +# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK +# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 +# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0 +# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla +# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS +# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT +# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB +# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG +# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S +# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz +# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7 +# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u +# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33 +# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl +# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP +# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB +# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF +# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM +# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ +# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud +# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO +# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0 +# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p +# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB +# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw +# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA +# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY +# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj +# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd +# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ +# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf +# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ +# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j +# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B +# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96 +# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7 +# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I +# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVZzCCFWMCAQEwgZUwfjELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z +# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN +# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor +# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgF1ypFyzl +# AvvWGVCeXczrfpXmJNm9vpyjcwd4y4ivfqowQgYKKwYBBAGCNwIBDDE0MDKgFIAS +# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN +# BgkqhkiG9w0BAQEFAASCAQAlvp3kobQ3njGrv7T9mKm8viQ7IsK06yFq43ZwDIob +# rkxRRMZKKJfaJ2pkkTtMun/wzMjQ7hqbULUO22lywwNy3t7uNINETfPReIYNIG9p +# KZ3t8zI1T+7B9Vpm5t9LC9hQp1yrj88LcA1QAaFcvjn1sxUOGlLFK2jsa2AUcrwr +# QpiVDX+OOdExw+EJTUBil/kvAtXHdCT1qkH3JzzSBYiCLGq2pW4AuVvlL0iiRKeT +# /AW6TY9SuOUoG0aOZZzLAuCp6qA7ovKqRAGoFpcAaGXQokWRLU4se3/2meBksksu +# ZlP1paBMHbT1ZLJP095SzhwYfsw7IDkC0Zt1OLq7IdwwoYIS8TCCEu0GCisGAQQB +# gjcDAwExghLdMIIS2QYJKoZIhvcNAQcCoIISyjCCEsYCAQMxDzANBglghkgBZQME +# AgEFADCCAVUGCyqGSIb3DQEJEAEEoIIBRASCAUAwggE8AgEBBgorBgEEAYRZCgMB +# MDEwDQYJYIZIAWUDBAIBBQAEIMdwQTCmst1vtKyhKIg+hpE9VQEH7XzRp1eSg9au +# tOz7AgZfu+lvK1cYEzIwMjAxMjAzMTM0MjE0LjEzNVowBIACAfSggdSkgdEwgc4x +# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt +# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1p +# Y3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMg +# VFNTIEVTTjpEOURFLUUzOUEtNDNGRTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUt +# U3RhbXAgU2VydmljZaCCDkQwggT1MIID3aADAgECAhMzAAABLS5NQcpjZTOgAAAA +# AAEtMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo +# aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y +# cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw +# MB4XDTE5MTIxOTAxMTUwNFoXDTIxMDMxNzAxMTUwNFowgc4xCzAJBgNVBAYTAlVT +# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK +# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVy +# YXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpEOURF +# LUUzOUEtNDNGRTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj +# ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKlhjfR1STqYRTS3s0i4 +# jIcSMV+G4N0oYgwlQK+pl4DVMFmr1iTZHFLj3Tt7V6F+M/BXx0h9i0uu1yBnqCqN +# OkuJERTbVnM4u3JvRxzsQfCjBfqD/CNwoMNekoylIBzxP50Skjp1pPsnQBKHaCP8 +# tguvYVzoTQ54q2VpYEP/+OYTQeEPqWFi8WggvsckuercUGkhYWM8DV/4JU7N/rbD +# rtamYbe8LtkViTQYbigUSCAor9DhtAZvq8A0A73XFH2df2wDlLtAnKCcsVvXSmZ3 +# 5bAqneN4uEQVy8NQdReGI1tI6UxoC7XnjGvK4McDdKhavNJ7DAnSP5+G/DTkdWD+ +# lN8CAwEAAaOCARswggEXMB0GA1UdDgQWBBTZbGR8QgEh+E4Oiv8vQ7408p2GzTAf +# BgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBH +# hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNU +# aW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF +# BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0 +# YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsG +# AQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQB9awNk906recBuoO7Ezq7B8UGu9EoF +# XiL8ac0bbsZDBY9z/3p8atVZRCxHN43a3WGbCMZoKYxSBH6UCkcDcwXIfNKEbVMz +# nF1mjpQEGbqhR+rPNqHXZotSV+vn85AxmefAM3bcLt+WNBpEuOZZ4kPZVcFtMo4Y +# yQjxoNRPiwmp+B0HkhQs/l/VIg0XJY6k5FRKE/JFEcVY4256NdqUZ+3jou3b4OAk +# tE2urr4V6VRw1fffOlxZb8MyvE5mqvTVJOStVxCuhuqg1rIe8la1gZ5iiuIyWeft +# ONfMw0nSZchGLigDeInw6XfwwgFnC5Ql8Pbf2jOxCUluAYbzykI+MnBiMIIGcTCC +# BFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC +# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV +# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJv +# b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcN +# MjUwNzAxMjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv +# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 +# aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCASIw +# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0 +# VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEwWbEw +# RA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQe +# dGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKx +# Xf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw2k4G +# kbaICDXoeByw6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEA +# AaOCAeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7 +# fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC +# AYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX +# zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20v +# cGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYI +# KwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5j +# b20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0g +# AQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93 +# d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYB +# BQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0AGUA +# bQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOh +# IW+z66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtRgkQS +# +7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlK +# kVIArzgPF/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon +# /VWvL/625Y4zu2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3DnKOi +# PPp/fZZqkHimbdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/ +# fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110mCII +# YdqwUB5vvfHhAN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0 +# cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffIrE7a +# KLixqduWsqdCosnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQ +# cdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+ +# NR4Iuto229Nfj950iEkSoYIC0jCCAjsCAQEwgfyhgdSkgdEwgc4xCzAJBgNVBAYT +# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD +# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBP +# cGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpE +# OURFLUUzOUEtNDNGRTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy +# dmljZaIjCgEBMAcGBSsOAwIaAxUAn85fx36He7F0vgmyUlz2w82l0LGggYMwgYCk +# fjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH +# UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD +# Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIF +# AONy7Z0wIhgPMjAyMDEyMDMwODUyNDVaGA8yMDIwMTIwNDA4NTI0NVowdzA9Bgor +# BgEEAYRZCgQBMS8wLTAKAgUA43LtnQIBADAKAgEAAgIeNgIB/zAHAgEAAgISKjAK +# AgUA43Q/HQIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIB +# AAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAIupzcP2Fb/15zFB +# MFrTbeM0MCQVIRy8J9FjWdJkxeLbuUNsjL2MvjXhcC9P1jzGMWv7zk1Vqd/a0KAX +# of2RasiNtLpa/0QW6M+N2HkkJTcSVtsIyLC2/PyK9Tbx3kDzeEoPmRhSesXVJ+Bo +# e/ohMk+yGs96uL60/kKvJHqzeFZKMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMC +# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV +# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp +# bWUtU3RhbXAgUENBIDIwMTACEzMAAAEtLk1BymNlM6AAAAAAAS0wDQYJYIZIAWUD +# BAIBBQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0B +# CQQxIgQgR3/jlSJ40+Uxob7DC+9E0RT/g9bnA4IuNWxjDyUZLhUwgfoGCyqGSIb3 +# DQEJEAIvMYHqMIHnMIHkMIG9BCCO8Vpycn0gB4/ilRAPPDbS+Cmbqj/uC011moc5 +# oeGDwTCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u +# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp +# b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAB +# LS5NQcpjZTOgAAAAAAEtMCIEID1u73c3Wq/e0ID4oqGB3Ux43WPbdQ5f/5pa0D32 +# 1X0GMA0GCSqGSIb3DQEBCwUABIIBADedu37tYnFrz5Ry3EreheZ2gObKfN4dsfLI +# fpGsCU9ffeM5Aq7LtYLlRWW9b69TAHIY0WjpkGxbxstFZDD1/dO0GxnKU+JnGVAo +# ca85iq6BQ+Ke4Vu/tMdUWcDxzpSCHUH63sZkUea92L5fs2FU5R8aKyGlyfihCW7u +# u6qDBbDfnKC7Y06PFsdp3q7UrE0B+UYLrT8eppCRHnF5P7nIjsPG9NSUYf7cWvLV +# aWd6/oypG+937KWaVYoWdWNwng5UqT/bHgAygz4O14vQGdg+MWHzCishwI2gxa3n +# rBwnR+STwnR16qfYV5j5wuBXKHSNNDXk8NiwjDcfvQD71WY4vzo= +# SIG # End signature block diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj new file mode 100644 index 00000000..96032660 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj @@ -0,0 +1,28 @@ + + + + netcoreapp2.0 + + true + true + + + + + + + + + + + + + + + + + + + + + diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs new file mode 100644 index 00000000..0f0d459f --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs @@ -0,0 +1,59 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System.Threading.Tasks; +using VerifyCS = MSBuildLocatorAnalyzer.Test.CSharpCodeFixVerifier< + MSBuildLocatorAnalyzer.MSBuildLocatorAnalyzerAnalyzer, + MSBuildLocatorAnalyzer.MSBuildLocatorAnalyzerCodeFixProvider>; + +namespace MSBuildLocatorAnalyzer.Test +{ + [TestClass] + public class MSBuildLocatorAnalyzerUnitTest + { + //No diagnostics expected to show up + [TestMethod] + public async Task TestMethod1() + { + var test = @""; + + await VerifyCS.VerifyAnalyzerAsync(test); + } + + //Diagnostic and CodeFix both triggered and checked for + [TestMethod] + public async Task TestMethod2() + { + var test = @" + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + using System.Threading.Tasks; + using System.Diagnostics; + + namespace ConsoleApplication1 + { + class {|#0:TypeName|} + { + } + }"; + + var fixtest = @" + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + using System.Threading.Tasks; + using System.Diagnostics; + + namespace ConsoleApplication1 + { + class TYPENAME + { + } + }"; + + var expected = VerifyCS.Diagnostic("MSBuildLocatorAnalyzer").WithLocation(0).WithArguments("TypeName"); + await VerifyCS.VerifyCodeFixAsync(test, expected, fixtest); + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs new file mode 100644 index 00000000..223172eb --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs @@ -0,0 +1,26 @@ +using Microsoft.CodeAnalysis.CSharp.Testing; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Testing.Verifiers; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class CSharpAnalyzerVerifier + where TAnalyzer : DiagnosticAnalyzer, new() + { + public class Test : CSharpAnalyzerTest + { + public Test() + { + SolutionTransforms.Add((solution, projectId) => + { + var compilationOptions = solution.GetProject(projectId).CompilationOptions; + compilationOptions = compilationOptions.WithSpecificDiagnosticOptions( + compilationOptions.SpecificDiagnosticOptions.SetItems(CSharpVerifierHelper.NullableWarnings)); + solution = solution.WithProjectCompilationOptions(projectId, compilationOptions); + + return solution; + }); + } + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs new file mode 100644 index 00000000..388adddd --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs @@ -0,0 +1,38 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp.Testing; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Testing; +using Microsoft.CodeAnalysis.Testing.Verifiers; +using System.Threading; +using System.Threading.Tasks; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class CSharpAnalyzerVerifier + where TAnalyzer : DiagnosticAnalyzer, new() + { + /// + public static DiagnosticResult Diagnostic() + => CSharpAnalyzerVerifier.Diagnostic(); + + /// + public static DiagnosticResult Diagnostic(string diagnosticId) + => CSharpAnalyzerVerifier.Diagnostic(diagnosticId); + + /// + public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor) + => CSharpAnalyzerVerifier.Diagnostic(descriptor); + + /// + public static async Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected) + { + var test = new Test + { + TestCode = source, + }; + + test.ExpectedDiagnostics.AddRange(expected); + await test.RunAsync(CancellationToken.None); + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs new file mode 100644 index 00000000..72b6546e --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs @@ -0,0 +1,28 @@ +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.CSharp.Testing; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Testing.Verifiers; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class CSharpCodeFixVerifier + where TAnalyzer : DiagnosticAnalyzer, new() + where TCodeFix : CodeFixProvider, new() + { + public class Test : CSharpCodeFixTest + { + public Test() + { + SolutionTransforms.Add((solution, projectId) => + { + var compilationOptions = solution.GetProject(projectId).CompilationOptions; + compilationOptions = compilationOptions.WithSpecificDiagnosticOptions( + compilationOptions.SpecificDiagnosticOptions.SetItems(CSharpVerifierHelper.NullableWarnings)); + solution = solution.WithProjectCompilationOptions(projectId, compilationOptions); + + return solution; + }); + } + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs new file mode 100644 index 00000000..c90c124c --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs @@ -0,0 +1,61 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.CSharp.Testing; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Testing; +using Microsoft.CodeAnalysis.Testing.Verifiers; +using System.Threading; +using System.Threading.Tasks; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class CSharpCodeFixVerifier + where TAnalyzer : DiagnosticAnalyzer, new() + where TCodeFix : CodeFixProvider, new() + { + /// + public static DiagnosticResult Diagnostic() + => CSharpCodeFixVerifier.Diagnostic(); + + /// + public static DiagnosticResult Diagnostic(string diagnosticId) + => CSharpCodeFixVerifier.Diagnostic(diagnosticId); + + /// + public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor) + => CSharpCodeFixVerifier.Diagnostic(descriptor); + + /// + public static async Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected) + { + var test = new Test + { + TestCode = source, + }; + + test.ExpectedDiagnostics.AddRange(expected); + await test.RunAsync(CancellationToken.None); + } + + /// + public static async Task VerifyCodeFixAsync(string source, string fixedSource) + => await VerifyCodeFixAsync(source, DiagnosticResult.EmptyDiagnosticResults, fixedSource); + + /// + public static async Task VerifyCodeFixAsync(string source, DiagnosticResult expected, string fixedSource) + => await VerifyCodeFixAsync(source, new[] { expected }, fixedSource); + + /// + public static async Task VerifyCodeFixAsync(string source, DiagnosticResult[] expected, string fixedSource) + { + var test = new Test + { + TestCode = source, + FixedCode = fixedSource, + }; + + test.ExpectedDiagnostics.AddRange(expected); + await test.RunAsync(CancellationToken.None); + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs new file mode 100644 index 00000000..9787b2cf --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs @@ -0,0 +1,26 @@ +using Microsoft.CodeAnalysis.CodeRefactorings; +using Microsoft.CodeAnalysis.CSharp.Testing; +using Microsoft.CodeAnalysis.Testing.Verifiers; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class CSharpCodeRefactoringVerifier + where TCodeRefactoring : CodeRefactoringProvider, new() + { + public class Test : CSharpCodeRefactoringTest + { + public Test() + { + SolutionTransforms.Add((solution, projectId) => + { + var compilationOptions = solution.GetProject(projectId).CompilationOptions; + compilationOptions = compilationOptions.WithSpecificDiagnosticOptions( + compilationOptions.SpecificDiagnosticOptions.SetItems(CSharpVerifierHelper.NullableWarnings)); + solution = solution.WithProjectCompilationOptions(projectId, compilationOptions); + + return solution; + }); + } + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs new file mode 100644 index 00000000..b10da4a9 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs @@ -0,0 +1,36 @@ +using Microsoft.CodeAnalysis.CodeRefactorings; +using Microsoft.CodeAnalysis.Testing; +using System.Threading; +using System.Threading.Tasks; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class CSharpCodeRefactoringVerifier + where TCodeRefactoring : CodeRefactoringProvider, new() + { + /// + public static async Task VerifyRefactoringAsync(string source, string fixedSource) + { + await VerifyRefactoringAsync(source, DiagnosticResult.EmptyDiagnosticResults, fixedSource); + } + + /// + public static async Task VerifyRefactoringAsync(string source, DiagnosticResult expected, string fixedSource) + { + await VerifyRefactoringAsync(source, new[] { expected }, fixedSource); + } + + /// + public static async Task VerifyRefactoringAsync(string source, DiagnosticResult[] expected, string fixedSource) + { + var test = new Test + { + TestCode = source, + FixedCode = fixedSource, + }; + + test.ExpectedDiagnostics.AddRange(expected); + await test.RunAsync(CancellationToken.None); + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs new file mode 100644 index 00000000..7a603d34 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs @@ -0,0 +1,33 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using System; +using System.Collections.Immutable; + +namespace MSBuildLocatorAnalyzer.Test +{ + internal static class CSharpVerifierHelper + { + /// + /// By default, the compiler reports diagnostics for nullable reference types at + /// , and the analyzer test framework defaults to only validating + /// diagnostics at . This map contains all compiler diagnostic IDs + /// related to nullability mapped to , which is then used to enable all + /// of these warnings for default validation during analyzer and code fix tests. + /// + internal static ImmutableDictionary NullableWarnings { get; } = GetNullableWarningsFromCompiler(); + + private static ImmutableDictionary GetNullableWarningsFromCompiler() + { + string[] args = { "/warnaserror:nullable" }; + var commandLineArguments = CSharpCommandLineParser.Default.Parse(args, baseDirectory: Environment.CurrentDirectory, sdkDirectory: Environment.CurrentDirectory); + var nullableWarnings = commandLineArguments.CompilationOptions.SpecificDiagnosticOptions; + + // Workaround for https://github.com/dotnet/roslyn/issues/41610 + nullableWarnings = nullableWarnings + .SetItem("CS8632", ReportDiagnostic.Error) + .SetItem("CS8669", ReportDiagnostic.Error); + + return nullableWarnings; + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs new file mode 100644 index 00000000..0fc3735b --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs @@ -0,0 +1,17 @@ +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Testing.Verifiers; +using Microsoft.CodeAnalysis.VisualBasic.Testing; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class VisualBasicAnalyzerVerifier + where TAnalyzer : DiagnosticAnalyzer, new() + { + public class Test : VisualBasicAnalyzerTest + { + public Test() + { + } + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs new file mode 100644 index 00000000..456e9d79 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs @@ -0,0 +1,38 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Testing; +using Microsoft.CodeAnalysis.Testing.Verifiers; +using Microsoft.CodeAnalysis.VisualBasic.Testing; +using System.Threading; +using System.Threading.Tasks; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class VisualBasicAnalyzerVerifier + where TAnalyzer : DiagnosticAnalyzer, new() + { + /// + public static DiagnosticResult Diagnostic() + => VisualBasicAnalyzerVerifier.Diagnostic(); + + /// + public static DiagnosticResult Diagnostic(string diagnosticId) + => VisualBasicAnalyzerVerifier.Diagnostic(diagnosticId); + + /// + public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor) + => VisualBasicAnalyzerVerifier.Diagnostic(descriptor); + + /// + public static async Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected) + { + var test = new Test + { + TestCode = source, + }; + + test.ExpectedDiagnostics.AddRange(expected); + await test.RunAsync(CancellationToken.None); + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs new file mode 100644 index 00000000..14540d87 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs @@ -0,0 +1,16 @@ +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Testing.Verifiers; +using Microsoft.CodeAnalysis.VisualBasic.Testing; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class VisualBasicCodeFixVerifier + where TAnalyzer : DiagnosticAnalyzer, new() + where TCodeFix : CodeFixProvider, new() + { + public class Test : VisualBasicCodeFixTest + { + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs new file mode 100644 index 00000000..6bd176f3 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs @@ -0,0 +1,61 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Testing; +using Microsoft.CodeAnalysis.Testing.Verifiers; +using Microsoft.CodeAnalysis.VisualBasic.Testing; +using System.Threading; +using System.Threading.Tasks; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class VisualBasicCodeFixVerifier + where TAnalyzer : DiagnosticAnalyzer, new() + where TCodeFix : CodeFixProvider, new() + { + /// + public static DiagnosticResult Diagnostic() + => VisualBasicCodeFixVerifier.Diagnostic(); + + /// + public static DiagnosticResult Diagnostic(string diagnosticId) + => VisualBasicCodeFixVerifier.Diagnostic(diagnosticId); + + /// + public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor) + => VisualBasicCodeFixVerifier.Diagnostic(descriptor); + + /// + public static async Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected) + { + var test = new Test + { + TestCode = source, + }; + + test.ExpectedDiagnostics.AddRange(expected); + await test.RunAsync(CancellationToken.None); + } + + /// + public static async Task VerifyCodeFixAsync(string source, string fixedSource) + => await VerifyCodeFixAsync(source, DiagnosticResult.EmptyDiagnosticResults, fixedSource); + + /// + public static async Task VerifyCodeFixAsync(string source, DiagnosticResult expected, string fixedSource) + => await VerifyCodeFixAsync(source, new[] { expected }, fixedSource); + + /// + public static async Task VerifyCodeFixAsync(string source, DiagnosticResult[] expected, string fixedSource) + { + var test = new Test + { + TestCode = source, + FixedCode = fixedSource, + }; + + test.ExpectedDiagnostics.AddRange(expected); + await test.RunAsync(CancellationToken.None); + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs new file mode 100644 index 00000000..6926e88b --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs @@ -0,0 +1,14 @@ +using Microsoft.CodeAnalysis.CodeRefactorings; +using Microsoft.CodeAnalysis.Testing.Verifiers; +using Microsoft.CodeAnalysis.VisualBasic.Testing; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class VisualBasicCodeRefactoringVerifier + where TCodeRefactoring : CodeRefactoringProvider, new() + { + public class Test : VisualBasicCodeRefactoringTest + { + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs new file mode 100644 index 00000000..78bffb8c --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs @@ -0,0 +1,36 @@ +using Microsoft.CodeAnalysis.CodeRefactorings; +using Microsoft.CodeAnalysis.Testing; +using System.Threading; +using System.Threading.Tasks; + +namespace MSBuildLocatorAnalyzer.Test +{ + public static partial class VisualBasicCodeRefactoringVerifier + where TCodeRefactoring : CodeRefactoringProvider, new() + { + /// + public static async Task VerifyRefactoringAsync(string source, string fixedSource) + { + await VerifyRefactoringAsync(source, DiagnosticResult.EmptyDiagnosticResults, fixedSource); + } + + /// + public static async Task VerifyRefactoringAsync(string source, DiagnosticResult expected, string fixedSource) + { + await VerifyRefactoringAsync(source, new[] { expected }, fixedSource); + } + + /// + public static async Task VerifyRefactoringAsync(string source, DiagnosticResult[] expected, string fixedSource) + { + var test = new Test + { + TestCode = source, + FixedCode = fixedSource, + }; + + test.ExpectedDiagnostics.AddRange(expected); + await test.RunAsync(CancellationToken.None); + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj new file mode 100644 index 00000000..8bf2cbcb --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj @@ -0,0 +1,48 @@ + + + + + + net472 + MSBuildLocatorAnalyzer.Vsix + MSBuildLocatorAnalyzer.Vsix + + + + false + false + false + false + false + false + Roslyn + + + + + + + + Program + $(DevEnvDir)devenv.exe + /rootsuffix $(VSSDKTargetPlatformRegRootSuffix) + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest new file mode 100644 index 00000000..d34857b0 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest @@ -0,0 +1,24 @@ + + + + + MSBuildLocatorAnalyzer + This is a sample diagnostic extension for the .NET Compiler Platform ("Roslyn"). + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj new file mode 100644 index 00000000..b50f469c --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj @@ -0,0 +1,21 @@ + + + + netstandard2.0 + false + + + *$(MSBuildProjectFullPath)* + + + + + + + + + + + + + diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs new file mode 100644 index 00000000..727dc678 --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs @@ -0,0 +1,67 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; +using System.Threading; + +namespace MSBuildLocatorAnalyzer +{ + [DiagnosticAnalyzer(LanguageNames.CSharp)] + public class MSBuildLocatorAnalyzerAnalyzer : DiagnosticAnalyzer + { + public const string DiagnosticId = "MSBuildLocatorAnalyzer"; + + // You can change these strings in the Resources.resx file. If you do not want your analyzer to be localize-able, you can use regular strings for Title and MessageFormat. + // See https://github.com/dotnet/roslyn/blob/master/docs/analyzers/Localizing%20Analyzers.md for more on localization + private static readonly LocalizableString Title = new LocalizableResourceString(nameof(Resources.AnalyzerTitle), Resources.ResourceManager, typeof(Resources)); + private static readonly LocalizableString MessageFormat = new LocalizableResourceString(nameof(Resources.AnalyzerMessageFormat), Resources.ResourceManager, typeof(Resources)); + private static readonly LocalizableString Description = new LocalizableResourceString(nameof(Resources.AnalyzerDescription), Resources.ResourceManager, typeof(Resources)); + private const string Category = "Naming"; + + private static readonly DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: Description); + + public override ImmutableArray SupportedDiagnostics { get { return ImmutableArray.Create(Rule); } } + + public override void Initialize(AnalysisContext context) + { + context.RegisterSyntaxTreeAction(syntaxTreeContext => + { + var root = syntaxTreeContext.Tree.GetRoot(syntaxTreeContext.CancellationToken); + foreach (var method in root.DescendantNodes().OfType()) + { + if (method != null) + { + bool msbuildLocatorRegister = false; + Location locOfMSBuildUse = Location.None; + string[] msbuildStatementNames = { "MSBuildLocator.RegisterMSBuildPath", "MSBuildLocator.RegisterInstance", "MSBuildLocator.RegisterDefaults" }; + foreach (var statement in method.Body.Statements) + { + if (statement != null) + { + foreach (string s in msbuildStatementNames) + { + if (statement.ToString().Contains(s)) + { + msbuildLocatorRegister = true; + } + } + if (statement.ToString().Contains("hi") && locOfMSBuildUse == Location.None) + { + locOfMSBuildUse = statement.GetFirstToken().GetLocation(); + } + } + } + if (msbuildLocatorRegister && locOfMSBuildUse != Location.None) + { + syntaxTreeContext.ReportDiagnostic(Diagnostic.Create(Rule, locOfMSBuildUse)); + } + } + } + }); + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.Designer.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.Designer.cs new file mode 100644 index 00000000..beec391d --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.Designer.cs @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace MSBuildLocatorAnalyzer { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MSBuildLocatorAnalyzer.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to RegisterInstance should not be called in the same method as MSBuild types are used.. + /// + internal static string AnalyzerDescription { + get { + return ResourceManager.GetString("AnalyzerDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Type name '{0}' contains lowercase letters. + /// + internal static string AnalyzerMessageFormat { + get { + return ResourceManager.GetString("AnalyzerMessageFormat", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Type name contains lowercase letters. + /// + internal static string AnalyzerTitle { + get { + return ResourceManager.GetString("AnalyzerTitle", resourceCulture); + } + } + } +} diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.resx b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.resx new file mode 100644 index 00000000..67e3851e --- /dev/null +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + RegisterInstance should not be called in the same method as MSBuild types are used. + An optional longer localizable description of the diagnostic. + + + Type name '{0}' contains lowercase letters + The format-able message the diagnostic displays. + + + Type name contains lowercase letters + The title of the diagnostic. + + \ No newline at end of file diff --git a/MSBuildLocatorAnalyzer/NuGet.config b/MSBuildLocatorAnalyzer/NuGet.config new file mode 100644 index 00000000..cba8a3e3 --- /dev/null +++ b/MSBuildLocatorAnalyzer/NuGet.config @@ -0,0 +1,11 @@ + + + + + + + + + + + From d324066e9e4faefd151a35796ee1970a972cd2fe Mon Sep 17 00:00:00 2001 From: Nathan Mytelka Date: Tue, 22 Dec 2020 11:14:01 -0800 Subject: [PATCH 2/6] Fix method signature and semicolon --- .../CodeFixResources.Designer.cs | 57 ++++++++----------- .../MSBuildLocatorAnalyzerCodeFixProvider.cs | 25 ++++---- 2 files changed, 34 insertions(+), 48 deletions(-) diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs index c4067d27..749477d4 100644 --- a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs @@ -1,18 +1,17 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.0 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ -using System; -using System.Reflection; - -namespace MSBuildLocatorAnalyzer -{ +namespace MSBuildLocatorAnalyzer { + using System; + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -20,62 +19,52 @@ namespace MSBuildLocatorAnalyzer // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class CodeFixResources - { - + internal class CodeFixResources { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal CodeFixResources() - { + internal CodeFixResources() { } - + /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if (object.ReferenceEquals(resourceMan, null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MSBuildLocatorAnalyzer.CodeFixResources", typeof(CodeFixResources).GetTypeInfo().Assembly); + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MSBuildLocatorAnalyzer.CodeFixResources", typeof(CodeFixResources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { + internal static global::System.Globalization.CultureInfo Culture { + get { return resourceCulture; } - set - { + set { resourceCulture = value; } } - + /// /// Looks up a localized string similar to Make uppercase. /// - internal static string CodeFixTitle - { - get - { + internal static string CodeFixTitle { + get { return ResourceManager.GetString("CodeFixTitle", resourceCulture); } } diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs index d48013cb..c2c97b4e 100644 --- a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs @@ -57,25 +57,22 @@ Task AddBracesAsync(Document document, Diagnostic diagnostic, SyntaxNo StatementSyntax statement = root.FindNode(diagnostic.Location.SourceSpan).FirstAncestorOrSelf(); SyntaxNode method; for (method = root.FindNode(diagnostic.Location.SourceSpan); !(method is MethodDeclarationSyntax); method = method.Parent); - MethodDeclarationSyntax toInsert = SyntaxFactory.MethodDeclaration(attributeLists: SyntaxFactory.List(), - modifiers: SyntaxFactory.TokenList(SyntaxFactory.Identifier("private")), - returnType: SyntaxFactory.ParseTypeName("void"), - explicitInterfaceSpecifier: null, - identifier: SyntaxFactory.Identifier("UseMSBuild"), - typeParameterList: null, - parameterList: SyntaxFactory.ParameterList(), - constraintClauses: SyntaxFactory.List(), - body: SyntaxFactory.Block(statement), - semicolonToken: SyntaxFactory.Token(SyntaxKind.SemicolonToken)) - // Annotate that this node should be formatted - .WithAdditionalAnnotations(Formatter.Annotation); + SyntaxTokenList modifiers = (method as MethodDeclarationSyntax).Modifiers.Any(mod => mod.ValueText.Equals("static")) ? + SyntaxFactory.TokenList(SyntaxFactory.Identifier("private"), SyntaxFactory.Identifier("static")) : + SyntaxFactory.TokenList(SyntaxFactory.Identifier("private")); + MethodDeclarationSyntax toInsert = SyntaxFactory.MethodDeclaration(SyntaxFactory.ParseTypeName("void"), "UseMSBuild") + .WithModifiers(modifiers) + .WithBody(SyntaxFactory.Block(statement)) + .WithAdditionalAnnotations(Formatter.Annotation); var newRoot = root.InsertNodesAfter(method, new List() { toInsert }); + + statement = newRoot.FindNode(diagnostic.Location.SourceSpan).FirstAncestorOrSelf(); ExpressionStatementSyntax expression = SyntaxFactory.ExpressionStatement(SyntaxFactory.InvocationExpression(SyntaxFactory.IdentifierName(toInsert.Identifier.ValueText)) .WithArgumentList(SyntaxFactory.ArgumentList() .WithOpenParenToken(SyntaxFactory.Token(SyntaxKind.OpenParenToken)) .WithCloseParenToken(SyntaxFactory.Token(SyntaxKind.CloseParenToken)))); - var thirdRoot = newRoot.ReplaceNode(statement, expression); - return Task.FromResult(document.WithSyntaxRoot(thirdRoot)); + newRoot = newRoot.ReplaceNode(statement, expression); + return Task.FromResult(document.WithSyntaxRoot(newRoot)); } } } From 888da542cef52b76eeadaade20c626040f7e9164 Mon Sep 17 00:00:00 2001 From: Nathan Mytelka Date: Wed, 23 Dec 2020 16:24:10 -0800 Subject: [PATCH 3/6] Find assembly of relevance --- .../MSBuildLocatorAnalyzerCodeFixProvider.cs | 22 +------ .../MSBuildLocatorAnalyzerAnalyzer.cs | 60 +++++++++++-------- .../Resources.Designer.cs | 6 +- .../MSBuildLocatorAnalyzer/Resources.resx | 6 +- samples/BuilderApp/Program.cs | 14 ++++- 5 files changed, 55 insertions(+), 53 deletions(-) diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs index c2c97b4e..60ba7cfc 100644 --- a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs @@ -4,14 +4,10 @@ using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Formatting; -using Microsoft.CodeAnalysis.Rename; -using Microsoft.CodeAnalysis.Text; -using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Composition; using System.Linq; -using System.Threading; using System.Threading.Tasks; namespace MSBuildLocatorAnalyzer @@ -19,40 +15,28 @@ namespace MSBuildLocatorAnalyzer [ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(MSBuildLocatorAnalyzerCodeFixProvider)), Shared] public class MSBuildLocatorAnalyzerCodeFixProvider : CodeFixProvider { - private const string title = "Move to separate method"; + private const string title = "Move MSBuild use to separate method"; public sealed override ImmutableArray FixableDiagnosticIds { get { return ImmutableArray.Create(MSBuildLocatorAnalyzerAnalyzer.DiagnosticId); } } - public sealed override FixAllProvider GetFixAllProvider() - { - // See https://github.com/dotnet/roslyn/blob/master/docs/analyzers/FixAllProvider.md for more information on Fix All Providers - return WellKnownFixAllProviders.BatchFixer; - } - public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false); - - // TODO: Replace the following code with your own analysis, generating a CodeAction for each fix to suggest var diagnostic = context.Diagnostics.First(); - var diagnosticSpan = diagnostic.Location.SourceSpan; - - // Find the type declaration identified by the diagnostic. - var declaration = root.FindToken(diagnosticSpan.Start).Parent.AncestorsAndSelf().OfType().First(); // Register a code action that will invoke the fix. context.RegisterCodeFix( CodeAction.Create( title: title, - createChangedDocument: c => AddBracesAsync(context.Document, diagnostic, root), + createChangedDocument: c => MoveMSBuildUseToSeparateMethod(context.Document, diagnostic, root), equivalenceKey: title), diagnostic); } - Task AddBracesAsync(Document document, Diagnostic diagnostic, SyntaxNode root) + Task MoveMSBuildUseToSeparateMethod(Document document, Diagnostic diagnostic, SyntaxNode root) { StatementSyntax statement = root.FindNode(diagnostic.Location.SourceSpan).FirstAncestorOrSelf(); SyntaxNode method; diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs index 727dc678..539b2bb8 100644 --- a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs @@ -1,12 +1,12 @@ using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Diagnostics; +using Microsoft.CodeAnalysis.Operations; using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; -using System.Threading; namespace MSBuildLocatorAnalyzer { @@ -22,46 +22,54 @@ public class MSBuildLocatorAnalyzerAnalyzer : DiagnosticAnalyzer private static readonly LocalizableString Description = new LocalizableResourceString(nameof(Resources.AnalyzerDescription), Resources.ResourceManager, typeof(Resources)); private const string Category = "Naming"; - private static readonly DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: Description); + private readonly string[] msBuildAssemblies = + { + "Microsoft.Build", + "Microsoft.Build.Engine", + "Microsoft.Build.Framework", + "Microsoft.Build.Tasks.Core", + "Microsoft.Build.Utilities.Core" + }; + + private readonly string[] msbuildLocatorRegisterMethods = + { + "RegisterDefaults", + "RegisterInstance", + "RegisterMSBuildPath" + }; + + private static readonly DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Error, isEnabledByDefault: true, description: Description); public override ImmutableArray SupportedDiagnostics { get { return ImmutableArray.Create(Rule); } } public override void Initialize(AnalysisContext context) { - context.RegisterSyntaxTreeAction(syntaxTreeContext => + context.RegisterOperationAction(opact => { - var root = syntaxTreeContext.Tree.GetRoot(syntaxTreeContext.CancellationToken); - foreach (var method in root.DescendantNodes().OfType()) + var invocation = (IInvocationOperation)opact.Operation; + var targetMethod = invocation.TargetMethod; + if (targetMethod?.ContainingAssembly != null) { - if (method != null) + if (targetMethod.ContainingAssembly.Name.Equals("Microsoft.Build.Locator") && msbuildLocatorRegisterMethods.Contains(targetMethod.Name)) { - bool msbuildLocatorRegister = false; - Location locOfMSBuildUse = Location.None; - string[] msbuildStatementNames = { "MSBuildLocator.RegisterMSBuildPath", "MSBuildLocator.RegisterInstance", "MSBuildLocator.RegisterDefaults" }; - foreach (var statement in method.Body.Statements) + MethodDeclarationSyntax method = (MethodDeclarationSyntax)invocation.Syntax.FirstAncestorOrSelf((Func)(a => a is MethodDeclarationSyntax)); + if (method != null) { - if (statement != null) + IOperation symbolParent; + for (symbolParent = invocation; symbolParent.Parent != null && symbolParent.Kind != OperationKind.MethodBody; symbolParent = symbolParent.Parent); + foreach (var child in symbolParent.Descendants()) { - foreach (string s in msbuildStatementNames) + if ((child is IInvocationOperation op && msBuildAssemblies.Contains(op.TargetMethod?.ContainingAssembly?.Name)) || + (child is ITypeOfOperation toOp && msBuildAssemblies.Contains(toOp.TypeOperand.ContainingAssembly?.Name)) || + (msBuildAssemblies.Contains(child.Type?.ContainingAssembly?.Name))) { - if (statement.ToString().Contains(s)) - { - msbuildLocatorRegister = true; - } - } - if (statement.ToString().Contains("hi") && locOfMSBuildUse == Location.None) - { - locOfMSBuildUse = statement.GetFirstToken().GetLocation(); + opact.ReportDiagnostic(Diagnostic.Create(Rule, child.Syntax.GetLocation())); } } } - if (msbuildLocatorRegister && locOfMSBuildUse != Location.None) - { - syntaxTreeContext.ReportDiagnostic(Diagnostic.Create(Rule, locOfMSBuildUse)); - } } } - }); + }, OperationKind.Invocation); } } } diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.Designer.cs b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.Designer.cs index beec391d..2443d5ad 100644 --- a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.Designer.cs +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.Designer.cs @@ -61,7 +61,7 @@ internal Resources() { } /// - /// Looks up a localized string similar to RegisterInstance should not be called in the same method as MSBuild types are used.. + /// Looks up a localized string similar to References to MSBuild types and methods should be in a separate method from the call to MSBuildLocator.RegisterMSBuildPath, MSBuildLocator.RegisterInstance, or MSBuildLocator.RegisterDefaults.. /// internal static string AnalyzerDescription { get { @@ -70,7 +70,7 @@ internal static string AnalyzerDescription { } /// - /// Looks up a localized string similar to Type name '{0}' contains lowercase letters. + /// Looks up a localized string similar to Use of MSBuild type or method is in the same method as call to register MSBuild.. /// internal static string AnalyzerMessageFormat { get { @@ -79,7 +79,7 @@ internal static string AnalyzerMessageFormat { } /// - /// Looks up a localized string similar to Type name contains lowercase letters. + /// Looks up a localized string similar to MSBuild type or method used before being registered.. /// internal static string AnalyzerTitle { get { diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.resx b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.resx index 67e3851e..6714893e 100644 --- a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.resx +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.resx @@ -118,15 +118,15 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - RegisterInstance should not be called in the same method as MSBuild types are used. + References to MSBuild types and methods should be in a separate method from the call to MSBuildLocator.RegisterMSBuildPath, MSBuildLocator.RegisterInstance, or MSBuildLocator.RegisterDefaults. An optional longer localizable description of the diagnostic. - Type name '{0}' contains lowercase letters + Use of MSBuild type or method is in the same method as call to register MSBuild. The format-able message the diagnostic displays. - Type name contains lowercase letters + MSBuild type or method used before being registered. The title of the diagnostic. \ No newline at end of file diff --git a/samples/BuilderApp/Program.cs b/samples/BuilderApp/Program.cs index 0ec2f0bc..8caac6f0 100644 --- a/samples/BuilderApp/Program.cs +++ b/samples/BuilderApp/Program.cs @@ -42,8 +42,18 @@ private static void Main(string[] args) MSBuildLocator.RegisterMSBuildPath(msbuildDeploymentToUse.MSBuildPath); } + var assembly = typeof(Project).Assembly; + FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); + + Console.WriteLine(); + Console.WriteLine($"BuildApp running using MSBuild version {fvi.FileVersion}"); + Console.WriteLine(Path.GetDirectoryName(assembly.Location)); + Console.WriteLine(); - var result = new Builder().Build(projectFilePath); + var pre = ProjectRootElement.Open(projectFilePath); + var project = new Project(pre); + var result = project.Build(new Builder.Logger()); + //var result = new Builder().Build(projectFilePath); Console.WriteLine(); Console.ForegroundColor = result ? ConsoleColor.Green : ConsoleColor.Red; @@ -154,7 +164,7 @@ public bool Build(string projectFile) return project.Build(new Logger()); } - private class Logger : ILogger + public class Logger : ILogger { public void Initialize(IEventSource eventSource) { From 5a4803c4b905e36f91adb8a08f23333f5d4e66f6 Mon Sep 17 00:00:00 2001 From: Nathan Mytelka Date: Wed, 23 Dec 2020 16:46:41 -0800 Subject: [PATCH 4/6] Drop into vsix? --- .../MSBuildLocatorAnalyzer.CodeFixes.csproj | 17 ++++++++++++++++- .../MSBuildLocatorAnalyzer.csproj | 14 ++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj index d2e900fa..b498144b 100644 --- a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj @@ -2,8 +2,23 @@ netstandard2.0 - false + true MSBuildLocatorAnalyzer + false + True + + + + Microsoft.Build.Locator.Analyzer + 1.0.0 + Microsoft + https://github.com/microsoft/MSBuildLocator + false + A code fix for the MSBuildLocator analyzer. + Code fix for the analyzer. + Copyright + MSBuild, MSBuildLocator, Microsoft Build, code fix, analyzers + true diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj index b50f469c..32931352 100644 --- a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj +++ b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj @@ -2,10 +2,20 @@ netstandard2.0 - false + true + false + True - *$(MSBuildProjectFullPath)* + Microsoft.Build.Locator.Analyzer + 1.0.0 + Microsoft + https://github.com/microsoft/MSBuildLocator + false + Analyzers for MSBuildLocator + An analyzer that identifies the common problem in MSBuildLocator of registering MSBuild in the same method that uses it. + Copyright + MSBuildLocator, Build, MSBuild, Analyzers From c94e81cef26d8d6f20ab7d8ff9dafd88c6f5b601 Mon Sep 17 00:00:00 2001 From: Nathan Mytelka Date: Mon, 28 Dec 2020 09:06:04 -0800 Subject: [PATCH 5/6] Move around within package --- MSBuildLocator.sln | 30 ++++++++++++ .../MSBuildLocatorAnalyzer.sln | 49 ------------------- .../CodeFixResources.Designer.cs | 0 .../CodeFixResources.resx | 0 .../MSBuildLocatorAnalyzer.CodeFixes.csproj | 0 .../MSBuildLocatorAnalyzerCodeFixProvider.cs | 0 .../MSBuildLocatorAnalyzer.Package.csproj | 0 .../tools/install.ps1 | 0 .../tools/uninstall.ps1 | 0 .../MSBuildLocatorAnalyzer.Test.csproj | 0 .../MSBuildLocatorAnalyzerUnitTests.cs | 0 .../CSharpAnalyzerVerifier`1+Test.cs | 0 .../Verifiers/CSharpAnalyzerVerifier`1.cs | 0 .../Verifiers/CSharpCodeFixVerifier`2+Test.cs | 0 .../Verifiers/CSharpCodeFixVerifier`2.cs | 0 .../CSharpCodeRefactoringVerifier`1+Test.cs | 0 .../CSharpCodeRefactoringVerifier`1.cs | 0 .../Verifiers/CSharpVerifierHelper.cs | 0 .../VisualBasicAnalyzerVerifier`1+Test.cs | 0 .../VisualBasicAnalyzerVerifier`1.cs | 0 .../VisualBasicCodeFixVerifier`2+Test.cs | 0 .../Verifiers/VisualBasicCodeFixVerifier`2.cs | 0 ...sualBasicCodeRefactoringVerifier`1+Test.cs | 0 .../VisualBasicCodeRefactoringVerifier`1.cs | 0 .../MSBuildLocatorAnalyzer.Vsix.csproj | 0 .../source.extension.vsixmanifest | 4 +- .../MSBuildLocatorAnalyzer.csproj | 0 .../MSBuildLocatorAnalyzerAnalyzer.cs | 0 .../MSBuildLocatorAnalyzer}/NuGet.config | 0 .../Resources.Designer.cs | 0 .../MSBuildLocatorAnalyzer/Resources.resx | 0 31 files changed, 32 insertions(+), 51 deletions(-) delete mode 100644 MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.sln rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.resx (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Package/tools/install.ps1 (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest (88%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs (100%) rename {MSBuildLocatorAnalyzer => src/MSBuildLocatorAnalyzer}/NuGet.config (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer/Resources.Designer.cs (100%) rename {MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer => src}/MSBuildLocatorAnalyzer/Resources.resx (100%) diff --git a/MSBuildLocator.sln b/MSBuildLocator.sln index 4540e62d..c0675511 100644 --- a/MSBuildLocator.sln +++ b/MSBuildLocator.sln @@ -9,6 +9,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Build.Locator.Tes EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuilderApp", "samples\BuilderApp\BuilderApp.csproj", "{70F35A21-43E2-47CB-8B96-B160C6758EAA}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer", "src\MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.csproj", "{BFF38CC3-651E-4BCF-BD06-792DE348EA2C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.CodeFixes", "src\MSBuildLocatorAnalyzer.CodeFixes\MSBuildLocatorAnalyzer.CodeFixes.csproj", "{78A91E45-74F2-438A-8B4B-8DEDE153E1E5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Package", "src\MSBuildLocatorAnalyzer.Package\MSBuildLocatorAnalyzer.Package.csproj", "{9F8529A4-8BE8-40C7-B359-3F46AB49F642}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Test", "src\MSBuildLocatorAnalyzer.Test\MSBuildLocatorAnalyzer.Test.csproj", "{9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Vsix", "src\MSBuildLocatorAnalyzer.Vsix\MSBuildLocatorAnalyzer.Vsix.csproj", "{47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{872EA464-8296-4ECA-932F-FC33841252EF}" ProjectSection(SolutionItems) = preProject Directory.Build.props = Directory.Build.props @@ -33,6 +43,26 @@ Global {70F35A21-43E2-47CB-8B96-B160C6758EAA}.Debug|Any CPU.Build.0 = Debug|Any CPU {70F35A21-43E2-47CB-8B96-B160C6758EAA}.Release|Any CPU.ActiveCfg = Release|Any CPU {70F35A21-43E2-47CB-8B96-B160C6758EAA}.Release|Any CPU.Build.0 = Release|Any CPU + {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Release|Any CPU.Build.0 = Release|Any CPU + {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Release|Any CPU.Build.0 = Release|Any CPU + {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Release|Any CPU.Build.0 = Release|Any CPU + {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Release|Any CPU.Build.0 = Release|Any CPU + {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.sln b/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.sln deleted file mode 100644 index 94cfa968..00000000 --- a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.sln +++ /dev/null @@ -1,49 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30807.9 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer", "MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.csproj", "{BFF38CC3-651E-4BCF-BD06-792DE348EA2C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.CodeFixes", "MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.CodeFixes\MSBuildLocatorAnalyzer.CodeFixes.csproj", "{78A91E45-74F2-438A-8B4B-8DEDE153E1E5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Package", "MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.Package\MSBuildLocatorAnalyzer.Package.csproj", "{9F8529A4-8BE8-40C7-B359-3F46AB49F642}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Test", "MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.Test\MSBuildLocatorAnalyzer.Test.csproj", "{9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Vsix", "MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.Vsix\MSBuildLocatorAnalyzer.Vsix.csproj", "{47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BFF38CC3-651E-4BCF-BD06-792DE348EA2C}.Release|Any CPU.Build.0 = Release|Any CPU - {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Release|Any CPU.Build.0 = Release|Any CPU - {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Release|Any CPU.Build.0 = Release|Any CPU - {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Release|Any CPU.Build.0 = Release|Any CPU - {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {13DE32B1-9D03-42E4-B12E-EC0161A5E981} - EndGlobalSection -EndGlobal diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs b/src/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs rename to src/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.Designer.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.resx b/src/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.resx similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.resx rename to src/MSBuildLocatorAnalyzer.CodeFixes/CodeFixResources.resx diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj b/src/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj rename to src/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs b/src/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs rename to src/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzerCodeFixProvider.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj b/src/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj rename to src/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/install.ps1 b/src/MSBuildLocatorAnalyzer.Package/tools/install.ps1 similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/install.ps1 rename to src/MSBuildLocatorAnalyzer.Package/tools/install.ps1 diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 b/src/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 rename to src/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj b/src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj rename to src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs b/src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs rename to src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs rename to src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj b/src/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj rename to src/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest b/src/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest similarity index 88% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest rename to src/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest index d34857b0..81dc09d3 100644 --- a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest +++ b/src/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest @@ -1,9 +1,9 @@ - + MSBuildLocatorAnalyzer - This is a sample diagnostic extension for the .NET Compiler Platform ("Roslyn"). + This analyzes and prevents a common problem in starting with MSBuildLocator. diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj b/src/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj rename to src/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs b/src/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs rename to src/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzerAnalyzer.cs diff --git a/MSBuildLocatorAnalyzer/NuGet.config b/src/MSBuildLocatorAnalyzer/NuGet.config similarity index 100% rename from MSBuildLocatorAnalyzer/NuGet.config rename to src/MSBuildLocatorAnalyzer/NuGet.config diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.Designer.cs b/src/MSBuildLocatorAnalyzer/Resources.Designer.cs similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.Designer.cs rename to src/MSBuildLocatorAnalyzer/Resources.Designer.cs diff --git a/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.resx b/src/MSBuildLocatorAnalyzer/Resources.resx similarity index 100% rename from MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer/Resources.resx rename to src/MSBuildLocatorAnalyzer/Resources.resx From d55f0fbd101cbf87f4e30023fdbbb354f47ad91d Mon Sep 17 00:00:00 2001 From: Nathan Mytelka Date: Mon, 28 Dec 2020 09:41:58 -0800 Subject: [PATCH 6/6] Deleted extra things? --- MSBuildLocator.sln | 26 +- .../MSBuildLocatorAnalyzer.CodeFixes.csproj | 4 +- .../MSBuildLocatorAnalyzer.Package.csproj | 44 --- .../tools/install.ps1 | 250 ----------------- .../tools/uninstall.ps1 | 257 ------------------ .../MSBuildLocatorAnalyzer.Test.csproj | 28 -- .../MSBuildLocatorAnalyzerUnitTests.cs | 59 ---- .../CSharpAnalyzerVerifier`1+Test.cs | 26 -- .../Verifiers/CSharpAnalyzerVerifier`1.cs | 38 --- .../Verifiers/CSharpCodeFixVerifier`2+Test.cs | 28 -- .../Verifiers/CSharpCodeFixVerifier`2.cs | 61 ----- .../CSharpCodeRefactoringVerifier`1+Test.cs | 26 -- .../CSharpCodeRefactoringVerifier`1.cs | 36 --- .../Verifiers/CSharpVerifierHelper.cs | 33 --- .../VisualBasicAnalyzerVerifier`1+Test.cs | 17 -- .../VisualBasicAnalyzerVerifier`1.cs | 38 --- .../VisualBasicCodeFixVerifier`2+Test.cs | 16 -- .../Verifiers/VisualBasicCodeFixVerifier`2.cs | 61 ----- ...sualBasicCodeRefactoringVerifier`1+Test.cs | 14 - .../VisualBasicCodeRefactoringVerifier`1.cs | 36 --- .../MSBuildLocatorAnalyzer.Vsix.csproj | 48 ---- .../source.extension.vsixmanifest | 24 -- .../MSBuildLocatorAnalyzer.csproj | 2 +- 23 files changed, 7 insertions(+), 1165 deletions(-) delete mode 100644 src/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj delete mode 100644 src/MSBuildLocatorAnalyzer.Package/tools/install.ps1 delete mode 100644 src/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 delete mode 100644 src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj delete mode 100644 src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs delete mode 100644 src/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj delete mode 100644 src/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest diff --git a/MSBuildLocator.sln b/MSBuildLocator.sln index c0675511..e20b3d07 100644 --- a/MSBuildLocator.sln +++ b/MSBuildLocator.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.10 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30807.9 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Build.Locator", "src\MSBuildLocator\Microsoft.Build.Locator.csproj", "{2F4700C6-A6F6-49DF-ABF1-6213AAC4BCFD}" EndProject @@ -9,15 +9,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Build.Locator.Tes EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuilderApp", "samples\BuilderApp\BuilderApp.csproj", "{70F35A21-43E2-47CB-8B96-B160C6758EAA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer", "src\MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.csproj", "{BFF38CC3-651E-4BCF-BD06-792DE348EA2C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSBuildLocatorAnalyzer", "src\MSBuildLocatorAnalyzer\MSBuildLocatorAnalyzer.csproj", "{BFF38CC3-651E-4BCF-BD06-792DE348EA2C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.CodeFixes", "src\MSBuildLocatorAnalyzer.CodeFixes\MSBuildLocatorAnalyzer.CodeFixes.csproj", "{78A91E45-74F2-438A-8B4B-8DEDE153E1E5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Package", "src\MSBuildLocatorAnalyzer.Package\MSBuildLocatorAnalyzer.Package.csproj", "{9F8529A4-8BE8-40C7-B359-3F46AB49F642}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Test", "src\MSBuildLocatorAnalyzer.Test\MSBuildLocatorAnalyzer.Test.csproj", "{9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSBuildLocatorAnalyzer.Vsix", "src\MSBuildLocatorAnalyzer.Vsix\MSBuildLocatorAnalyzer.Vsix.csproj", "{47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSBuildLocatorAnalyzer.CodeFixes", "src\MSBuildLocatorAnalyzer.CodeFixes\MSBuildLocatorAnalyzer.CodeFixes.csproj", "{78A91E45-74F2-438A-8B4B-8DEDE153E1E5}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{872EA464-8296-4ECA-932F-FC33841252EF}" ProjectSection(SolutionItems) = preProject @@ -51,18 +45,6 @@ Global {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Debug|Any CPU.Build.0 = Debug|Any CPU {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Release|Any CPU.ActiveCfg = Release|Any CPU {78A91E45-74F2-438A-8B4B-8DEDE153E1E5}.Release|Any CPU.Build.0 = Release|Any CPU - {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9F8529A4-8BE8-40C7-B359-3F46AB49F642}.Release|Any CPU.Build.0 = Release|Any CPU - {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9FA228FF-0570-4B34-A7E9-D8A4D330B3F5}.Release|Any CPU.Build.0 = Release|Any CPU - {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {47BA0F02-B4EE-4A3D-9A5D-747FEEE9F38A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj b/src/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj index b498144b..559d53de 100644 --- a/src/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj +++ b/src/MSBuildLocatorAnalyzer.CodeFixes/MSBuildLocatorAnalyzer.CodeFixes.csproj @@ -1,7 +1,7 @@ - netstandard2.0 + net48;netcoreapp3.1 true MSBuildLocatorAnalyzer false @@ -9,7 +9,7 @@ - Microsoft.Build.Locator.Analyzer + Microsoft.Build.Locator.Analyzer.CodeFixes 1.0.0 Microsoft https://github.com/microsoft/MSBuildLocator diff --git a/src/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj b/src/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj deleted file mode 100644 index 8b371a24..00000000 --- a/src/MSBuildLocatorAnalyzer.Package/MSBuildLocatorAnalyzer.Package.csproj +++ /dev/null @@ -1,44 +0,0 @@ - - - - netstandard2.0 - false - true - true - - - - MSBuildLocatorAnalyzer - 1.0.0.0 - nmytelka - http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE - http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE - http://ICON_URL_HERE_OR_DELETE_THIS_LINE - http://REPOSITORY_URL_HERE_OR_DELETE_THIS_LINE - false - MSBuildLocatorAnalyzer - Summary of changes made in this release of the package. - Copyright - MSBuildLocatorAnalyzer, analyzers - true - - $(TargetsForTfmSpecificContentInPackage);_AddAnalyzersToOutput - - - - - - - - - - - - - - - - - - - diff --git a/src/MSBuildLocatorAnalyzer.Package/tools/install.ps1 b/src/MSBuildLocatorAnalyzer.Package/tools/install.ps1 deleted file mode 100644 index 46df0bea..00000000 --- a/src/MSBuildLocatorAnalyzer.Package/tools/install.ps1 +++ /dev/null @@ -1,250 +0,0 @@ -param($installPath, $toolsPath, $package, $project) - -if($project.Object.SupportsPackageDependencyResolution) -{ - if($project.Object.SupportsPackageDependencyResolution()) - { - # Do not install analyzers via install.ps1, instead let the project system handle it. - return - } -} - -$analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers") * -Resolve - -foreach($analyzersPath in $analyzersPaths) -{ - if (Test-Path $analyzersPath) - { - # Install the language agnostic analyzers. - foreach ($analyzerFilePath in Get-ChildItem -Path "$analyzersPath\*.dll" -Exclude *.resources.dll) - { - if($project.Object.AnalyzerReferences) - { - $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName) - } - } - } -} - -# $project.Type gives the language name like (C# or VB.NET) -$languageFolder = "" -if($project.Type -eq "C#") -{ - $languageFolder = "cs" -} -if($project.Type -eq "VB.NET") -{ - $languageFolder = "vb" -} -if($languageFolder -eq "") -{ - return -} - -foreach($analyzersPath in $analyzersPaths) -{ - # Install language specific analyzers. - $languageAnalyzersPath = join-path $analyzersPath $languageFolder - if (Test-Path $languageAnalyzersPath) - { - foreach ($analyzerFilePath in Get-ChildItem -Path "$languageAnalyzersPath\*.dll" -Exclude *.resources.dll) - { - if($project.Object.AnalyzerReferences) - { - $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName) - } - } - } -} -# SIG # Begin signature block -# MIIjkgYJKoZIhvcNAQcCoIIjgzCCI38CAQExDzANBglghkgBZQMEAgEFADB5Bgor -# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG -# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCA/i+qRUHsWzI0s -# FVk99zLgt/HOEQ33uvkFsWtHTHZgf6CCDYEwggX/MIID56ADAgECAhMzAAABh3IX -# chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD -# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy -# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p -# bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw -# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u -# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy -# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -# AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB -# znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH -# sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d -# weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ -# itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV -# Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE -# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw -# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1 -# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu -# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu -# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w -# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3 -# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx -# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy -# S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K -# NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV -# BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr -# qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx -# zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe -# yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g -# yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf -# AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI -# 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5 -# GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea -# jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS -# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK -# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 -# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0 -# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla -# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS -# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT -# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB -# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG -# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S -# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz -# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7 -# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u -# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33 -# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl -# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP -# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB -# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF -# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM -# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ -# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud -# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO -# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0 -# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y -# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p -# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y -# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB -# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw -# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA -# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY -# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj -# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd -# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ -# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf -# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ -# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j -# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B -# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96 -# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7 -# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I -# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVZzCCFWMCAQEwgZUwfjELMAkG -# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx -# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z -# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN -# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor -# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgRjg7DcI6 -# uhYfXWwAQ6hK0mPW7iyr2tzHR0DHSDJkscIwQgYKKwYBBAGCNwIBDDE0MDKgFIAS -# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN -# BgkqhkiG9w0BAQEFAASCAQCMjRK3YvDB0Sy30hadcXmGkSLrq7U7R+bkBh+FsWz8 -# CLSdV9Sh1z6mmVlEk6jHf7h3fiMEZwXGSvBEH4dc+equuU9KhYkhfTTfd3SSCER6 -# swWv/vqzQgz7WZOzuDuOrMc4lqCc3qUeLCeFnZEjfDKgymUi7UaTDofM0HNZtYA1 -# f2kLORo2CzvvZLHK+xQYvefFFrCsHSiNFvH5zM9142c1aMpGVgyuB6cBxL3johS/ -# 7i4myLHr9LB7GcSmEYqDH5q4mxgNNtunYqEyK0V0b/UI0b9q1p50KJPag9zh/HB0 -# Q+fY1t8guPwGoxkO+hqDV6k1R3tJBHG5c8kDSCVR/CbVoYIS8TCCEu0GCisGAQQB -# gjcDAwExghLdMIIS2QYJKoZIhvcNAQcCoIISyjCCEsYCAQMxDzANBglghkgBZQME -# AgEFADCCAVUGCyqGSIb3DQEJEAEEoIIBRASCAUAwggE8AgEBBgorBgEEAYRZCgMB -# MDEwDQYJYIZIAWUDBAIBBQAEIHQWatv8aXHB68pc0SETnr9LF64Haou9lbLES5Og -# 6ES0AgZfu81ohkkYEzIwMjAxMjAzMTM0MjE0Ljc2MlowBIACAfSggdSkgdEwgc4x -# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt -# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1p -# Y3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMg -# VFNTIEVTTjowQTU2LUUzMjktNEQ0RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUt -# U3RhbXAgU2VydmljZaCCDkQwggT1MIID3aADAgECAhMzAAABJy9uo++RqBmoAAAA -# AAEnMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo -# aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y -# cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw -# MB4XDTE5MTIxOTAxMTQ1OVoXDTIxMDMxNzAxMTQ1OVowgc4xCzAJBgNVBAYTAlVT -# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK -# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVy -# YXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjowQTU2 -# LUUzMjktNEQ0RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj -# ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPgB3nERnk6fS40vvWeD -# 3HCgM9Ep4xTIQiPnJXE9E+HkZVtTsPemoOyhfNAyF95E/rUvXOVTUcJFL7Xb16jT -# KPXONsCWY8DCixSDIiid6xa30TiEWVcIZRwiDlcx29D467OTav5rA1G6TwAEY5rQ -# jhUHLrOoJgfJfakZq6IHjd+slI0/qlys7QIGakFk2OB6mh/ln/nS8G4kNRK6Do4g -# xDtnBSFLNfhsSZlRSMDJwFvrZ2FCkaoexd7rKlUNOAAScY411IEqQeI1PwfRm3aW -# bS8IvAfJPC2Ah2LrtP8sKn5faaU8epexje7vZfcZif/cbxgUKStJzqbdvTBNc93n -# /Z8CAwEAAaOCARswggEXMB0GA1UdDgQWBBTl9JZVgF85MSRbYlOJXbhY022V8jAf -# BgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBH -# hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNU -# aW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF -# BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0 -# YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsG -# AQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQAKyo180VXHBqVnjZwQy7NlzXbo2+W5 -# qfHxR7ANV5RBkRkdGamkwUcDNL+DpHObFPJHa0oTeYKE0Zbl1MvvfS8RtGGdhGYG -# CJf+BPd/gBCs4+dkZdjvOzNyuVuDPGlqQ5f7HS7iuQ/cCyGHcHYJ0nXVewF2Lk+J -# lrWykHpTlLwPXmCpNR+gieItPi/UMF2RYTGwojW+yIVwNyMYnjFGUxEX5/DtJjRZ -# mg7PBHMrENN2DgO6wBelp4ptyH2KK2EsWT+8jFCuoKv+eJby0QD55LN5f8SrUPRn -# K86fh7aVOfCglQofo5ABZIGiDIrg4JsV4k6p0oBSIFOAcqRAhiH+1spCMIIGcTCC -# BFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC -# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV -# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJv -# b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcN -# MjUwNzAxMjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv -# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 -# aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCASIw -# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0 -# VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEwWbEw -# RA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQe -# dGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKx -# Xf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw2k4G -# kbaICDXoeByw6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEA -# AaOCAeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7 -# fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC -# AYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX -# zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20v -# cGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYI -# KwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5j -# b20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0g -# AQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93 -# d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYB -# BQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0AGUA -# bQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOh -# IW+z66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtRgkQS -# +7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlK -# kVIArzgPF/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon -# /VWvL/625Y4zu2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3DnKOi -# PPp/fZZqkHimbdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/ -# fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110mCII -# YdqwUB5vvfHhAN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0 -# cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffIrE7a -# KLixqduWsqdCosnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQ -# cdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+ -# NR4Iuto229Nfj950iEkSoYIC0jCCAjsCAQEwgfyhgdSkgdEwgc4xCzAJBgNVBAYT -# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD -# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBP -# cGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjow -# QTU2LUUzMjktNEQ0RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy -# dmljZaIjCgEBMAcGBSsOAwIaAxUAs5W4TmyDHMRM7iz6mgGojqvXHzOggYMwgYCk -# fjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH -# UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD -# Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIF -# AONy0cMwIhgPMjAyMDEyMDMwNjUzNTVaGA8yMDIwMTIwNDA2NTM1NVowdzA9Bgor -# BgEEAYRZCgQBMS8wLTAKAgUA43LRwwIBADAKAgEAAgIfDgIB/zAHAgEAAgIR5jAK -# AgUA43QjQwIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIB -# AAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAGxya6RvpAkKeXHC -# GyLVn0l1IXJgo881ZHrospc5cKqZLyX5TBAZpv/NDei2cKDLeXuat0gSEs7mrn5U -# 8vV3LxU+7HgSBOotXtr2NEW9M7I5R8XDkQRM6Pc1K/LmIbGuPkLue6xS6z9uUpK5 -# DadsOpcPsWBeU6g5ThWyojwU8kAlMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMC -# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV -# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp -# bWUtU3RhbXAgUENBIDIwMTACEzMAAAEnL26j75GoGagAAAAAAScwDQYJYIZIAWUD -# BAIBBQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0B -# CQQxIgQg34jbdm7WDG53Ccs/FrVH3+JIC+Hdx3omxwLN3u1jOqIwgfoGCyqGSIb3 -# DQEJEAIvMYHqMIHnMIHkMIG9BCAbkuhLEoYdahb/BUyVszO2VDi6kB3MSaof/+8u -# 7SM+IjCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u -# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp -# b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAB -# Jy9uo++RqBmoAAAAAAEnMCIEILgon52MKbAD8g3G36p3uDsvSqDzncE8iP3YoYsg -# BuSeMA0GCSqGSIb3DQEBCwUABIIBAMzLCu3TjnmzrQ+yK0iBl9Xyr63vjvXR8R7p -# NS/2I2m/jGzdcdGOPScJC3DPb4kQlwKt0BIPQX8XQZ4TBevzH5TQE6CE47YWLWkz -# 6s7Ya5+qLvr14hY0PApCJJ9Th+JFEq7rFJqpowTEhbqWe+4v4+yCzoNiBT4tSSzu -# weKbfPOZF0E2Ml1ceUFG5GcL7sXvRHU/+sZSs3AkwZoxBYUUTJipGo9YniCG9Jm7 -# N8bPyClB/YEOPtnOEOk65pJ6yNPVqr9pF9ntxQ7bjTUrgyt6zFFoid1xq5RoUW4L -# vWRxZDk+X+kjSmV7lRq1aTHRSlJbdEYucUoRyNbdJ5zuHoeve90= -# SIG # End signature block diff --git a/src/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 b/src/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 deleted file mode 100644 index 3adc538e..00000000 --- a/src/MSBuildLocatorAnalyzer.Package/tools/uninstall.ps1 +++ /dev/null @@ -1,257 +0,0 @@ -param($installPath, $toolsPath, $package, $project) - -if($project.Object.SupportsPackageDependencyResolution) -{ - if($project.Object.SupportsPackageDependencyResolution()) - { - # Do not uninstall analyzers via uninstall.ps1, instead let the project system handle it. - return - } -} - -$analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers") * -Resolve - -foreach($analyzersPath in $analyzersPaths) -{ - # Uninstall the language agnostic analyzers. - if (Test-Path $analyzersPath) - { - foreach ($analyzerFilePath in Get-ChildItem -Path "$analyzersPath\*.dll" -Exclude *.resources.dll) - { - if($project.Object.AnalyzerReferences) - { - $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName) - } - } - } -} - -# $project.Type gives the language name like (C# or VB.NET) -$languageFolder = "" -if($project.Type -eq "C#") -{ - $languageFolder = "cs" -} -if($project.Type -eq "VB.NET") -{ - $languageFolder = "vb" -} -if($languageFolder -eq "") -{ - return -} - -foreach($analyzersPath in $analyzersPaths) -{ - # Uninstall language specific analyzers. - $languageAnalyzersPath = join-path $analyzersPath $languageFolder - if (Test-Path $languageAnalyzersPath) - { - foreach ($analyzerFilePath in Get-ChildItem -Path "$languageAnalyzersPath\*.dll" -Exclude *.resources.dll) - { - if($project.Object.AnalyzerReferences) - { - try - { - $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName) - } - catch - { - - } - } - } - } -} -# SIG # Begin signature block -# MIIjkgYJKoZIhvcNAQcCoIIjgzCCI38CAQExDzANBglghkgBZQMEAgEFADB5Bgor -# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG -# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDC68wb97fg0QGL -# yXrxJhYfmibzcOh8caqC0uZprfczDaCCDYEwggX/MIID56ADAgECAhMzAAABh3IX -# chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD -# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy -# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p -# bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw -# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u -# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy -# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -# AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB -# znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH -# sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d -# weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ -# itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV -# Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE -# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw -# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1 -# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu -# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu -# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w -# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3 -# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx -# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy -# S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K -# NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV -# BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr -# qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx -# zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe -# yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g -# yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf -# AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI -# 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5 -# GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea -# jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS -# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK -# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 -# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0 -# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla -# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS -# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT -# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB -# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG -# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S -# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz -# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7 -# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u -# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33 -# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl -# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP -# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB -# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF -# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM -# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ -# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud -# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO -# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0 -# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y -# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p -# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y -# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB -# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw -# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA -# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY -# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj -# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd -# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ -# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf -# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ -# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j -# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B -# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96 -# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7 -# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I -# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVZzCCFWMCAQEwgZUwfjELMAkG -# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx -# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z -# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN -# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor -# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgF1ypFyzl -# AvvWGVCeXczrfpXmJNm9vpyjcwd4y4ivfqowQgYKKwYBBAGCNwIBDDE0MDKgFIAS -# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN -# BgkqhkiG9w0BAQEFAASCAQAlvp3kobQ3njGrv7T9mKm8viQ7IsK06yFq43ZwDIob -# rkxRRMZKKJfaJ2pkkTtMun/wzMjQ7hqbULUO22lywwNy3t7uNINETfPReIYNIG9p -# KZ3t8zI1T+7B9Vpm5t9LC9hQp1yrj88LcA1QAaFcvjn1sxUOGlLFK2jsa2AUcrwr -# QpiVDX+OOdExw+EJTUBil/kvAtXHdCT1qkH3JzzSBYiCLGq2pW4AuVvlL0iiRKeT -# /AW6TY9SuOUoG0aOZZzLAuCp6qA7ovKqRAGoFpcAaGXQokWRLU4se3/2meBksksu -# ZlP1paBMHbT1ZLJP095SzhwYfsw7IDkC0Zt1OLq7IdwwoYIS8TCCEu0GCisGAQQB -# gjcDAwExghLdMIIS2QYJKoZIhvcNAQcCoIISyjCCEsYCAQMxDzANBglghkgBZQME -# AgEFADCCAVUGCyqGSIb3DQEJEAEEoIIBRASCAUAwggE8AgEBBgorBgEEAYRZCgMB -# MDEwDQYJYIZIAWUDBAIBBQAEIMdwQTCmst1vtKyhKIg+hpE9VQEH7XzRp1eSg9au -# tOz7AgZfu+lvK1cYEzIwMjAxMjAzMTM0MjE0LjEzNVowBIACAfSggdSkgdEwgc4x -# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt -# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1p -# Y3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMg -# VFNTIEVTTjpEOURFLUUzOUEtNDNGRTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUt -# U3RhbXAgU2VydmljZaCCDkQwggT1MIID3aADAgECAhMzAAABLS5NQcpjZTOgAAAA -# AAEtMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo -# aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y -# cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw -# MB4XDTE5MTIxOTAxMTUwNFoXDTIxMDMxNzAxMTUwNFowgc4xCzAJBgNVBAYTAlVT -# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK -# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVy -# YXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpEOURF -# LUUzOUEtNDNGRTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj -# ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKlhjfR1STqYRTS3s0i4 -# jIcSMV+G4N0oYgwlQK+pl4DVMFmr1iTZHFLj3Tt7V6F+M/BXx0h9i0uu1yBnqCqN -# OkuJERTbVnM4u3JvRxzsQfCjBfqD/CNwoMNekoylIBzxP50Skjp1pPsnQBKHaCP8 -# tguvYVzoTQ54q2VpYEP/+OYTQeEPqWFi8WggvsckuercUGkhYWM8DV/4JU7N/rbD -# rtamYbe8LtkViTQYbigUSCAor9DhtAZvq8A0A73XFH2df2wDlLtAnKCcsVvXSmZ3 -# 5bAqneN4uEQVy8NQdReGI1tI6UxoC7XnjGvK4McDdKhavNJ7DAnSP5+G/DTkdWD+ -# lN8CAwEAAaOCARswggEXMB0GA1UdDgQWBBTZbGR8QgEh+E4Oiv8vQ7408p2GzTAf -# BgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBH -# hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNU -# aW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF -# BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0 -# YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsG -# AQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQB9awNk906recBuoO7Ezq7B8UGu9EoF -# XiL8ac0bbsZDBY9z/3p8atVZRCxHN43a3WGbCMZoKYxSBH6UCkcDcwXIfNKEbVMz -# nF1mjpQEGbqhR+rPNqHXZotSV+vn85AxmefAM3bcLt+WNBpEuOZZ4kPZVcFtMo4Y -# yQjxoNRPiwmp+B0HkhQs/l/VIg0XJY6k5FRKE/JFEcVY4256NdqUZ+3jou3b4OAk -# tE2urr4V6VRw1fffOlxZb8MyvE5mqvTVJOStVxCuhuqg1rIe8la1gZ5iiuIyWeft -# ONfMw0nSZchGLigDeInw6XfwwgFnC5Ql8Pbf2jOxCUluAYbzykI+MnBiMIIGcTCC -# BFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC -# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV -# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJv -# b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcN -# MjUwNzAxMjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv -# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 -# aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCASIw -# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0 -# VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEwWbEw -# RA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQe -# dGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKx -# Xf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw2k4G -# kbaICDXoeByw6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEA -# AaOCAeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7 -# fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC -# AYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX -# zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20v -# cGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYI -# KwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5j -# b20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0g -# AQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93 -# d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYB -# BQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0AGUA -# bQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOh -# IW+z66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtRgkQS -# +7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlK -# kVIArzgPF/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon -# /VWvL/625Y4zu2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3DnKOi -# PPp/fZZqkHimbdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/ -# fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110mCII -# YdqwUB5vvfHhAN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0 -# cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffIrE7a -# KLixqduWsqdCosnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQ -# cdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+ -# NR4Iuto229Nfj950iEkSoYIC0jCCAjsCAQEwgfyhgdSkgdEwgc4xCzAJBgNVBAYT -# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD -# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBP -# cGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpE -# OURFLUUzOUEtNDNGRTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy -# dmljZaIjCgEBMAcGBSsOAwIaAxUAn85fx36He7F0vgmyUlz2w82l0LGggYMwgYCk -# fjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH -# UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD -# Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIF -# AONy7Z0wIhgPMjAyMDEyMDMwODUyNDVaGA8yMDIwMTIwNDA4NTI0NVowdzA9Bgor -# BgEEAYRZCgQBMS8wLTAKAgUA43LtnQIBADAKAgEAAgIeNgIB/zAHAgEAAgISKjAK -# AgUA43Q/HQIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIB -# AAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAIupzcP2Fb/15zFB -# MFrTbeM0MCQVIRy8J9FjWdJkxeLbuUNsjL2MvjXhcC9P1jzGMWv7zk1Vqd/a0KAX -# of2RasiNtLpa/0QW6M+N2HkkJTcSVtsIyLC2/PyK9Tbx3kDzeEoPmRhSesXVJ+Bo -# e/ohMk+yGs96uL60/kKvJHqzeFZKMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMC -# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV -# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp -# bWUtU3RhbXAgUENBIDIwMTACEzMAAAEtLk1BymNlM6AAAAAAAS0wDQYJYIZIAWUD -# BAIBBQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0B -# CQQxIgQgR3/jlSJ40+Uxob7DC+9E0RT/g9bnA4IuNWxjDyUZLhUwgfoGCyqGSIb3 -# DQEJEAIvMYHqMIHnMIHkMIG9BCCO8Vpycn0gB4/ilRAPPDbS+Cmbqj/uC011moc5 -# oeGDwTCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u -# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp -# b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAB -# LS5NQcpjZTOgAAAAAAEtMCIEID1u73c3Wq/e0ID4oqGB3Ux43WPbdQ5f/5pa0D32 -# 1X0GMA0GCSqGSIb3DQEBCwUABIIBADedu37tYnFrz5Ry3EreheZ2gObKfN4dsfLI -# fpGsCU9ffeM5Aq7LtYLlRWW9b69TAHIY0WjpkGxbxstFZDD1/dO0GxnKU+JnGVAo -# ca85iq6BQ+Ke4Vu/tMdUWcDxzpSCHUH63sZkUea92L5fs2FU5R8aKyGlyfihCW7u -# u6qDBbDfnKC7Y06PFsdp3q7UrE0B+UYLrT8eppCRHnF5P7nIjsPG9NSUYf7cWvLV -# aWd6/oypG+937KWaVYoWdWNwng5UqT/bHgAygz4O14vQGdg+MWHzCishwI2gxa3n -# rBwnR+STwnR16qfYV5j5wuBXKHSNNDXk8NiwjDcfvQD71WY4vzo= -# SIG # End signature block diff --git a/src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj b/src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj deleted file mode 100644 index 96032660..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzer.Test.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - netcoreapp2.0 - - true - true - - - - - - - - - - - - - - - - - - - - - diff --git a/src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs b/src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs deleted file mode 100644 index 0f0d459f..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/MSBuildLocatorAnalyzerUnitTests.cs +++ /dev/null @@ -1,59 +0,0 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System.Threading.Tasks; -using VerifyCS = MSBuildLocatorAnalyzer.Test.CSharpCodeFixVerifier< - MSBuildLocatorAnalyzer.MSBuildLocatorAnalyzerAnalyzer, - MSBuildLocatorAnalyzer.MSBuildLocatorAnalyzerCodeFixProvider>; - -namespace MSBuildLocatorAnalyzer.Test -{ - [TestClass] - public class MSBuildLocatorAnalyzerUnitTest - { - //No diagnostics expected to show up - [TestMethod] - public async Task TestMethod1() - { - var test = @""; - - await VerifyCS.VerifyAnalyzerAsync(test); - } - - //Diagnostic and CodeFix both triggered and checked for - [TestMethod] - public async Task TestMethod2() - { - var test = @" - using System; - using System.Collections.Generic; - using System.Linq; - using System.Text; - using System.Threading.Tasks; - using System.Diagnostics; - - namespace ConsoleApplication1 - { - class {|#0:TypeName|} - { - } - }"; - - var fixtest = @" - using System; - using System.Collections.Generic; - using System.Linq; - using System.Text; - using System.Threading.Tasks; - using System.Diagnostics; - - namespace ConsoleApplication1 - { - class TYPENAME - { - } - }"; - - var expected = VerifyCS.Diagnostic("MSBuildLocatorAnalyzer").WithLocation(0).WithArguments("TypeName"); - await VerifyCS.VerifyCodeFixAsync(test, expected, fixtest); - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs deleted file mode 100644 index 223172eb..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1+Test.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Microsoft.CodeAnalysis.CSharp.Testing; -using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.Testing.Verifiers; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class CSharpAnalyzerVerifier - where TAnalyzer : DiagnosticAnalyzer, new() - { - public class Test : CSharpAnalyzerTest - { - public Test() - { - SolutionTransforms.Add((solution, projectId) => - { - var compilationOptions = solution.GetProject(projectId).CompilationOptions; - compilationOptions = compilationOptions.WithSpecificDiagnosticOptions( - compilationOptions.SpecificDiagnosticOptions.SetItems(CSharpVerifierHelper.NullableWarnings)); - solution = solution.WithProjectCompilationOptions(projectId, compilationOptions); - - return solution; - }); - } - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs deleted file mode 100644 index 388adddd..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpAnalyzerVerifier`1.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp.Testing; -using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.Testing; -using Microsoft.CodeAnalysis.Testing.Verifiers; -using System.Threading; -using System.Threading.Tasks; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class CSharpAnalyzerVerifier - where TAnalyzer : DiagnosticAnalyzer, new() - { - /// - public static DiagnosticResult Diagnostic() - => CSharpAnalyzerVerifier.Diagnostic(); - - /// - public static DiagnosticResult Diagnostic(string diagnosticId) - => CSharpAnalyzerVerifier.Diagnostic(diagnosticId); - - /// - public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor) - => CSharpAnalyzerVerifier.Diagnostic(descriptor); - - /// - public static async Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected) - { - var test = new Test - { - TestCode = source, - }; - - test.ExpectedDiagnostics.AddRange(expected); - await test.RunAsync(CancellationToken.None); - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs deleted file mode 100644 index 72b6546e..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2+Test.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Microsoft.CodeAnalysis.CodeFixes; -using Microsoft.CodeAnalysis.CSharp.Testing; -using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.Testing.Verifiers; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class CSharpCodeFixVerifier - where TAnalyzer : DiagnosticAnalyzer, new() - where TCodeFix : CodeFixProvider, new() - { - public class Test : CSharpCodeFixTest - { - public Test() - { - SolutionTransforms.Add((solution, projectId) => - { - var compilationOptions = solution.GetProject(projectId).CompilationOptions; - compilationOptions = compilationOptions.WithSpecificDiagnosticOptions( - compilationOptions.SpecificDiagnosticOptions.SetItems(CSharpVerifierHelper.NullableWarnings)); - solution = solution.WithProjectCompilationOptions(projectId, compilationOptions); - - return solution; - }); - } - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs deleted file mode 100644 index c90c124c..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeFixVerifier`2.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CodeFixes; -using Microsoft.CodeAnalysis.CSharp.Testing; -using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.Testing; -using Microsoft.CodeAnalysis.Testing.Verifiers; -using System.Threading; -using System.Threading.Tasks; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class CSharpCodeFixVerifier - where TAnalyzer : DiagnosticAnalyzer, new() - where TCodeFix : CodeFixProvider, new() - { - /// - public static DiagnosticResult Diagnostic() - => CSharpCodeFixVerifier.Diagnostic(); - - /// - public static DiagnosticResult Diagnostic(string diagnosticId) - => CSharpCodeFixVerifier.Diagnostic(diagnosticId); - - /// - public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor) - => CSharpCodeFixVerifier.Diagnostic(descriptor); - - /// - public static async Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected) - { - var test = new Test - { - TestCode = source, - }; - - test.ExpectedDiagnostics.AddRange(expected); - await test.RunAsync(CancellationToken.None); - } - - /// - public static async Task VerifyCodeFixAsync(string source, string fixedSource) - => await VerifyCodeFixAsync(source, DiagnosticResult.EmptyDiagnosticResults, fixedSource); - - /// - public static async Task VerifyCodeFixAsync(string source, DiagnosticResult expected, string fixedSource) - => await VerifyCodeFixAsync(source, new[] { expected }, fixedSource); - - /// - public static async Task VerifyCodeFixAsync(string source, DiagnosticResult[] expected, string fixedSource) - { - var test = new Test - { - TestCode = source, - FixedCode = fixedSource, - }; - - test.ExpectedDiagnostics.AddRange(expected); - await test.RunAsync(CancellationToken.None); - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs deleted file mode 100644 index 9787b2cf..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1+Test.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Microsoft.CodeAnalysis.CodeRefactorings; -using Microsoft.CodeAnalysis.CSharp.Testing; -using Microsoft.CodeAnalysis.Testing.Verifiers; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class CSharpCodeRefactoringVerifier - where TCodeRefactoring : CodeRefactoringProvider, new() - { - public class Test : CSharpCodeRefactoringTest - { - public Test() - { - SolutionTransforms.Add((solution, projectId) => - { - var compilationOptions = solution.GetProject(projectId).CompilationOptions; - compilationOptions = compilationOptions.WithSpecificDiagnosticOptions( - compilationOptions.SpecificDiagnosticOptions.SetItems(CSharpVerifierHelper.NullableWarnings)); - solution = solution.WithProjectCompilationOptions(projectId, compilationOptions); - - return solution; - }); - } - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs deleted file mode 100644 index b10da4a9..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpCodeRefactoringVerifier`1.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Microsoft.CodeAnalysis.CodeRefactorings; -using Microsoft.CodeAnalysis.Testing; -using System.Threading; -using System.Threading.Tasks; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class CSharpCodeRefactoringVerifier - where TCodeRefactoring : CodeRefactoringProvider, new() - { - /// - public static async Task VerifyRefactoringAsync(string source, string fixedSource) - { - await VerifyRefactoringAsync(source, DiagnosticResult.EmptyDiagnosticResults, fixedSource); - } - - /// - public static async Task VerifyRefactoringAsync(string source, DiagnosticResult expected, string fixedSource) - { - await VerifyRefactoringAsync(source, new[] { expected }, fixedSource); - } - - /// - public static async Task VerifyRefactoringAsync(string source, DiagnosticResult[] expected, string fixedSource) - { - var test = new Test - { - TestCode = source, - FixedCode = fixedSource, - }; - - test.ExpectedDiagnostics.AddRange(expected); - await test.RunAsync(CancellationToken.None); - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs deleted file mode 100644 index 7a603d34..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/CSharpVerifierHelper.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using System; -using System.Collections.Immutable; - -namespace MSBuildLocatorAnalyzer.Test -{ - internal static class CSharpVerifierHelper - { - /// - /// By default, the compiler reports diagnostics for nullable reference types at - /// , and the analyzer test framework defaults to only validating - /// diagnostics at . This map contains all compiler diagnostic IDs - /// related to nullability mapped to , which is then used to enable all - /// of these warnings for default validation during analyzer and code fix tests. - /// - internal static ImmutableDictionary NullableWarnings { get; } = GetNullableWarningsFromCompiler(); - - private static ImmutableDictionary GetNullableWarningsFromCompiler() - { - string[] args = { "/warnaserror:nullable" }; - var commandLineArguments = CSharpCommandLineParser.Default.Parse(args, baseDirectory: Environment.CurrentDirectory, sdkDirectory: Environment.CurrentDirectory); - var nullableWarnings = commandLineArguments.CompilationOptions.SpecificDiagnosticOptions; - - // Workaround for https://github.com/dotnet/roslyn/issues/41610 - nullableWarnings = nullableWarnings - .SetItem("CS8632", ReportDiagnostic.Error) - .SetItem("CS8669", ReportDiagnostic.Error); - - return nullableWarnings; - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs deleted file mode 100644 index 0fc3735b..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1+Test.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.Testing.Verifiers; -using Microsoft.CodeAnalysis.VisualBasic.Testing; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class VisualBasicAnalyzerVerifier - where TAnalyzer : DiagnosticAnalyzer, new() - { - public class Test : VisualBasicAnalyzerTest - { - public Test() - { - } - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs deleted file mode 100644 index 456e9d79..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicAnalyzerVerifier`1.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.Testing; -using Microsoft.CodeAnalysis.Testing.Verifiers; -using Microsoft.CodeAnalysis.VisualBasic.Testing; -using System.Threading; -using System.Threading.Tasks; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class VisualBasicAnalyzerVerifier - where TAnalyzer : DiagnosticAnalyzer, new() - { - /// - public static DiagnosticResult Diagnostic() - => VisualBasicAnalyzerVerifier.Diagnostic(); - - /// - public static DiagnosticResult Diagnostic(string diagnosticId) - => VisualBasicAnalyzerVerifier.Diagnostic(diagnosticId); - - /// - public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor) - => VisualBasicAnalyzerVerifier.Diagnostic(descriptor); - - /// - public static async Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected) - { - var test = new Test - { - TestCode = source, - }; - - test.ExpectedDiagnostics.AddRange(expected); - await test.RunAsync(CancellationToken.None); - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs deleted file mode 100644 index 14540d87..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2+Test.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Microsoft.CodeAnalysis.CodeFixes; -using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.Testing.Verifiers; -using Microsoft.CodeAnalysis.VisualBasic.Testing; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class VisualBasicCodeFixVerifier - where TAnalyzer : DiagnosticAnalyzer, new() - where TCodeFix : CodeFixProvider, new() - { - public class Test : VisualBasicCodeFixTest - { - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs deleted file mode 100644 index 6bd176f3..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeFixVerifier`2.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CodeFixes; -using Microsoft.CodeAnalysis.Diagnostics; -using Microsoft.CodeAnalysis.Testing; -using Microsoft.CodeAnalysis.Testing.Verifiers; -using Microsoft.CodeAnalysis.VisualBasic.Testing; -using System.Threading; -using System.Threading.Tasks; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class VisualBasicCodeFixVerifier - where TAnalyzer : DiagnosticAnalyzer, new() - where TCodeFix : CodeFixProvider, new() - { - /// - public static DiagnosticResult Diagnostic() - => VisualBasicCodeFixVerifier.Diagnostic(); - - /// - public static DiagnosticResult Diagnostic(string diagnosticId) - => VisualBasicCodeFixVerifier.Diagnostic(diagnosticId); - - /// - public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor) - => VisualBasicCodeFixVerifier.Diagnostic(descriptor); - - /// - public static async Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected) - { - var test = new Test - { - TestCode = source, - }; - - test.ExpectedDiagnostics.AddRange(expected); - await test.RunAsync(CancellationToken.None); - } - - /// - public static async Task VerifyCodeFixAsync(string source, string fixedSource) - => await VerifyCodeFixAsync(source, DiagnosticResult.EmptyDiagnosticResults, fixedSource); - - /// - public static async Task VerifyCodeFixAsync(string source, DiagnosticResult expected, string fixedSource) - => await VerifyCodeFixAsync(source, new[] { expected }, fixedSource); - - /// - public static async Task VerifyCodeFixAsync(string source, DiagnosticResult[] expected, string fixedSource) - { - var test = new Test - { - TestCode = source, - FixedCode = fixedSource, - }; - - test.ExpectedDiagnostics.AddRange(expected); - await test.RunAsync(CancellationToken.None); - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs deleted file mode 100644 index 6926e88b..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1+Test.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Microsoft.CodeAnalysis.CodeRefactorings; -using Microsoft.CodeAnalysis.Testing.Verifiers; -using Microsoft.CodeAnalysis.VisualBasic.Testing; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class VisualBasicCodeRefactoringVerifier - where TCodeRefactoring : CodeRefactoringProvider, new() - { - public class Test : VisualBasicCodeRefactoringTest - { - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs b/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs deleted file mode 100644 index 78bffb8c..00000000 --- a/src/MSBuildLocatorAnalyzer.Test/Verifiers/VisualBasicCodeRefactoringVerifier`1.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Microsoft.CodeAnalysis.CodeRefactorings; -using Microsoft.CodeAnalysis.Testing; -using System.Threading; -using System.Threading.Tasks; - -namespace MSBuildLocatorAnalyzer.Test -{ - public static partial class VisualBasicCodeRefactoringVerifier - where TCodeRefactoring : CodeRefactoringProvider, new() - { - /// - public static async Task VerifyRefactoringAsync(string source, string fixedSource) - { - await VerifyRefactoringAsync(source, DiagnosticResult.EmptyDiagnosticResults, fixedSource); - } - - /// - public static async Task VerifyRefactoringAsync(string source, DiagnosticResult expected, string fixedSource) - { - await VerifyRefactoringAsync(source, new[] { expected }, fixedSource); - } - - /// - public static async Task VerifyRefactoringAsync(string source, DiagnosticResult[] expected, string fixedSource) - { - var test = new Test - { - TestCode = source, - FixedCode = fixedSource, - }; - - test.ExpectedDiagnostics.AddRange(expected); - await test.RunAsync(CancellationToken.None); - } - } -} diff --git a/src/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj b/src/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj deleted file mode 100644 index 8bf2cbcb..00000000 --- a/src/MSBuildLocatorAnalyzer.Vsix/MSBuildLocatorAnalyzer.Vsix.csproj +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - net472 - MSBuildLocatorAnalyzer.Vsix - MSBuildLocatorAnalyzer.Vsix - - - - false - false - false - false - false - false - Roslyn - - - - - - - - Program - $(DevEnvDir)devenv.exe - /rootsuffix $(VSSDKTargetPlatformRegRootSuffix) - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest b/src/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest deleted file mode 100644 index 81dc09d3..00000000 --- a/src/MSBuildLocatorAnalyzer.Vsix/source.extension.vsixmanifest +++ /dev/null @@ -1,24 +0,0 @@ - - - - - MSBuildLocatorAnalyzer - This analyzes and prevents a common problem in starting with MSBuildLocator. - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj b/src/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj index 32931352..536dcc53 100644 --- a/src/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj +++ b/src/MSBuildLocatorAnalyzer/MSBuildLocatorAnalyzer.csproj @@ -1,7 +1,7 @@ - netstandard2.0 + net48;netcoreapp3.1 true false True