diff --git a/Directory.Build.props b/Directory.Build.props index 59776860..9c07ffa3 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -8,7 +8,6 @@ © Microsoft Corporation. All rights reserved. true true - net7.0 $(MSBuildThisFileDirectory) diff --git a/azure-pipelines/build.yml b/azure-pipelines/build.yml index 443c42f4..9e869ff0 100644 --- a/azure-pipelines/build.yml +++ b/azure-pipelines/build.yml @@ -58,6 +58,18 @@ steps: inputs: useGlobalJson: true +- task: PowerShell@2 + displayName: 'Add version number to SqlCore project for packaging' + inputs: + targetType: 'inline' + script: | + $projectFile = '$(Build.SourcesDirectory)\src\Microsoft.SqlTools.SqlCore\Microsoft.SqlTools.SqlCore.csproj' + $props = New-Object XML + $props.Load($projectFile) + $version = ($(Major)).ToString() + '.' + ($(Minor)).ToString() + '.' + $(Patch) + $(Build.BuildNumber); + $props.Project.PropertyGroup.Version = $version; + $props.Save($projectFile) + - task: BatchScript@1 displayName: 'Run script build.cmd' inputs: @@ -104,7 +116,7 @@ steps: summaryFileLocation: '$(Agent.TempDirectory)/coverlet/reports/Cobertura.xml' - task: PowerShell@2 - displayName: 'Generate Nuspec Version' + displayName: 'Generate ManagedBatchParser Nuspec Version' inputs: targetType: 'inline' script: | @@ -163,7 +175,60 @@ steps: inputs: ConnectedServiceName: 'Code Signing' FolderPath: '$(Build.SourcesDirectory)/artifacts/publish' - Pattern: 'Microsoft.SqlTools.ManagedBatchParser.dll,MicrosoftSqlToolsCredentials.exe,MicrosoftSqlToolsServiceLayer.exe,SqlSerializationService.exe,SqlToolsResourceProviderService.exe,Microsoft.SqlTools.Hosting.dll,Microsoft.SqlTools.ResourceProvider.Core.dll,Microsoft.SqlTools.ResourceProvider.DefaultImpl.dll,MicrosoftSqlToolsCredentials.dll,MicrosoftSqlToolsServiceLayer.dll,Newtonsoft.Json.dll,SqlSerializationService.dll,SqlToolsResourceProviderService.dll,System.Data.SqlClient.dll,System.Net.Sockets.dll,MicrosoftSqlToolsMigration.exe,MicrosoftSqlToolsMigration.dll' + Pattern: 'Microsoft.SqlTools.ManagedBatchParser.dll,MicrosoftSqlToolsCredentials.exe,MicrosoftSqlToolsServiceLayer.exe,SqlSerializationService.exe,SqlToolsResourceProviderService.exe,Microsoft.SqlTools.Hosting.dll,Microsoft.SqlTools.ResourceProvider.Core.dll,Microsoft.SqlTools.ResourceProvider.DefaultImpl.dll,MicrosoftSqlToolsCredentials.dll,MicrosoftSqlToolsServiceLayer.dll,Newtonsoft.Json.dll,SqlSerializationService.dll,SqlToolsResourceProviderService.dll,System.Data.SqlClient.dll,System.Net.Sockets.dll,MicrosoftSqlToolsMigration.exe,MicrosoftSqlToolsMigration.dll,Microsoft.SqlTools.SqlCore.dll' + signConfigType: inlineSignParams + inlineOperation: | + [ + { + "keyCode": "CP-230012", + "operationSetCode": "SigntoolSign", + "parameters": [ + { + "parameterName": "OpusName", + "parameterValue": "SQL Tools Service" + }, + { + "parameterName": "OpusInfo", + "parameterValue": "https://github.com/microsoft/sqltoolsservice" + }, + { + "parameterName": "PageHash", + "parameterValue": "/NPH" + }, + { + "parameterName": "FileDigest", + "parameterValue": "/fd sha256" + }, + { + "parameterName": "TimeStamp", + "parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" + } + ], + "toolName": "signtool.exe", + "toolVersion": "6.2.9304.0" + }, + { + "keyCode": "CP-230012", + "operationSetCode": "SigntoolVerify", + "parameters": [ + { + "parameterName": "VerifyAll", + "parameterValue": "/all" + } + ], + "toolName": "signtool.exe", + "toolVersion": "6.2.9304.0" + } + ] + SessionTimeout: 600 + MaxConcurrency: 5 + +- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 + displayName: 'ESRP SqlCore CodeSigning - sha256 only' + inputs: + ConnectedServiceName: 'Code Signing' + FolderPath: '$(Build.SourcesDirectory)/src/Microsoft.SqlTools.SqlCore/bin/$(buildConfiguration)/netstandard2.0' + Pattern: '*.dll' signConfigType: inlineSignParams inlineOperation: | [ @@ -225,6 +290,13 @@ steps: filename: build.cmd arguments: "-target=dotnetpackservicetools -mono" +- task: DotNetCoreCLI@2 + displayName: 'dotnet pack sqlcore' + inputs: + command: custom + custom: pack + arguments: '--output $(Build.SourcesDirectory)\artifacts\nugetPackages --no-build --no-restore src\Microsoft.SqlTools.SqlCore\Microsoft.SqlTools.SqlCore.csproj' + - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 displayName: 'ESRP Code Signing - Nuget Package' inputs: @@ -290,6 +362,15 @@ steps: publishVstsFeed: '2191dd5f-4aec-491b-ac50-568bbc331c8a' allowPackageConflicts: true +- task: DotNetCoreCLI@2 + displayName: 'NuGet push SqlCore' + condition: eq(variables['RELEASE_SQLCORE'], 'true') + inputs: + command: push + packagesToPush: '$(Build.SourcesDirectory)/artifacts/nugetPackages/**/Microsoft.SqlTools.SqlCore.*.nupkg' + feedPublish: 'mssqltools' + allowPackageConflicts: true + - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 displayName: 'Component Detection' inputs: diff --git a/build.cake b/build.cake index 4fab22e2..b30fc615 100644 --- a/build.cake +++ b/build.cake @@ -37,8 +37,7 @@ var shellExtension = IsRunningOnWindows() ? "ps1" : "sh"; /// public class BuildPlan { - public string[] FxBuildProjects { get; set; } - public string[] FxFrameworks { get; set; } + public Project[] FxBuildProjects { get; set; } public IDictionary TestProjects { get; set; } public string BuildToolsFolder { get; set; } public string ArtifactsFolder { get; set; } @@ -63,6 +62,8 @@ public class Project public string Name { get; set; } public string[] PackageProjects { get; set; } public string[] TestProjects { get; set; } + public string[] Frameworks { get; set; } + public bool SkipPack { get; set; } } var buildPlan = JsonConvert.DeserializeObject( @@ -263,10 +264,10 @@ Task("BuildFx") { foreach (var project in buildPlan.FxBuildProjects) { - foreach (var framework in buildPlan.FxFrameworks) + foreach (var framework in project.Frameworks) { - var projectFolder = System.IO.Path.Combine(sourceFolder, project); - var logPath = System.IO.Path.Combine(logFolder, $"{project}-{framework}-build.log"); + var projectFolder = System.IO.Path.Combine(sourceFolder, project.Name); + var logPath = System.IO.Path.Combine(logFolder, $"{project.Name}-{framework}-build.log"); using (var logWriter = new StreamWriter(logPath)) { Run(dotnetcli, $"build --framework {framework} --configuration {configuration} \"{projectFolder}\"", new RunOptions @@ -274,7 +275,7 @@ Task("BuildFx") StandardOutputWriter = logWriter, StandardErrorWriter = logWriter }) - .ExceptionOnError($"Building test {project} failed for {framework}. See {logPath} for more details."); + .ExceptionOnError($"Building test {project.Name} failed for {framework}. See {logPath} for more details."); } } } @@ -308,10 +309,14 @@ Task("DotnetPackNuspec") { foreach (var project in buildPlan.FxBuildProjects) { + if (project.SkipPack != null && project.SkipPack) + { + continue; + } // For now, putting all nugets in the 1 directory var outputFolder = System.IO.Path.Combine(nugetPackageFolder); - var projectFolder = System.IO.Path.Combine(packagesFolder, project); - DotnetPackNuspec(outputFolder, projectFolder, project); + var projectFolder = System.IO.Path.Combine(packagesFolder, project.Name); + DotnetPackNuspec(outputFolder, projectFolder, project.Name); } }); @@ -469,9 +474,10 @@ void PublishProject(string packageName, string[] projects) } } - if (buildPlan.FxBuildProjects.Contains(project)) + if (buildPlan.FxBuildProjects.Any(p => p.Name == project)) { - foreach(var framework in buildPlan.FxFrameworks) + var projDefinition = buildPlan.FxBuildProjects.First(p => p.Name == project); + foreach(var framework in projDefinition.Frameworks) { var outputFolder = System.IO.Path.Combine(publishFolder, packageName, "default", framework); var publishArguments = "publish"; diff --git a/build.json b/build.json index 740f2b52..c657ca34 100644 --- a/build.json +++ b/build.json @@ -24,10 +24,6 @@ "Frameworks": [ "net7.0" ], - "FxFrameworks":[ - "net472", - "net7.0" - ], "MainProjects": [ "Microsoft.SqlTools.Credentials", "Microsoft.SqlTools.ResourceProvider", @@ -37,7 +33,20 @@ "Microsoft.SqlTools.Migration" ], "FxBuildProjects": [ - "Microsoft.SqlTools.ManagedBatchParser" + { + "Name": "Microsoft.SqlTools.ManagedBatchParser", + "Frameworks": [ + "net472", + "net7.0" + ] + }, + { + "Name": "Microsoft.SqlTools.SqlCore", + "Frameworks": [ + "netstandard2.0" + ], + "SkipPack": "true" + } ], "PackageProjects": [ "Microsoft.SqlTools.Hosting" diff --git a/docs/samples/jsonrpc/netcore/executequery/jsonrpc.csproj b/docs/samples/jsonrpc/netcore/executequery/jsonrpc.csproj index 46e2982e..2fbec776 100644 --- a/docs/samples/jsonrpc/netcore/executequery/jsonrpc.csproj +++ b/docs/samples/jsonrpc/netcore/executequery/jsonrpc.csproj @@ -1,6 +1,6 @@ - net6.0 + net7.0 Exe diff --git a/src/Microsoft.Kusto.ServiceLayer/Microsoft.Kusto.ServiceLayer.csproj b/src/Microsoft.Kusto.ServiceLayer/Microsoft.Kusto.ServiceLayer.csproj index 95078846..6fd92eb3 100644 --- a/src/Microsoft.Kusto.ServiceLayer/Microsoft.Kusto.ServiceLayer.csproj +++ b/src/Microsoft.Kusto.ServiceLayer/Microsoft.Kusto.ServiceLayer.csproj @@ -12,6 +12,7 @@ true true portable + net7.0 $(ToolsServiceTargetRuntimes) $(NoWarn);CS8795 diff --git a/src/Microsoft.SqlTools.Authentication/Microsoft.SqlTools.Authentication.csproj b/src/Microsoft.SqlTools.Authentication/Microsoft.SqlTools.Authentication.csproj index b86e3871..d564ad80 100644 --- a/src/Microsoft.SqlTools.Authentication/Microsoft.SqlTools.Authentication.csproj +++ b/src/Microsoft.SqlTools.Authentication/Microsoft.SqlTools.Authentication.csproj @@ -3,6 +3,7 @@ enable enable + net7.0 diff --git a/src/Microsoft.SqlTools.Credentials/Microsoft.SqlTools.Credentials.csproj b/src/Microsoft.SqlTools.Credentials/Microsoft.SqlTools.Credentials.csproj index 2959b390..bc93a762 100644 --- a/src/Microsoft.SqlTools.Credentials/Microsoft.SqlTools.Credentials.csproj +++ b/src/Microsoft.SqlTools.Credentials/Microsoft.SqlTools.Credentials.csproj @@ -18,6 +18,7 @@ This is a Diagnostic Alert .NET 7 onwards.Changing to LibraryImportAttribute would require additional code changes, therefore this warning is suppressed.--> $(NoWarn);SYSLIB1054 + net7.0 diff --git a/src/Microsoft.SqlTools.Hosting/Extensibility/ExtensionServiceProvider.cs b/src/Microsoft.SqlTools.Hosting/Extensibility/ExtensionServiceProvider.cs index a68ae552..573b4a87 100644 --- a/src/Microsoft.SqlTools.Hosting/Extensibility/ExtensionServiceProvider.cs +++ b/src/Microsoft.SqlTools.Hosting/Extensibility/ExtensionServiceProvider.cs @@ -24,7 +24,8 @@ namespace Microsoft.SqlTools.Extensibility "microsofsqltoolscredentials.dll", "microsoft.sqltools.hosting.dll", "microsoftsqltoolsservicelayer.dll", - "microsoftkustoservicelayer.dll" + "microsoftkustoservicelayer.dll", + "microsoft.sqltools.sqlcore.dll" }; private Func config; diff --git a/src/Microsoft.SqlTools.Hosting/Hosting/Protocol/ProtocolEndpoint.cs b/src/Microsoft.SqlTools.Hosting/Hosting/Protocol/ProtocolEndpoint.cs index efbfa67e..15af2fc8 100644 --- a/src/Microsoft.SqlTools.Hosting/Hosting/Protocol/ProtocolEndpoint.cs +++ b/src/Microsoft.SqlTools.Hosting/Hosting/Protocol/ProtocolEndpoint.cs @@ -121,7 +121,11 @@ namespace Microsoft.SqlTools.Hosting.Protocol public async Task WaitForExitAsync() { this.endpointExitedTask = new TaskCompletionSource(); +#if NETSTANDARD2_0 + await this.endpointExitedTask.Task; +#else await this.endpointExitedTask.Task.WaitAsync(CancellationToken.None); +#endif } public async Task Stop() diff --git a/src/Microsoft.SqlTools.Hosting/Microsoft.SqlTools.Hosting.csproj b/src/Microsoft.SqlTools.Hosting/Microsoft.SqlTools.Hosting.csproj index d45ca34f..f5166cd1 100644 --- a/src/Microsoft.SqlTools.Hosting/Microsoft.SqlTools.Hosting.csproj +++ b/src/Microsoft.SqlTools.Hosting/Microsoft.SqlTools.Hosting.csproj @@ -11,6 +11,8 @@ true SqlTools Hosting Library Provides hosting services for SqlTools applications. + netstandard2.0;net7.0 + 8.0 diff --git a/src/Microsoft.SqlTools.Hosting/Utility/Logger.cs b/src/Microsoft.SqlTools.Hosting/Utility/Logger.cs index ede1d207..bbd1f47b 100644 --- a/src/Microsoft.SqlTools.Hosting/Utility/Logger.cs +++ b/src/Microsoft.SqlTools.Hosting/Utility/Logger.cs @@ -202,7 +202,11 @@ namespace Microsoft.SqlTools.Utility int uniqueId; try { +#if NETSTANDARD2_0 + uniqueId = Process.GetCurrentProcess().Id; +#else uniqueId = Environment.ProcessId; +#endif } catch (Exception ex) { @@ -256,8 +260,10 @@ namespace Microsoft.SqlTools.Utility /// Writes a PII message to the log file with the Verbose event level when PII flag is enabled. /// /// The message text to be written. - public static void Pii(string logMessage) { - if (IsPiiEnabled) { + public static void Pii(string logMessage) + { + if (IsPiiEnabled) + { Write(TraceEventType.Verbose, logMessage); } } diff --git a/src/Microsoft.SqlTools.Hosting/Utility/SqlClientEventListener.cs b/src/Microsoft.SqlTools.Hosting/Utility/SqlClientEventListener.cs index e38910d6..c9ac4dcd 100644 --- a/src/Microsoft.SqlTools.Hosting/Utility/SqlClientEventListener.cs +++ b/src/Microsoft.SqlTools.Hosting/Utility/SqlClientEventListener.cs @@ -3,6 +3,9 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. // +#if NETSTANDARD2_0 +using System; +#endif using System.Diagnostics.Tracing; using Microsoft.SqlTools.Utility; @@ -41,7 +44,11 @@ namespace Microsoft.SqlTools.ServiceLayer.Utility { if (payload != null) { +#if NETSTANDARD2_0_OR_GREATER + Logger.Verbose($"eventTID:{Environment.CurrentManagedThreadId} {payload.ToString()}"); +#else Logger.Verbose($"eventTID:{eventData.OSThreadId} {payload.ToString()}"); +#endif } } diff --git a/src/Microsoft.SqlTools.ManagedBatchParser/Microsoft.SqlTools.ManagedBatchParser.csproj b/src/Microsoft.SqlTools.ManagedBatchParser/Microsoft.SqlTools.ManagedBatchParser.csproj index bc267fa4..c76a9704 100644 --- a/src/Microsoft.SqlTools.ManagedBatchParser/Microsoft.SqlTools.ManagedBatchParser.csproj +++ b/src/Microsoft.SqlTools.ManagedBatchParser/Microsoft.SqlTools.ManagedBatchParser.csproj @@ -37,6 +37,7 @@ version=$(PackageVersion) $(NoWarn);CA1852 + net7.0 diff --git a/src/Microsoft.SqlTools.Migration/Microsoft.SqlTools.Migration.csproj b/src/Microsoft.SqlTools.Migration/Microsoft.SqlTools.Migration.csproj index 98d04dd9..283ffc73 100644 --- a/src/Microsoft.SqlTools.Migration/Microsoft.SqlTools.Migration.csproj +++ b/src/Microsoft.SqlTools.Migration/Microsoft.SqlTools.Migration.csproj @@ -16,6 +16,7 @@ false SqlTools Migration Host Protocol Library Provides message types and client/server APIs for the SqlTools Migration Services JSON protocol. + net7.0 true diff --git a/src/Microsoft.SqlTools.ResourceProvider.Core/Microsoft.SqlTools.ResourceProvider.Core.csproj b/src/Microsoft.SqlTools.ResourceProvider.Core/Microsoft.SqlTools.ResourceProvider.Core.csproj index 2c18f076..8d2f71d6 100644 --- a/src/Microsoft.SqlTools.ResourceProvider.Core/Microsoft.SqlTools.ResourceProvider.Core.csproj +++ b/src/Microsoft.SqlTools.ResourceProvider.Core/Microsoft.SqlTools.ResourceProvider.Core.csproj @@ -9,6 +9,7 @@ Library Provides Resource Provider and control plane services for SqlTools applications. + net7.0 diff --git a/src/Microsoft.SqlTools.ResourceProvider.DefaultImpl/Microsoft.SqlTools.ResourceProvider.DefaultImpl.csproj b/src/Microsoft.SqlTools.ResourceProvider.DefaultImpl/Microsoft.SqlTools.ResourceProvider.DefaultImpl.csproj index 70d80f68..de1d32e7 100644 --- a/src/Microsoft.SqlTools.ResourceProvider.DefaultImpl/Microsoft.SqlTools.ResourceProvider.DefaultImpl.csproj +++ b/src/Microsoft.SqlTools.ResourceProvider.DefaultImpl/Microsoft.SqlTools.ResourceProvider.DefaultImpl.csproj @@ -12,6 +12,7 @@ � Microsoft Corporation. All rights reserved. $(NoWarn);CA1852 + net7.0 diff --git a/src/Microsoft.SqlTools.ResourceProvider/Microsoft.SqlTools.ResourceProvider.csproj b/src/Microsoft.SqlTools.ResourceProvider/Microsoft.SqlTools.ResourceProvider.csproj index 3dc30e54..73139317 100644 --- a/src/Microsoft.SqlTools.ResourceProvider/Microsoft.SqlTools.ResourceProvider.csproj +++ b/src/Microsoft.SqlTools.ResourceProvider/Microsoft.SqlTools.ResourceProvider.csproj @@ -12,6 +12,7 @@ false false $(ToolsServiceTargetRuntimes) + net7.0 $(NoWarn);CA1852 diff --git a/src/Microsoft.SqlTools.ServiceLayer/HostLoader.cs b/src/Microsoft.SqlTools.ServiceLayer/HostLoader.cs index ab3fa505..1fca38af 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/HostLoader.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/HostLoader.cs @@ -83,7 +83,7 @@ namespace Microsoft.SqlTools.ServiceLayer "microsofsqltoolscredentials.dll", "microsoft.sqltools.hosting.dll", "microsoftsqltoolsservicelayer.dll", - "microsoftsqltoolssqlcore.dll" + "microsoft.sqltools.sqlcore.dll" }); serviceProvider.RegisterSingleService(sqlToolsContext); serviceProvider.RegisterSingleService(serviceHost); diff --git a/src/Microsoft.SqlTools.ServiceLayer/Microsoft.SqlTools.ServiceLayer.csproj b/src/Microsoft.SqlTools.ServiceLayer/Microsoft.SqlTools.ServiceLayer.csproj index 81a0f158..fcf8bc2d 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Microsoft.SqlTools.ServiceLayer.csproj +++ b/src/Microsoft.SqlTools.ServiceLayer/Microsoft.SqlTools.ServiceLayer.csproj @@ -16,6 +16,7 @@ Provides message types and client/server APIs for the SqlTools Editor Services JSON protocol. $(NoWarn);CS8795 + net7.0 diff --git a/src/Microsoft.SqlTools.Shared/Microsoft.SqlTools.Shared.csproj b/src/Microsoft.SqlTools.Shared/Microsoft.SqlTools.Shared.csproj index 084c4ff0..d2a8e228 100644 --- a/src/Microsoft.SqlTools.Shared/Microsoft.SqlTools.Shared.csproj +++ b/src/Microsoft.SqlTools.Shared/Microsoft.SqlTools.Shared.csproj @@ -3,6 +3,7 @@ enable enable + net7.0 diff --git a/src/Microsoft.SqlTools.SqlCore/Microsoft.SqlTools.SqlCore.csproj b/src/Microsoft.SqlTools.SqlCore/Microsoft.SqlTools.SqlCore.csproj index 101b6242..18d63342 100644 --- a/src/Microsoft.SqlTools.SqlCore/Microsoft.SqlTools.SqlCore.csproj +++ b/src/Microsoft.SqlTools.SqlCore/Microsoft.SqlTools.SqlCore.csproj @@ -12,6 +12,10 @@ true SqlTools SqlCore Library Provides core sql functionality for SQL server editors like Object explorer, Query Execution and Scripting + netstandard2.0 + 8.0 + Microsoft.SqlTools.SqlCore + 1.0.0 @@ -21,7 +25,7 @@ - + diff --git a/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/INodeFilter.cs b/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/INodeFilter.cs index 8530eae6..c33463bb 100644 --- a/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/INodeFilter.cs +++ b/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/INodeFilter.cs @@ -13,7 +13,7 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.Nodes /// /// Has information for filtering a SMO object by properties /// - public interface INodeFilter + public abstract class INodeFilter { /// /// Returns true if the filter can be apply to the given type and Server type @@ -21,15 +21,15 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.Nodes /// Type of the querier /// Server Type /// - bool CanApplyFilter(Type type, ValidForFlag validForFlag); + public abstract bool CanApplyFilter(Type type, ValidForFlag validForFlag); /// /// Creates a string from the filter property and values to be used in the Urn to query the SQL objects /// Example of the output:[@ IsSystemObject = 0] /// /// - string ToPropertyFilterString(Type type, ValidForFlag validForFlag); - + public abstract string ToPropertyFilterString(Type type, ValidForFlag validForFlag); + /// /// Creates a fully paramaterized property filter string for the URN query for SQL objects. /// Example of the output:[@ IsSystemObject = 0] diff --git a/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/NodeOrFilter.cs b/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/NodeOrFilter.cs index 5d2df215..2deb0702 100644 --- a/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/NodeOrFilter.cs +++ b/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/NodeOrFilter.cs @@ -24,7 +24,7 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.Nodes /// /// Type of the querier /// Server Type - public bool CanApplyFilter(Type type, ValidForFlag validForFlag) { + public override bool CanApplyFilter(Type type, ValidForFlag validForFlag) { return this.FilterList.Exists(f => f.CanApplyFilter(type, validForFlag)); } @@ -33,7 +33,7 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.Nodes /// Example of the output: ((@TableTemporalType = 1) or (@LedgerTableType = 1)) /// /// - public string ToPropertyFilterString(Type type, ValidForFlag validForFlag) + public override string ToPropertyFilterString(Type type, ValidForFlag validForFlag) { StringBuilder filter = new StringBuilder(); foreach (var nodeFilter in FilterList) diff --git a/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/NodePropertyFilter.cs b/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/NodePropertyFilter.cs index 222036f2..516ed11e 100644 --- a/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/NodePropertyFilter.cs +++ b/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/NodePropertyFilter.cs @@ -64,7 +64,7 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.Nodes /// Type of the querier /// Server Type /// - public bool CanApplyFilter(Type type, ValidForFlag validForFlag) + public override bool CanApplyFilter(Type type, ValidForFlag validForFlag) { bool canApplyFilter = false; canApplyFilter = TypeToReverse == null || TypeToReverse == type; @@ -78,7 +78,7 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.Nodes /// Example of the output: (@ IsSystemObject = 0) /// /// - public string ToPropertyFilterString(Type type, ValidForFlag validForFlag) + public override string ToPropertyFilterString(Type type, ValidForFlag validForFlag) { // check first if the filter can be applied; if not just return empty string if (!CanApplyFilter(type, validForFlag)) @@ -186,7 +186,10 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.Nodes var escapedString = StringUtils.EscapeStringSQuote(propertyValue.ToString()); if (this.FilterType == FilterType.STARTSWITH || this.FilterType == FilterType.ENDSWITH) { - escapedString = EscapeLikeURNRegex().Replace(escapedString, "[$0]"); + // For filters that use the LIKE operator, we need to escape the following characters: %, _, [, ^ + // we do this by wrapping them in square brackets eg: [%], [_], [[], [^] + Regex escapteSqlObjectChars = new Regex(@"%|_|\[|\^"); + escapedString = escapteSqlObjectChars.Replace(escapedString, "[$0]"); if (this.FilterType == FilterType.STARTSWITH) { @@ -283,11 +286,6 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.Nodes return false; } } - - // For filters that use the LIKE operator, we need to escape the following characters: %, _, [, ^ - // we do this by wrapping them in square brackets eg: [%], [_], [[], [^] - [GeneratedRegexAttribute(@"%|_|\[|\^")] - public static partial Regex EscapeLikeURNRegex(); } public enum FilterType diff --git a/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/TreeNode.cs b/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/TreeNode.cs index 2dbe8b90..779bf302 100644 --- a/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/TreeNode.cs +++ b/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/Nodes/TreeNode.cs @@ -323,7 +323,7 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.Nodes } } } - ApplicableNodeChildFactories = new Lazy>>(factories); + ApplicableNodeChildFactories = new Lazy>>(() => factories); } public IEnumerable GetApplicableChildFactories() diff --git a/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/SmoModel/NodePathGenerator.cs b/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/SmoModel/NodePathGenerator.cs index 9758b4b4..a0010896 100644 --- a/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/SmoModel/NodePathGenerator.cs +++ b/src/Microsoft.SqlTools.SqlCore/ObjectExplorer/SmoModel/NodePathGenerator.cs @@ -42,7 +42,9 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.SmoModel { NodeTypeDictionary.Add(containedType, new HashSet()); } - NodeTypeDictionary.GetValueOrDefault(containedType).Add(node); + HashSet nodeSet; + NodeTypeDictionary.TryGetValue(containedType, out nodeSet); + nodeSet.Add(node); } } var serverNode = TreeRoot.Nodes.FirstOrDefault(node => node.Name == "Server"); @@ -59,7 +61,8 @@ namespace Microsoft.SqlTools.SqlCore.ObjectExplorer.SmoModel } var returnSet = new HashSet(); - var matchingNodes = NodeTypeDictionary.GetValueOrDefault(typeName); + HashSet matchingNodes; + NodeTypeDictionary.TryGetValue(typeName, out matchingNodes); if (matchingNodes == null) { return returnSet; diff --git a/test/Microsoft.Kusto.ServiceLayer.UnitTests/Microsoft.Kusto.ServiceLayer.UnitTests.csproj b/test/Microsoft.Kusto.ServiceLayer.UnitTests/Microsoft.Kusto.ServiceLayer.UnitTests.csproj index dcfa5551..cf3093e1 100644 --- a/test/Microsoft.Kusto.ServiceLayer.UnitTests/Microsoft.Kusto.ServiceLayer.UnitTests.csproj +++ b/test/Microsoft.Kusto.ServiceLayer.UnitTests/Microsoft.Kusto.ServiceLayer.UnitTests.csproj @@ -2,6 +2,7 @@ false + net7.0 diff --git a/test/Microsoft.SqlTools.ManagedBatchParser.IntegrationTests/Microsoft.SqlTools.ManagedBatchParser.IntegrationTests.csproj b/test/Microsoft.SqlTools.ManagedBatchParser.IntegrationTests/Microsoft.SqlTools.ManagedBatchParser.IntegrationTests.csproj index 783deb63..4b89120f 100644 --- a/test/Microsoft.SqlTools.ManagedBatchParser.IntegrationTests/Microsoft.SqlTools.ManagedBatchParser.IntegrationTests.csproj +++ b/test/Microsoft.SqlTools.ManagedBatchParser.IntegrationTests/Microsoft.SqlTools.ManagedBatchParser.IntegrationTests.csproj @@ -6,6 +6,7 @@ Microsoft.SqlTools.ManagedBatchParser.IntegrationTests true $(DefineConstants);TRACE + net7.0 diff --git a/test/Microsoft.SqlTools.Migration.IntegrationTests/Microsoft.SqlTools.Migration.IntegrationTests.csproj b/test/Microsoft.SqlTools.Migration.IntegrationTests/Microsoft.SqlTools.Migration.IntegrationTests.csproj index 5a7522b1..9a221f69 100644 --- a/test/Microsoft.SqlTools.Migration.IntegrationTests/Microsoft.SqlTools.Migration.IntegrationTests.csproj +++ b/test/Microsoft.SqlTools.Migration.IntegrationTests/Microsoft.SqlTools.Migration.IntegrationTests.csproj @@ -6,6 +6,7 @@ Microsoft.SqlTools.Migration.IntegrationTests true $(DefineConstants);TRACE + net7.0 diff --git a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Microsoft.SqlTools.ServiceLayer.IntegrationTests.csproj b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Microsoft.SqlTools.ServiceLayer.IntegrationTests.csproj index 48484074..b58ea56d 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Microsoft.SqlTools.ServiceLayer.IntegrationTests.csproj +++ b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Microsoft.SqlTools.ServiceLayer.IntegrationTests.csproj @@ -6,6 +6,7 @@ Microsoft.SqlTools.ServiceLayer.IntegrationTests true $(DefineConstants);TRACE + net7.0 diff --git a/test/Microsoft.SqlTools.ServiceLayer.PerfTests/Microsoft.SqlTools.ServiceLayer.PerfTests.csproj b/test/Microsoft.SqlTools.ServiceLayer.PerfTests/Microsoft.SqlTools.ServiceLayer.PerfTests.csproj index 601e1d26..5a2a50ac 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.PerfTests/Microsoft.SqlTools.ServiceLayer.PerfTests.csproj +++ b/test/Microsoft.SqlTools.ServiceLayer.PerfTests/Microsoft.SqlTools.ServiceLayer.PerfTests.csproj @@ -11,6 +11,7 @@ Microsoft.SqlTools.ServiceLayer.PerfTests.Program true true + net7.0 diff --git a/test/Microsoft.SqlTools.ServiceLayer.Test.Common/Microsoft.SqlTools.ServiceLayer.Test.Common.csproj b/test/Microsoft.SqlTools.ServiceLayer.Test.Common/Microsoft.SqlTools.ServiceLayer.Test.Common.csproj index c5f955ce..ee29b221 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.Test.Common/Microsoft.SqlTools.ServiceLayer.Test.Common.csproj +++ b/test/Microsoft.SqlTools.ServiceLayer.Test.Common/Microsoft.SqlTools.ServiceLayer.Test.Common.csproj @@ -5,6 +5,7 @@ false $(DefineConstants);NETCOREAPP1_0;TRACE false + net7.0 diff --git a/test/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests.csproj b/test/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests.csproj index c1217636..cb09ea67 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests.csproj +++ b/test/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests/Microsoft.SqlTools.ServiceLayer.TestDriver.Tests.csproj @@ -10,6 +10,7 @@ false false true + net7.0 diff --git a/test/Microsoft.SqlTools.ServiceLayer.TestDriver/Microsoft.SqlTools.ServiceLayer.TestDriver.csproj b/test/Microsoft.SqlTools.ServiceLayer.TestDriver/Microsoft.SqlTools.ServiceLayer.TestDriver.csproj index 0eb22f7f..0e24e51d 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.TestDriver/Microsoft.SqlTools.ServiceLayer.TestDriver.csproj +++ b/test/Microsoft.SqlTools.ServiceLayer.TestDriver/Microsoft.SqlTools.ServiceLayer.TestDriver.csproj @@ -6,6 +6,7 @@ false $(DefineConstants);NETCOREAPP1_0 false + net7.0 diff --git a/test/Microsoft.SqlTools.ServiceLayer.TestEnvConfig/Microsoft.SqlTools.ServiceLayer.TestEnvConfig.csproj b/test/Microsoft.SqlTools.ServiceLayer.TestEnvConfig/Microsoft.SqlTools.ServiceLayer.TestEnvConfig.csproj index 0db2d487..de06a3b5 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.TestEnvConfig/Microsoft.SqlTools.ServiceLayer.TestEnvConfig.csproj +++ b/test/Microsoft.SqlTools.ServiceLayer.TestEnvConfig/Microsoft.SqlTools.ServiceLayer.TestEnvConfig.csproj @@ -7,6 +7,7 @@ false false false + net7.0 true diff --git a/test/Microsoft.SqlTools.ServiceLayer.UnitTests/Microsoft.SqlTools.ServiceLayer.UnitTests.csproj b/test/Microsoft.SqlTools.ServiceLayer.UnitTests/Microsoft.SqlTools.ServiceLayer.UnitTests.csproj index 0179e522..2db56a47 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.UnitTests/Microsoft.SqlTools.ServiceLayer.UnitTests.csproj +++ b/test/Microsoft.SqlTools.ServiceLayer.UnitTests/Microsoft.SqlTools.ServiceLayer.UnitTests.csproj @@ -8,6 +8,7 @@ $(NoWarn);CS8795 + net7.0 diff --git a/test/Microsoft.SqlTools.Test.CompletionExtension/Microsoft.SqlTools.Test.CompletionExtension.csproj b/test/Microsoft.SqlTools.Test.CompletionExtension/Microsoft.SqlTools.Test.CompletionExtension.csproj index a90212a6..01188c71 100644 --- a/test/Microsoft.SqlTools.Test.CompletionExtension/Microsoft.SqlTools.Test.CompletionExtension.csproj +++ b/test/Microsoft.SqlTools.Test.CompletionExtension/Microsoft.SqlTools.Test.CompletionExtension.csproj @@ -6,6 +6,7 @@ Microsoft.SqlTools.Test.CompletionExtension true $(DefineConstants);TRACE + net7.0 diff --git a/test/ScriptGenerator/ScriptGenerator.csproj b/test/ScriptGenerator/ScriptGenerator.csproj index c9d292be..7b074e55 100644 --- a/test/ScriptGenerator/ScriptGenerator.csproj +++ b/test/ScriptGenerator/ScriptGenerator.csproj @@ -2,6 +2,7 @@ Exe + net7.0