From 48d2a96be4006298d2ef4e7b1578d8eb83852734 Mon Sep 17 00:00:00 2001 From: MrLuje Date: Mon, 12 Feb 2018 00:11:43 +0100 Subject: [PATCH 1/4] Add first version of Moq --- .../Mocking.Helpers/CompletionService.cs | 81 +++++++++++++++++++ .../Mocking.Helpers/Mocking.Helpers.csproj | 7 +- .../MockingHelpersCodeRefactoringProvider.cs | 61 -------------- .../Mocking.Helpers/Moq/MoqIsAnyCompletion.cs | 65 +++++++++++++++ .../Mocking.Helpers/Moq/MoqProvider.cs | 33 ++++++++ .../Mocking.Helpers/SyntaxHelpers.cs | 70 ++++++++++++++++ 6 files changed, 254 insertions(+), 63 deletions(-) create mode 100644 Mocking.Helpers/Mocking.Helpers/CompletionService.cs delete mode 100644 Mocking.Helpers/Mocking.Helpers/MockingHelpersCodeRefactoringProvider.cs create mode 100644 Mocking.Helpers/Mocking.Helpers/Moq/MoqIsAnyCompletion.cs create mode 100644 Mocking.Helpers/Mocking.Helpers/Moq/MoqProvider.cs create mode 100644 Mocking.Helpers/Mocking.Helpers/SyntaxHelpers.cs diff --git a/Mocking.Helpers/Mocking.Helpers/CompletionService.cs b/Mocking.Helpers/Mocking.Helpers/CompletionService.cs new file mode 100644 index 0000000..161b391 --- /dev/null +++ b/Mocking.Helpers/Mocking.Helpers/CompletionService.cs @@ -0,0 +1,81 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Completion; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Mocking.Helpers.Moq; +using System; +using System.Linq; + +namespace Mocking.Helpers +{ + public class CompletionService + { + private CompletionContext _context; + private CompletionItemRules _preselectCompletions; + private CompletionItemRules _defaultCompletions; + private readonly SyntaxToken _token; + private readonly SemanticModel _semanticModel; + private readonly MoqProvider _provider; + + public CompletionService(CompletionContext context, SyntaxToken token, SemanticModel semanticModel, MoqProvider provider) + { + _context = context; + _token = token; + _semanticModel = semanticModel; + + _preselectCompletions = CompletionItemRules.Default.WithMatchPriority(MatchPriority.Preselect).WithSelectionBehavior(CompletionItemSelectionBehavior.SoftSelection); + _defaultCompletions = CompletionItemRules.Default.WithSelectionBehavior(CompletionItemSelectionBehavior.SoftSelection); + _provider = provider; + } + + public void AddSuggestionsForMethod(IMethodSymbol methodSymbol, ArgumentListSyntax arguments) + { + switch (this._token.Kind()) + { + // Starting parenthesis before parameters + case SyntaxKind.OpenParenToken: + AddSuggestionsForAllParameters(methodSymbol, arguments); + break; + // Somewhere after first parameter + default: + AddSuggestionsForNextParameters(methodSymbol, arguments); + break; + } + } + + private void AddSuggestionsForAllParameters(IMethodSymbol methodSymbol, ArgumentListSyntax arguments) + { + // Suggestion for all parameters + this.AddSuggestion(this._provider.GenerateSuggestionForParameterWildcard(this._semanticModel, methodSymbol, arguments)); + + // Highlight suggestion of first parameter + if (methodSymbol.Parameters.Length > 1) + { + this.AddDefaultSuggestion(this._provider.GenerateSuggestionForParameterWildcardOfType(_semanticModel, methodSymbol.Parameters[0].Type, arguments)); + } + } + + private void AddSuggestionsForNextParameters(IMethodSymbol methodSymbol, ArgumentListSyntax arguments) + { + var currentParamIndex = arguments.ChildTokens() + .Where(t => t.IsKind(SyntaxKind.CommaToken)) + .ToList() + .IndexOf(this._token); + var nextParamIndex = currentParamIndex + 1; + + if (methodSymbol.Parameters.Length <= nextParamIndex) return; + + this.AddDefaultSuggestion(this._provider.GenerateSuggestionForParameterWildcardOfType(_semanticModel, methodSymbol.Parameters[nextParamIndex].Type, arguments)); + } + + void AddSuggestion(string suggestion) + { + this._context.AddItem(CompletionItem.Create(suggestion, rules: _preselectCompletions)); + } + + void AddDefaultSuggestion(string suggestion) + { + this._context.AddItem(CompletionItem.Create(suggestion, rules: _defaultCompletions)); + } + } +} diff --git a/Mocking.Helpers/Mocking.Helpers/Mocking.Helpers.csproj b/Mocking.Helpers/Mocking.Helpers/Mocking.Helpers.csproj index b1573c5..9ec0d3c 100644 --- a/Mocking.Helpers/Mocking.Helpers/Mocking.Helpers.csproj +++ b/Mocking.Helpers/Mocking.Helpers/Mocking.Helpers.csproj @@ -1,11 +1,14 @@ - netstandard1.3 + netstandard2.0 - + + + + diff --git a/Mocking.Helpers/Mocking.Helpers/MockingHelpersCodeRefactoringProvider.cs b/Mocking.Helpers/Mocking.Helpers/MockingHelpersCodeRefactoringProvider.cs deleted file mode 100644 index 00bf9c7..0000000 --- a/Mocking.Helpers/Mocking.Helpers/MockingHelpersCodeRefactoringProvider.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System.Collections.Generic; -using System.Composition; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CodeActions; -using Microsoft.CodeAnalysis.CodeRefactorings; -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.CodeAnalysis.Rename; -using Microsoft.CodeAnalysis.Text; - -namespace Mocking.Helpers -{ - [ExportCodeRefactoringProvider(LanguageNames.CSharp, Name = nameof(MockingHelpersCodeRefactoringProvider)), Shared] - internal class MockingHelpersCodeRefactoringProvider : CodeRefactoringProvider - { - public sealed override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) - { - // TODO: Replace the following code with your own analysis, generating a CodeAction for each refactoring to offer - - var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false); - - // Find the node at the selection. - var node = root.FindNode(context.Span); - - // Only offer a refactoring if the selected node is a type declaration node. - var typeDecl = node as TypeDeclarationSyntax; - if (typeDecl == null) - { - return; - } - - // For any type declaration node, create a code action to reverse the identifier text. - var action = CodeAction.Create("Reverse type name", c => ReverseTypeNameAsync(context.Document, typeDecl, c)); - - // Register this code action. - context.RegisterRefactoring(action); - } - - private async Task ReverseTypeNameAsync(Document document, TypeDeclarationSyntax typeDecl, CancellationToken cancellationToken) - { - // Produce a reversed version of the type declaration's identifier token. - var identifierToken = typeDecl.Identifier; - var newName = new string(identifierToken.Text.ToCharArray().Reverse().ToArray()); - - // Get the symbol representing the type to be renamed. - var semanticModel = await document.GetSemanticModelAsync(cancellationToken); - var typeSymbol = semanticModel.GetDeclaredSymbol(typeDecl, cancellationToken); - - // Produce a new solution that has all references to that type renamed, including the declaration. - var originalSolution = document.Project.Solution; - var optionSet = originalSolution.Workspace.Options; - var newSolution = await Renamer.RenameSymbolAsync(document.Project.Solution, typeSymbol, newName, optionSet, cancellationToken).ConfigureAwait(false); - - // Return the new solution with the now-uppercase type name. - return newSolution; - } - } -} diff --git a/Mocking.Helpers/Mocking.Helpers/Moq/MoqIsAnyCompletion.cs b/Mocking.Helpers/Mocking.Helpers/Moq/MoqIsAnyCompletion.cs new file mode 100644 index 0000000..45857a0 --- /dev/null +++ b/Mocking.Helpers/Mocking.Helpers/Moq/MoqIsAnyCompletion.cs @@ -0,0 +1,65 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Completion; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Mocking.Helpers.Moq +{ + [ExportCompletionProvider(nameof(MoqIsAnyCompletion), LanguageNames.CSharp)] + public class MoqIsAnyCompletion : CompletionProvider + { + private MoqProvider _provider; + + public MoqIsAnyCompletion() + { + this._provider = new MoqProvider(); + } + + internal bool IsMoqSetupMethod(InvocationExpressionSyntax invocation) + { + return SyntaxHelpers.IsMethodNamed(invocation, this._provider.MockingMethodName); + } + + public override async Task ProvideCompletionsAsync(CompletionContext context) + { + try + { + if (!context.Document.SupportsSemanticModel || !context.Document.SupportsSyntaxTree) return; + + var hasMoqReferenced = context.Document.Project.MetadataReferences.Any(r => r.Display.Contains(this._provider.AssemblyName)); + if (!hasMoqReferenced) return; + + var syntaxRoot = await context.Document.GetSyntaxRootAsync(); + var token = SyntaxHelpers.GetSelectedTokens(syntaxRoot, context.Position); + + // ?ot in an opened method + if (token.Parent == null) return; + + var mockedMethodArgumentList = token.Parent as ArgumentListSyntax; + var setupMethodInvocation = mockedMethodArgumentList.Ancestors() + .OfType() + .Where(IsMoqSetupMethod) + .FirstOrDefault(); + + if (setupMethodInvocation == null) return; + + var semanticModel = await context.Document.GetSemanticModelAsync(); + var matchingMockedMethods = SyntaxHelpers.GetCandidatesMockedMethodSignatures(semanticModel, setupMethodInvocation); + + var completionService = new CompletionService(context, token, semanticModel, this._provider); + + foreach (IMethodSymbol matchingMockedMethodSymbol in matchingMockedMethods) + { + completionService.AddSuggestionsForMethod(matchingMockedMethodSymbol, mockedMethodArgumentList); + } + } + catch + { + } + } + } +} diff --git a/Mocking.Helpers/Mocking.Helpers/Moq/MoqProvider.cs b/Mocking.Helpers/Mocking.Helpers/Moq/MoqProvider.cs new file mode 100644 index 0000000..6469047 --- /dev/null +++ b/Mocking.Helpers/Mocking.Helpers/Moq/MoqProvider.cs @@ -0,0 +1,33 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Mocking.Helpers.Moq +{ + public class MoqProvider + { + public string MockingMethodName { get; } = "Setup"; + public string AssemblyName { get; } = "Moq"; + public string MockingWildcardMethod { get; } = "It.IsAny<{0}>()"; + + string FormatMockingWildcardMethod(string parameterTypeName) + { + return string.Format(this.MockingWildcardMethod, parameterTypeName); + } + + public string GenerateSuggestionForParameterWildcard(SemanticModel model, IMethodSymbol methodSymbol, ArgumentListSyntax arguments) + { + var suggestionParameter = methodSymbol.Parameters.Aggregate(String.Empty, (acc, p) => $"{acc}, {this.FormatMockingWildcardMethod(p.Type.ToMinimalDisplayString(model, arguments.SpanStart))}").TrimStart(',').Trim(); + return suggestionParameter; + } + + public string GenerateSuggestionForParameterWildcardOfType(SemanticModel model, ITypeSymbol typeSymbol, ArgumentListSyntax arguments) + { + var suggestionParameter = this.FormatMockingWildcardMethod(typeSymbol.ToMinimalDisplayString(model, arguments.SpanStart)); + return suggestionParameter; + } + } +} diff --git a/Mocking.Helpers/Mocking.Helpers/SyntaxHelpers.cs b/Mocking.Helpers/Mocking.Helpers/SyntaxHelpers.cs new file mode 100644 index 0000000..d6b7a05 --- /dev/null +++ b/Mocking.Helpers/Mocking.Helpers/SyntaxHelpers.cs @@ -0,0 +1,70 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Mocking.Helpers +{ + public static class SyntaxHelpers + { + internal static bool IsMethodNamed(InvocationExpressionSyntax invocation, string expectedMethodName) + { + var method = invocation.Expression as MemberAccessExpressionSyntax; + var methodName = method?.Name.Identifier.ValueText; + return methodName == expectedMethodName; + } + + static internal bool IsCommaOrOpenParenthesis(SyntaxToken token) + { + return token.IsKind(SyntaxKind.OpenParenToken) || token.IsKind(SyntaxKind.CommaToken); + } + + /// + /// Get token at current position + /// + /// + /// + /// + static internal SyntaxToken GetSelectedTokens(SyntaxNode node, int currentPosition) + { + return node.DescendantNodes(n => n.FullSpan.Contains(currentPosition - 1)) // node under cursor + .OfType() + .OrderBy(n => n.FullSpan.Length) + .SelectMany(n => n.ChildTokens() + .Where(IsCommaOrOpenParenthesis) + .Where(t => t.FullSpan.Contains(currentPosition - 1))) + .FirstOrDefault(); + } + + /// + /// Get all signature candidates which have parameters + /// + /// + /// + /// + static internal IEnumerable GetCandidatesMockedMethodSignatures(SemanticModel semanticModel, InvocationExpressionSyntax setupMethodInvocation) + { + var setupLambda = setupMethodInvocation.ArgumentList.Arguments.FirstOrDefault()?.Expression as LambdaExpressionSyntax; + + var methodToMockInLambda = setupLambda?.Body as InvocationExpressionSyntax; + if (methodToMockInLambda == null) return Enumerable.Empty(); + + var mockSignatures = new List(); + var symbolInfo = semanticModel.GetSymbolInfo(methodToMockInLambda); + + // not what are searching but still a method + if (symbolInfo.CandidateReason == CandidateReason.None && symbolInfo.Symbol is IMethodSymbol methodSymbol) + { + mockSignatures.Add(methodSymbol); + } + else if (symbolInfo.CandidateReason == CandidateReason.OverloadResolutionFailure) + { + mockSignatures.AddRange(symbolInfo.CandidateSymbols.OfType()); + } + return mockSignatures.Where(m => m.Parameters.Any()); + } + } +} From bc363887755e398fb8792b351b8443b710518477 Mon Sep 17 00:00:00 2001 From: MrLuje Date: Thu, 15 Feb 2018 21:06:38 +0100 Subject: [PATCH 2/4] Update vsix --- .../source.extension.vsixmanifest | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/Mocking.Helpers/Mocking.Helpers.Vsix/source.extension.vsixmanifest b/Mocking.Helpers/Mocking.Helpers.Vsix/source.extension.vsixmanifest index db70cdd..eb8f328 100644 --- a/Mocking.Helpers/Mocking.Helpers.Vsix/source.extension.vsixmanifest +++ b/Mocking.Helpers/Mocking.Helpers.Vsix/source.extension.vsixmanifest @@ -1,21 +1,23 @@ - - - Mocking.Helpers - This is a sample code refactoring extension for the .NET Compiler Platform ("Roslyn"). - - - - - - - - - - - - - - + + + Mocking.Helpers + Collection of features to help working with various mocking framework + + + + + + + + + + + + + + + + \ No newline at end of file From 271afae218876659536ba3706e9072b8a0f5e009 Mon Sep 17 00:00:00 2001 From: MrLuje Date: Sat, 17 Feb 2018 16:18:54 +0100 Subject: [PATCH 3/4] update vsix (description, etc) --- .../Mocking.Helpers.Vsix.csproj | 6 ++++++ .../Mocking.Helpers.Vsix/Resources/moq.png | Bin 0 -> 27590 bytes .../source.extension.vsixmanifest | 3 +++ 3 files changed, 9 insertions(+) create mode 100644 Mocking.Helpers/Mocking.Helpers.Vsix/Resources/moq.png diff --git a/Mocking.Helpers/Mocking.Helpers.Vsix/Mocking.Helpers.Vsix.csproj b/Mocking.Helpers/Mocking.Helpers.Vsix/Mocking.Helpers.Vsix.csproj index 713fc68..3941a1b 100644 --- a/Mocking.Helpers/Mocking.Helpers.Vsix/Mocking.Helpers.Vsix.csproj +++ b/Mocking.Helpers/Mocking.Helpers.Vsix/Mocking.Helpers.Vsix.csproj @@ -90,6 +90,12 @@ false + + + Always + true + + \ No newline at end of file diff --git a/Mocking.Helpers/Mocking.Helpers.Vsix/Resources/moq.png b/Mocking.Helpers/Mocking.Helpers.Vsix/Resources/moq.png new file mode 100644 index 0000000000000000000000000000000000000000..867ee54f61ae7d34b33f8f294dd48ff40a08bae2 GIT binary patch literal 27590 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 literal 0 HcmV?d00001 diff --git a/Mocking.Helpers/Mocking.Helpers.Vsix/source.extension.vsixmanifest b/Mocking.Helpers/Mocking.Helpers.Vsix/source.extension.vsixmanifest index eb8f328..9c7bef6 100644 --- a/Mocking.Helpers/Mocking.Helpers.Vsix/source.extension.vsixmanifest +++ b/Mocking.Helpers/Mocking.Helpers.Vsix/source.extension.vsixmanifest @@ -4,6 +4,9 @@ Mocking.Helpers Collection of features to help working with various mocking framework + https://github.com/MrLuje/Mocking.Helpers + Resources\moq.png + mocking roslyn moq From d51f84faf57a6d89b7656784d3074ce2a90ee436 Mon Sep 17 00:00:00 2001 From: MrLuje Date: Sat, 17 Feb 2018 16:19:09 +0100 Subject: [PATCH 4/4] migrate to paket for dependency management --- .gitignore | 1 - .paket/Paket.Restore.targets | 276 ++++++++++ .paket/paket.exe | Bin 0 -> 64296 bytes .paket/paket.targets | 72 +++ Mocking.Helpers.sln | 8 +- .../Mocking.Helpers/Mocking.Helpers.csproj | 11 +- .../Mocking.Helpers/paket.references | 4 + paket.dependencies | 9 + paket.lock | 503 ++++++++++++++++++ 9 files changed, 874 insertions(+), 10 deletions(-) create mode 100644 .paket/Paket.Restore.targets create mode 100644 .paket/paket.exe create mode 100644 .paket/paket.targets create mode 100644 Mocking.Helpers/Mocking.Helpers/paket.references create mode 100644 paket.dependencies create mode 100644 paket.lock diff --git a/.gitignore b/.gitignore index 3c4efe2..be3e15d 100644 --- a/.gitignore +++ b/.gitignore @@ -243,7 +243,6 @@ FakesAssemblies/ _Pvt_Extensions # Paket dependency manager -.paket/paket.exe paket-files/ # FAKE - F# Make diff --git a/.paket/Paket.Restore.targets b/.paket/Paket.Restore.targets new file mode 100644 index 0000000..e7c1bc0 --- /dev/null +++ b/.paket/Paket.Restore.targets @@ -0,0 +1,276 @@ + + + + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + true + $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)..\ + $(PaketRootPath)paket-files\paket.restore.cached + $(PaketRootPath)paket.lock + /Library/Frameworks/Mono.framework/Commands/mono + mono + + $(PaketRootPath)paket.exe + $(PaketToolsPath)paket.exe + "$(PaketExePath)" + $(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" + + + <_PaketExeExtension>$([System.IO.Path]::GetExtension("$(PaketExePath)")) + dotnet "$(PaketExePath)" + + + "$(PaketExePath)" + + $(PaketRootPath)paket.bootstrapper.exe + $(PaketToolsPath)paket.bootstrapper.exe + "$(PaketBootStrapperExePath)" + $(MonoPath) --runtime=v4.0.30319 "$(PaketBootStrapperExePath)" + + + + + true + true + + + + + + + true + $(NoWarn);NU1603 + + + + + /usr/bin/shasum $(PaketRestoreCacheFile) | /usr/bin/awk '{ print $1 }' + /usr/bin/shasum $(PaketLockFilePath) | /usr/bin/awk '{ print $1 }' + + + + + + + + + + + + + $([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)')) + $([System.IO.File]::ReadAllText('$(PaketLockFilePath)')) + true + false + true + + + + + + + + + $(MSBuildProjectDirectory)\obj\$(MSBuildProjectFile).paket.references.cached + + $(MSBuildProjectFullPath).paket.references + + $(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references + + $(MSBuildProjectDirectory)\paket.references + $(MSBuildProjectDirectory)\obj\$(MSBuildProjectFile).$(TargetFramework).paket.resolved + true + references-file-or-cache-not-found + + + + + $([System.IO.File]::ReadAllText('$(PaketReferencesCachedFilePath)')) + $([System.IO.File]::ReadAllText('$(PaketOriginalReferencesFilePath)')) + references-file + false + + + + + false + + + + + true + target-framework '$(TargetFramework)' + + + + + + + + + + + + + + + + + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1]) + $([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4]) + + + %(PaketReferencesFileLinesInfo.PackageVersion) + All + + + + + $(MSBuildProjectDirectory)/obj/$(MSBuildProjectFile).paket.clitools + + + + + + + + + $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[0]) + $([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[1]) + + + %(PaketCliToolFileLinesInfo.PackageVersion) + + + + + + + + + + false + + + + + + <_NuspecFilesNewLocation Include="$(BaseIntermediateOutputPath)$(Configuration)\*.nuspec"/> + + + + $(MSBuildProjectDirectory)/$(MSBuildProjectFile) + true + false + true + $(BaseIntermediateOutputPath)$(Configuration) + $(BaseIntermediateOutputPath) + + + + <_NuspecFiles Include="$(AdjustedNuspecOutputPath)\*.nuspec"/> + + + + + + + + + + + + + + + + diff --git a/.paket/paket.exe b/.paket/paket.exe new file mode 100644 index 0000000000000000000000000000000000000000..1f92eb66dc28f1530b10038ee3c07e4c73c56df3 GIT binary patch literal 64296 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 literal 0 HcmV?d00001 diff --git a/.paket/paket.targets b/.paket/paket.targets new file mode 100644 index 0000000..e57d15c --- /dev/null +++ b/.paket/paket.targets @@ -0,0 +1,72 @@ + + + + + + true + $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)..\ + $(PaketRootPath)paket.lock + $(PaketRootPath)paket-files\paket.restore.cached + /Library/Frameworks/Mono.framework/Commands/mono + mono + + + + + $(PaketRootPath)paket.exe + $(PaketToolsPath)paket.exe + "$(PaketExePath)" + $(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)" + + + + + + $(MSBuildProjectFullPath).paket.references + + + + + $(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references + + + + + $(MSBuildProjectDirectory)\paket.references + + + + + + + + + + + + $(PaketCommand) restore --references-file "$(PaketReferences)" + + RestorePackages; $(BuildDependsOn); + + + + true + + + + $([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)')) + $([System.IO.File]::ReadAllText('$(PaketLockFilePath)')) + true + false + true + + + + + diff --git a/Mocking.Helpers.sln b/Mocking.Helpers.sln index 511b11d..cb1f03f 100644 --- a/Mocking.Helpers.sln +++ b/Mocking.Helpers.sln @@ -3,10 +3,16 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.27130.2027 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mocking.Helpers", "Mocking.Helpers\Mocking.Helpers\Mocking.Helpers.csproj", "{49B470A9-EFE4-4470-A1B3-154947BC7453}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mocking.Helpers", "Mocking.Helpers\Mocking.Helpers\Mocking.Helpers.csproj", "{49B470A9-EFE4-4470-A1B3-154947BC7453}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mocking.Helpers.Vsix", "Mocking.Helpers\Mocking.Helpers.Vsix\Mocking.Helpers.Vsix.csproj", "{BB53B565-6B97-4B6E-806A-DD072023AE6F}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{C7A83F62-91BD-4A9B-AF0D-DAE64BE55B4A}" + ProjectSection(SolutionItems) = preProject + paket.dependencies = paket.dependencies + paket.lock = paket.lock + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/Mocking.Helpers/Mocking.Helpers/Mocking.Helpers.csproj b/Mocking.Helpers/Mocking.Helpers/Mocking.Helpers.csproj index 9ec0d3c..905e6e7 100644 --- a/Mocking.Helpers/Mocking.Helpers/Mocking.Helpers.csproj +++ b/Mocking.Helpers/Mocking.Helpers/Mocking.Helpers.csproj @@ -1,15 +1,10 @@ + - netstandard2.0 - - - - - - - + + \ No newline at end of file diff --git a/Mocking.Helpers/Mocking.Helpers/paket.references b/Mocking.Helpers/Mocking.Helpers/paket.references new file mode 100644 index 0000000..c34292d --- /dev/null +++ b/Mocking.Helpers/Mocking.Helpers/paket.references @@ -0,0 +1,4 @@ +Microsoft.CodeAnalysis.CSharp +Microsoft.CodeAnalysis.EditorFeatures +Microsoft.CodeAnalysis.EditorFeatures.Text +Microsoft.CodeAnalysis.Features \ No newline at end of file diff --git a/paket.dependencies b/paket.dependencies new file mode 100644 index 0000000..3e946f9 --- /dev/null +++ b/paket.dependencies @@ -0,0 +1,9 @@ +version 5.137.2 +storage: none +framework: netstandard20 +source https://www.nuget.org/api/v2 + +nuget Microsoft.CodeAnalysis.CSharp 2.6.1 +nuget Microsoft.CodeAnalysis.EditorFeatures 2.6.1 +nuget Microsoft.CodeAnalysis.EditorFeatures.Text 2.6.1 +nuget Microsoft.CodeAnalysis.Features 2.6.1 \ No newline at end of file diff --git a/paket.lock b/paket.lock new file mode 100644 index 0000000..eefddbc --- /dev/null +++ b/paket.lock @@ -0,0 +1,503 @@ +STORAGE: NONE +RESTRICTION: == netstandard2.0 +NUGET + remote: https://www.nuget.org/api/v2 + Microsoft.CodeAnalysis.Analyzers (2.6) + Microsoft.CodeAnalysis.Common (2.6.1) + Microsoft.CodeAnalysis.Analyzers (>= 1.1) + System.AppContext (>= 4.3) + System.Collections (>= 4.3) + System.Collections.Concurrent (>= 4.3) + System.Collections.Immutable (>= 1.3.1) + System.Console (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Diagnostics.FileVersionInfo (>= 4.3) + System.Diagnostics.StackTrace (>= 4.3) + System.Diagnostics.Tools (>= 4.3) + System.Dynamic.Runtime (>= 4.3) + System.Globalization (>= 4.3) + System.IO.Compression (>= 4.3) + System.IO.FileSystem (>= 4.3) + System.IO.FileSystem.Primitives (>= 4.3) + System.Linq (>= 4.3) + System.Linq.Expressions (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Metadata (>= 1.4.2) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Runtime.Numerics (>= 4.3) + System.Security.Cryptography.Algorithms (>= 4.3) + System.Security.Cryptography.Encoding (>= 4.3) + System.Security.Cryptography.X509Certificates (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Text.Encoding.CodePages (>= 4.3) + System.Text.Encoding.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Threading.Tasks.Parallel (>= 4.3) + System.Threading.Thread (>= 4.3) + System.ValueTuple (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XDocument (>= 4.3) + System.Xml.XmlDocument (>= 4.3) + System.Xml.XPath.XDocument (>= 4.3) + Microsoft.CodeAnalysis.CSharp (2.6.1) + Microsoft.CodeAnalysis.Common (2.6.1) + Microsoft.CodeAnalysis.EditorFeatures (2.6.1) + Microsoft.CodeAnalysis.Elfie (>= 0.10.6) + Microsoft.CodeAnalysis.Features (2.6.1) + Microsoft.CodeAnalysis.EditorFeatures.Text (2.6.1) + Microsoft.CodeAnalysis.Workspaces.Common (2.6.1) + Microsoft.CodeAnalysis.Elfie (0.10.6) + Microsoft.CodeAnalysis.Features (2.6.1) + Microsoft.CodeAnalysis.Workspaces.Common (>= 2.6.1) + Microsoft.CodeAnalysis.Workspaces.Common (2.6.1) + Microsoft.CodeAnalysis.Common (2.6.1) + System.Composition (>= 1.0.31) + System.Diagnostics.Contracts (>= 4.3) + System.Linq.Parallel (>= 4.3) + System.ObjectModel (>= 4.3) + System.Text.RegularExpressions (>= 4.3) + System.Threading.Tasks.Parallel (>= 4.3) + Microsoft.NETCore.Platforms (2.0.1) + Microsoft.NETCore.Targets (2.0) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + runtime.native.System (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + runtime.native.System.IO.Compression (4.3.1) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1.1) + runtime.native.System.Net.Http (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + runtime.native.System.Security.Cryptography.Apple (4.3.1) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) + System.AppContext (4.3) + System.Runtime (>= 4.3) + System.Buffers (4.4) + System.Collections (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Collections.Concurrent (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Diagnostics.Tracing (>= 4.3) + System.Globalization (>= 4.3) + System.Reflection (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Collections.Immutable (1.4) + System.Composition (1.1) + System.Composition.AttributedModel (>= 1.1) + System.Composition.Convention (>= 1.1) + System.Composition.Hosting (>= 1.1) + System.Composition.Runtime (>= 1.1) + System.Composition.TypedParts (>= 1.1) + System.Composition.AttributedModel (1.1) + System.Composition.Convention (1.1) + System.Composition.AttributedModel (>= 1.1) + System.Composition.Hosting (1.1) + System.Composition.Runtime (>= 1.1) + System.Composition.Runtime (1.1) + System.Composition.TypedParts (1.1) + System.Composition.AttributedModel (>= 1.1) + System.Composition.Hosting (>= 1.1) + System.Composition.Runtime (>= 1.1) + System.Console (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.IO (>= 4.3) + System.Runtime (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Diagnostics.Contracts (4.3) + System.Runtime (>= 4.3) + System.Diagnostics.Debug (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Diagnostics.FileVersionInfo (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.IO.FileSystem (>= 4.3) + System.IO.FileSystem.Primitives (>= 4.3) + System.Reflection.Metadata (>= 1.4.1) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Diagnostics.StackTrace (4.3) + System.IO.FileSystem (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Metadata (>= 1.4.1) + System.Runtime (>= 4.3) + System.Diagnostics.Tools (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Diagnostics.Tracing (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Dynamic.Runtime (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Linq (>= 4.3) + System.Linq.Expressions (>= 4.3) + System.ObjectModel (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Emit (>= 4.3) + System.Reflection.Emit.ILGeneration (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Reflection.TypeExtensions (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Globalization (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Globalization.Calendars (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Globalization (>= 4.3) + System.Runtime (>= 4.3) + System.IO (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.IO.Compression (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + runtime.native.System (>= 4.3) + runtime.native.System.IO.Compression (>= 4.3) + System.Buffers (>= 4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.IO.FileSystem (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.IO (>= 4.3) + System.IO.FileSystem.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.IO.FileSystem.Primitives (4.3) + System.Runtime (>= 4.3) + System.Linq (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Linq.Expressions (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Linq (>= 4.3) + System.ObjectModel (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Emit (>= 4.3) + System.Reflection.Emit.ILGeneration (>= 4.3) + System.Reflection.Emit.Lightweight (>= 4.3) + System.Reflection.Extensions (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Reflection.TypeExtensions (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Linq.Parallel (4.3) + System.Collections (>= 4.3) + System.Collections.Concurrent (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Diagnostics.Tracing (>= 4.3) + System.Linq (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.ObjectModel (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Threading (>= 4.3) + System.Reflection (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.IO (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Reflection.Emit (4.3) + System.IO (>= 4.3) + System.Reflection (>= 4.3) + System.Reflection.Emit.ILGeneration (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Reflection.Emit.ILGeneration (4.3) + System.Reflection (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Reflection.Emit.Lightweight (4.3) + System.Reflection (>= 4.3) + System.Reflection.Emit.ILGeneration (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Reflection.Extensions (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Reflection (>= 4.3) + System.Runtime (>= 4.3) + System.Reflection.Metadata (1.5) + System.Collections.Immutable (>= 1.4) + System.Reflection.Primitives (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Reflection.TypeExtensions (4.4) + System.Resources.ResourceManager (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Globalization (>= 4.3) + System.Reflection (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime.Extensions (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Runtime.Handles (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Runtime.InteropServices (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Reflection (>= 4.3) + System.Reflection.Primitives (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.Numerics (4.3) + System.Globalization (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Security.Cryptography.Algorithms (4.3.1) + Microsoft.NETCore.Platforms (>= 1.1) + runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + System.Collections (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Runtime.Numerics (>= 4.3) + System.Security.Cryptography.Encoding (>= 4.3) + System.Security.Cryptography.Primitives (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Security.Cryptography.Cng (4.4) + System.Security.Cryptography.Csp (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + System.IO (>= 4.3) + System.Reflection (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Security.Cryptography.Algorithms (>= 4.3) + System.Security.Cryptography.Encoding (>= 4.3) + System.Security.Cryptography.Primitives (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading (>= 4.3) + System.Security.Cryptography.Encoding (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) + System.Collections (>= 4.3) + System.Collections.Concurrent (>= 4.3) + System.Linq (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Security.Cryptography.Primitives (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Security.Cryptography.OpenSsl (4.4) + System.Security.Cryptography.Primitives (4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Security.Cryptography.X509Certificates (4.3.2) + Microsoft.NETCore.Platforms (>= 1.1) + runtime.native.System (>= 4.3) + runtime.native.System.Net.Http (>= 4.3) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.Globalization.Calendars (>= 4.3) + System.IO (>= 4.3) + System.IO.FileSystem (>= 4.3) + System.IO.FileSystem.Primitives (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.Handles (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Runtime.Numerics (>= 4.3) + System.Security.Cryptography.Algorithms (>= 4.3) + System.Security.Cryptography.Cng (>= 4.3) + System.Security.Cryptography.Csp (>= 4.3) + System.Security.Cryptography.Encoding (>= 4.3) + System.Security.Cryptography.OpenSsl (>= 4.3) + System.Security.Cryptography.Primitives (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading (>= 4.3) + System.Text.Encoding (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Text.Encoding.CodePages (4.4) + System.Text.Encoding.Extensions (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Text.RegularExpressions (4.3) + System.Collections (>= 4.3) + System.Globalization (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Threading (4.3) + System.Runtime (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Threading.Tasks (4.3) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + System.Runtime (>= 4.3) + System.Threading.Tasks.Extensions (4.4) + System.Threading.Tasks.Parallel (4.3) + System.Collections.Concurrent (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Diagnostics.Tracing (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Threading.Thread (4.3) + System.Runtime (>= 4.3) + System.ValueTuple (4.4) + System.Xml.ReaderWriter (4.3.1) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.IO.FileSystem (>= 4.3) + System.IO.FileSystem.Primitives (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Runtime.InteropServices (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Text.Encoding.Extensions (>= 4.3) + System.Text.RegularExpressions (>= 4.3) + System.Threading.Tasks (>= 4.3) + System.Threading.Tasks.Extensions (>= 4.3) + System.Xml.XDocument (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Diagnostics.Tools (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Reflection (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XmlDocument (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Text.Encoding (>= 4.3) + System.Threading (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XPath (4.3) + System.Collections (>= 4.3) + System.Diagnostics.Debug (>= 4.3) + System.Globalization (>= 4.3) + System.IO (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XPath.XDocument (4.3) + System.Diagnostics.Debug (>= 4.3) + System.Linq (>= 4.3) + System.Resources.ResourceManager (>= 4.3) + System.Runtime (>= 4.3) + System.Runtime.Extensions (>= 4.3) + System.Threading (>= 4.3) + System.Xml.ReaderWriter (>= 4.3) + System.Xml.XDocument (>= 4.3) + System.Xml.XPath (>= 4.3)