From febac92ce901d2a3a2de7b902e154a2d304806ec Mon Sep 17 00:00:00 2001 From: Devis Lucato Date: Tue, 28 Feb 2023 21:46:29 -0800 Subject: [PATCH 1/2] Bump version to 0.8 Add Microsoft.VisualStudio.Threading code analyzer Add more code checks, e.g. platform type Fix exceptions style Minor fix to Editor config --- .editorconfig | 74 ++++++++++--------- dotnet/Directory.Packages.props | 6 ++ dotnet/SK-dotnet.sln.DotSettings | 1 + .../Skills.Document/Skills.Document.csproj | 2 +- .../Skills.Memory.Sqlite.csproj | 2 +- .../LocalUserMSALCredentialManager.cs | 4 +- .../Exceptions/MsGraphConnectorException.cs | 5 ++ .../Skills.MsGraph/Skills.MsGraph.csproj | 2 +- .../Skills.Web/Skills.Web.csproj | 2 +- dotnet/src/SemanticKernel/AI/AIException.cs | 21 +++++- .../AI/OpenAI/Clients/OpenAIClientAbstract.cs | 4 +- .../SemanticKernel/CoreSkills/HttpSkill.cs | 4 + .../SemanticKernel/Diagnostics/Exception.cs | 29 +++++++- .../Diagnostics/ValidationException.cs | 21 +++++- dotnet/src/SemanticKernel/KernelException.cs | 21 +++++- .../src/SemanticKernel/Memory/NullMemory.cs | 5 +- .../Planning/PlanningException.cs | 21 +++++- .../src/SemanticKernel/SemanticKernel.csproj | 2 +- .../TemplateEngine/TemplateException.cs | 31 ++++++++ .../Utils/YourAppException.cs | 8 ++ .../RepoUtils/YourAppException.cs | 8 ++ 21 files changed, 223 insertions(+), 50 deletions(-) diff --git a/.editorconfig b/.editorconfig index 79353ef9cc9c..a4d02850edae 100644 --- a/.editorconfig +++ b/.editorconfig @@ -91,14 +91,15 @@ dotnet_style_prefer_conditional_expression_over_return = true:silent dotnet_style_prefer_simplified_interpolation = true:suggestion dotnet_style_operator_placement_when_wrapping = beginning_of_line dotnet_style_namespace_match_folder = true:suggestion +dotnet_style_prefer_simplified_boolean_expressions = true:suggestion +dotnet_style_prefer_compound_assignment = true:suggestion # Code quality rules dotnet_code_quality_unused_parameters = all:suggestion # Suppressed diagnostics dotnet_diagnostic.CA1002.severity = none # Change 'List' in '...' to use 'Collection' ... -dotnet_diagnostic.CA1032.severity = none # Add the following constructor to ...Exception: public ... dotnet_diagnostic.CA1034.severity = none # Do not nest type. Alternatively, change its accessibility so that it is not externally visible -dotnet_diagnostic.CA1062.severity = none # Disable null check, C# already does it for usdotnet_diagnostic.CA1416.severity = silent # Validate platform compatibility +dotnet_diagnostic.CA1062.severity = none # Disable null check, C# already does it for us dotnet_diagnostic.CA1303.severity = none # Do not pass literals as localized parameters dotnet_diagnostic.CS1591.severity = none # Missing XML comment for publicly visible type or member dotnet_diagnostic.CA1805.severity = none # Member is explicitly initialized to its default value @@ -113,8 +114,10 @@ dotnet_diagnostic.CA2253.severity = none # Named placeholders in the logging mes # Diagnostics elevated as warnings dotnet_diagnostic.CA1000.severity = warning # Do not declare static members on generic types dotnet_diagnostic.CA1031.severity = warning # Do not catch general exception types +dotnet_diagnostic.CA1032.severity = warning # Add the following constructor to ...Exception: public ... dotnet_diagnostic.CA1063.severity = warning # Implement IDisposable correctly dotnet_diagnostic.CA1064.severity = warning # Exceptions should be public +dotnet_diagnostic.CA1416.severity = warning # Validate platform compatibility dotnet_diagnostic.CA1508.severity = warning # Avoid dead conditional code dotnet_diagnostic.CA2000.severity = warning # Call System.IDisposable.Dispose on object before all references to it are out of scope dotnet_diagnostic.CA2201.severity = warning # Exception type System.Exception is not sufficiently specific @@ -123,55 +126,56 @@ dotnet_diagnostic.CA2201.severity = warning # Exception type System.Exception is ############################### # Naming Conventions # ############################### -# Style Definitions -dotnet_naming_style.pascal_case_style.capitalization = pascal_case -# Use PascalCase for constant fields -dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = error -dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields -dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style -# Define the 'constant_fields' symbol group: -dotnet_naming_symbols.constant_fields.applicable_kinds = field + +# Styles + +dotnet_naming_style.pascal_case_style.capitalization = pascal_case + +dotnet_naming_style.static_underscored.capitalization = camel_case +dotnet_naming_style.static_underscored.required_prefix = s_ + +dotnet_naming_style.underscored.capitalization = camel_case +dotnet_naming_style.underscored.required_prefix = _ + +dotnet_naming_style.end_in_async.required_prefix = +dotnet_naming_style.end_in_async.required_suffix = Async +dotnet_naming_style.end_in_async.capitalization = pascal_case +dotnet_naming_style.end_in_async.word_separator = + +# Symbols + +dotnet_naming_symbols.constant_fields.applicable_kinds = field dotnet_naming_symbols.constant_fields.applicable_accessibilities = * -dotnet_naming_symbols.constant_fields.required_modifiers = const +dotnet_naming_symbols.constant_fields.required_modifiers = const -# Define the 'private_static_fields' symbol group dotnet_naming_symbols.private_static_fields.applicable_kinds = field dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private dotnet_naming_symbols.private_static_fields.required_modifiers = static -# Define the 'static_underscored' naming style -dotnet_naming_style.static_underscored.capitalization = camel_case -dotnet_naming_style.static_underscored.required_prefix = s_ -# Define the 'private_static_fields_underscored' naming rule + +dotnet_naming_symbols.private_fields.applicable_kinds = field +dotnet_naming_symbols.private_fields.applicable_accessibilities = private + +dotnet_naming_symbols.any_async_methods.applicable_kinds = method +dotnet_naming_symbols.any_async_methods.applicable_accessibilities = * +dotnet_naming_symbols.any_async_methods.required_modifiers = async + +# Rules + +dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = error +dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields +dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style + dotnet_naming_rule.private_static_fields_underscored.symbols = private_static_fields dotnet_naming_rule.private_static_fields_underscored.style = static_underscored dotnet_naming_rule.private_static_fields_underscored.severity = error -# Define the 'private_fields' symbol group: -dotnet_naming_symbols.private_fields.applicable_kinds = field -dotnet_naming_symbols.private_fields.applicable_accessibilities = private -# Define the 'underscored' naming style -dotnet_naming_style.underscored.capitalization = camel_case -dotnet_naming_style.underscored.required_prefix = _ -# Define the 'private_fields_underscored' naming rule dotnet_naming_rule.private_fields_underscored.symbols = private_fields dotnet_naming_rule.private_fields_underscored.style = underscored dotnet_naming_rule.private_fields_underscored.severity = error -# Define the 'any_async_methods' symbol group -dotnet_naming_symbols.any_async_methods.applicable_kinds = method -dotnet_naming_symbols.any_async_methods.applicable_accessibilities = * -dotnet_naming_symbols.any_async_methods.required_modifiers = async -# Define the 'end_in_async' naming style -dotnet_naming_style.end_in_async.required_prefix = -dotnet_naming_style.end_in_async.required_suffix = Async -dotnet_naming_style.end_in_async.capitalization = pascal_case -dotnet_naming_style.end_in_async.word_separator = -# Define the 'async_methods_end_in_async' naming rule dotnet_naming_rule.async_methods_end_in_async.symbols = any_async_methods dotnet_naming_rule.async_methods_end_in_async.style = end_in_async dotnet_naming_rule.async_methods_end_in_async.severity = error -dotnet_style_prefer_simplified_boolean_expressions = true:suggestion -dotnet_style_prefer_compound_assignment = true:suggestion ############################### # C# Coding Conventions # diff --git a/dotnet/Directory.Packages.props b/dotnet/Directory.Packages.props index 9d8850b67152..1341ba9b74c6 100644 --- a/dotnet/Directory.Packages.props +++ b/dotnet/Directory.Packages.props @@ -35,5 +35,11 @@ + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + \ No newline at end of file diff --git a/dotnet/SK-dotnet.sln.DotSettings b/dotnet/SK-dotnet.sln.DotSettings index cdda35171d85..2a3dbe8962f5 100644 --- a/dotnet/SK-dotnet.sln.DotSettings +++ b/dotnet/SK-dotnet.sln.DotSettings @@ -172,6 +172,7 @@ public void It$SOMENAME$() copy // Copyright (c) Microsoft. All rights reserved. + True True True True diff --git a/dotnet/src/SemanticKernel.Skills/Skills.Document/Skills.Document.csproj b/dotnet/src/SemanticKernel.Skills/Skills.Document/Skills.Document.csproj index d30ed0ffcc87..3ee793a4bf6a 100644 --- a/dotnet/src/SemanticKernel.Skills/Skills.Document/Skills.Document.csproj +++ b/dotnet/src/SemanticKernel.Skills/Skills.Document/Skills.Document.csproj @@ -15,7 +15,7 @@ Microsoft.SemanticKernel.Skills.Document Semantic Kernel - OpenXml Connector - 0.7 + 0.8 diff --git a/dotnet/src/SemanticKernel.Skills/Skills.Memory.Sqlite/Skills.Memory.Sqlite.csproj b/dotnet/src/SemanticKernel.Skills/Skills.Memory.Sqlite/Skills.Memory.Sqlite.csproj index 97730e5981a1..03e35f27c8a4 100644 --- a/dotnet/src/SemanticKernel.Skills/Skills.Memory.Sqlite/Skills.Memory.Sqlite.csproj +++ b/dotnet/src/SemanticKernel.Skills/Skills.Memory.Sqlite/Skills.Memory.Sqlite.csproj @@ -15,7 +15,7 @@ Microsoft.SemanticKernel.Skills.Memory.Sqlite Semantic Kernel - SQLite Connector - 0.7 + 0.8 diff --git a/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Connectors/CredentialManagers/LocalUserMSALCredentialManager.cs b/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Connectors/CredentialManagers/LocalUserMSALCredentialManager.cs index cdd26084834b..9a36e09d91f0 100644 --- a/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Connectors/CredentialManagers/LocalUserMSALCredentialManager.cs +++ b/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Connectors/CredentialManagers/LocalUserMSALCredentialManager.cs @@ -57,10 +57,12 @@ public LocalUserMSALCredentialManager() attribute2: new KeyValuePair("Product", "SemanticKernel")) .Build(); - // TODO: remove sync wait, may cause deadlock, use await or JoinableTaskFactory.Run + // TODO: remove sync wait, may cause deadlock +#pragma warning disable VSTHRD002 // Synchronously waiting on tasks or awaiters may cause deadlocks. Use await or JoinableTaskFactory.Run instead. this._cacheHelper = MsalCacheHelper.CreateAsync(this._storageProperties) .GetAwaiter() .GetResult(); +#pragma warning restore VSTHRD002 this._cacheHelper.VerifyPersistence(); } diff --git a/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Connectors/Exceptions/MsGraphConnectorException.cs b/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Connectors/Exceptions/MsGraphConnectorException.cs index 2b9dff6bc765..0eb430b38926 100644 --- a/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Connectors/Exceptions/MsGraphConnectorException.cs +++ b/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Connectors/Exceptions/MsGraphConnectorException.cs @@ -25,4 +25,9 @@ public MsGraphConnectorException(string message) : base(message) public MsGraphConnectorException(string message, Exception innerException) : base(message, innerException) { } + + private MsGraphConnectorException() + { + // Do not use, error message is required + } } diff --git a/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Skills.MsGraph.csproj b/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Skills.MsGraph.csproj index 760eafc943cc..546672325b40 100644 --- a/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Skills.MsGraph.csproj +++ b/dotnet/src/SemanticKernel.Skills/Skills.MsGraph/Skills.MsGraph.csproj @@ -15,7 +15,7 @@ Microsoft.SemanticKernel.Skills.MsGraph Semantic Kernel - Microsoft Graph Connector - 0.7 + 0.8 diff --git a/dotnet/src/SemanticKernel.Skills/Skills.Web/Skills.Web.csproj b/dotnet/src/SemanticKernel.Skills/Skills.Web/Skills.Web.csproj index 7d15a8135ac4..b70c5eddb928 100644 --- a/dotnet/src/SemanticKernel.Skills/Skills.Web/Skills.Web.csproj +++ b/dotnet/src/SemanticKernel.Skills/Skills.Web/Skills.Web.csproj @@ -15,7 +15,7 @@ Microsoft.SemanticKernel.Skills.Web Semantic Kernel - Microsoft Bing Connector - 0.7 + 0.8 diff --git a/dotnet/src/SemanticKernel/AI/AIException.cs b/dotnet/src/SemanticKernel/AI/AIException.cs index 57c3a10a9bc7..a4546e3edb60 100644 --- a/dotnet/src/SemanticKernel/AI/AIException.cs +++ b/dotnet/src/SemanticKernel/AI/AIException.cs @@ -81,7 +81,7 @@ public enum ErrorCodes /// /// Error code of the exception. /// Message of the exception - public AIException(ErrorCodes errCode, string message) : base(errCode, message) + public AIException(ErrorCodes errCode, string? message = null) : base(errCode, message) { this.ErrorCode = errCode; } @@ -96,4 +96,23 @@ public AIException(ErrorCodes errCode, string message, Exception e) : base(errCo { this.ErrorCode = errCode; } + + #region private ================================================================================ + + private AIException() + { + // Not allowed, error code is required + } + + private AIException(string message) : base(message) + { + // Not allowed, error code is required + } + + private AIException(string message, Exception innerException) : base(message, innerException) + { + // Not allowed, error code is required + } + + #endregion } diff --git a/dotnet/src/SemanticKernel/AI/OpenAI/Clients/OpenAIClientAbstract.cs b/dotnet/src/SemanticKernel/AI/OpenAI/Clients/OpenAIClientAbstract.cs index 82c09e41d250..869cb9de2e41 100644 --- a/dotnet/src/SemanticKernel/AI/OpenAI/Clients/OpenAIClientAbstract.cs +++ b/dotnet/src/SemanticKernel/AI/OpenAI/Clients/OpenAIClientAbstract.cs @@ -238,7 +238,9 @@ private async Task ExecutePostRequestAsync(string url, string requestBody) } } - // C# finalizer + /// + /// C# finalizer + /// ~OpenAIClientAbstract() { this.Dispose(false); diff --git a/dotnet/src/SemanticKernel/CoreSkills/HttpSkill.cs b/dotnet/src/SemanticKernel/CoreSkills/HttpSkill.cs index 1911cd57baf9..792bac1a73a8 100644 --- a/dotnet/src/SemanticKernel/CoreSkills/HttpSkill.cs +++ b/dotnet/src/SemanticKernel/CoreSkills/HttpSkill.cs @@ -113,6 +113,10 @@ public void Dispose() GC.SuppressFinalize(this); } + /// + /// Dispose internal resources + /// + /// Whether the method is explicitly called by the public Dispose method protected virtual void Dispose(bool disposing) { if (disposing) diff --git a/dotnet/src/SemanticKernel/Diagnostics/Exception.cs b/dotnet/src/SemanticKernel/Diagnostics/Exception.cs index e56058b372a2..78f86cad0753 100644 --- a/dotnet/src/SemanticKernel/Diagnostics/Exception.cs +++ b/dotnet/src/SemanticKernel/Diagnostics/Exception.cs @@ -30,12 +30,35 @@ protected Exception(TErrorCode errCode, string? message, Exception? innerExcepti { } - #region private ================================================================================ + /// + /// Parameterless ctor, do not use + /// + protected Exception() + { + // Not allowed, error code is required + } + + /// + /// Standard ctor, do not use + /// + /// Exception message + protected Exception(string message) : base(message) + { + // Not allowed, error code is required + } + + /// + /// Standard ctor, do not use + /// + /// Exception message + /// Internal exception + protected Exception(string message, Exception innerException) : base(message, innerException) + { + // Not allowed, error code is required + } private static string BuildMessage(TErrorCode errorType, string? message) { return message != null ? $"{errorType.ToString("G")}: {message}" : errorType.ToString("G"); } - - #endregion } diff --git a/dotnet/src/SemanticKernel/Diagnostics/ValidationException.cs b/dotnet/src/SemanticKernel/Diagnostics/ValidationException.cs index 4227672a97cf..bf24296229c0 100644 --- a/dotnet/src/SemanticKernel/Diagnostics/ValidationException.cs +++ b/dotnet/src/SemanticKernel/Diagnostics/ValidationException.cs @@ -55,7 +55,7 @@ public enum ErrorCodes /// /// The error code. /// The message. - public ValidationException(ErrorCodes errCode, string message) : base(errCode, message) + public ValidationException(ErrorCodes errCode, string? message = null) : base(errCode, message) { this.ErrorCode = errCode; } @@ -70,4 +70,23 @@ public ValidationException(ErrorCodes errCode, string message, Exception e) : ba { this.ErrorCode = errCode; } + + #region private ================================================================================ + + private ValidationException() + { + // Not allowed, error code is required + } + + private ValidationException(string message) : base(message) + { + // Not allowed, error code is required + } + + private ValidationException(string message, Exception innerException) : base(message, innerException) + { + // Not allowed, error code is required + } + + #endregion } diff --git a/dotnet/src/SemanticKernel/KernelException.cs b/dotnet/src/SemanticKernel/KernelException.cs index a44b9a4645f1..5418264e2513 100644 --- a/dotnet/src/SemanticKernel/KernelException.cs +++ b/dotnet/src/SemanticKernel/KernelException.cs @@ -71,7 +71,7 @@ public enum ErrorCodes /// /// Error code to put in KernelException. /// Message to put in KernelException. - public KernelException(ErrorCodes errCode, string message) : base(errCode, message) + public KernelException(ErrorCodes errCode, string? message = null) : base(errCode, message) { this.ErrorCode = errCode; } @@ -86,4 +86,23 @@ public KernelException(ErrorCodes errCode, string message, Exception e) : base(e { this.ErrorCode = errCode; } + + #region private ================================================================================ + + private KernelException() + { + // Not allowed, error code is required + } + + private KernelException(string message) : base(message) + { + // Not allowed, error code is required + } + + private KernelException(string message, Exception innerException) : base(message, innerException) + { + // Not allowed, error code is required + } + + #endregion } diff --git a/dotnet/src/SemanticKernel/Memory/NullMemory.cs b/dotnet/src/SemanticKernel/Memory/NullMemory.cs index 3ddc2b597a03..f577f3d31d8f 100644 --- a/dotnet/src/SemanticKernel/Memory/NullMemory.cs +++ b/dotnet/src/SemanticKernel/Memory/NullMemory.cs @@ -12,7 +12,10 @@ namespace Microsoft.SemanticKernel.Memory; /// public sealed class NullMemory : ISemanticTextMemory { - public static NullMemory Instance { get; } = new NullMemory(); + /// + /// Singleton instance + /// + public static NullMemory Instance { get; } = new(); /// public Task SaveInformationAsync( diff --git a/dotnet/src/SemanticKernel/Planning/PlanningException.cs b/dotnet/src/SemanticKernel/Planning/PlanningException.cs index d33121211e72..0f9a63f148dd 100644 --- a/dotnet/src/SemanticKernel/Planning/PlanningException.cs +++ b/dotnet/src/SemanticKernel/Planning/PlanningException.cs @@ -41,7 +41,7 @@ public enum ErrorCodes /// /// The error code. /// The message. - public PlanningException(ErrorCodes errCode, string message) : base(errCode, message) + public PlanningException(ErrorCodes errCode, string? message = null) : base(errCode, message) { this.ErrorCode = errCode; } @@ -56,4 +56,23 @@ public PlanningException(ErrorCodes errCode, string message, Exception e) : base { this.ErrorCode = errCode; } + + #region private ================================================================================ + + private PlanningException() + { + // Not allowed, error code is required + } + + private PlanningException(string message) : base(message) + { + // Not allowed, error code is required + } + + private PlanningException(string message, Exception innerException) : base(message, innerException) + { + // Not allowed, error code is required + } + + #endregion } diff --git a/dotnet/src/SemanticKernel/SemanticKernel.csproj b/dotnet/src/SemanticKernel/SemanticKernel.csproj index 49e9187ebbbb..b7aa4476b8fa 100644 --- a/dotnet/src/SemanticKernel/SemanticKernel.csproj +++ b/dotnet/src/SemanticKernel/SemanticKernel.csproj @@ -16,7 +16,7 @@ Microsoft.SemanticKernel Semantic Kernel - 0.7 + 0.8 diff --git a/dotnet/src/SemanticKernel/TemplateEngine/TemplateException.cs b/dotnet/src/SemanticKernel/TemplateEngine/TemplateException.cs index 185a190969ac..5152ffd3cb52 100644 --- a/dotnet/src/SemanticKernel/TemplateEngine/TemplateException.cs +++ b/dotnet/src/SemanticKernel/TemplateEngine/TemplateException.cs @@ -1,5 +1,6 @@ // Copyright (c) Microsoft. All rights reserved. +using System; using Microsoft.SemanticKernel.Diagnostics; namespace Microsoft.SemanticKernel.TemplateEngine; @@ -40,4 +41,34 @@ public TemplateException(ErrorCodes errCode, string? message = null) { this.ErrorCode = errCode; } + + /// + /// Construct an exception with an error code, message, and existing exception. + /// + /// Error code of the exception. + /// Message of the exception. + /// An exception that was thrown. + public TemplateException(ErrorCodes errCode, string message, Exception e) : base(errCode, message, e) + { + this.ErrorCode = errCode; + } + + #region private ================================================================================ + + private TemplateException() + { + // Not allowed, error code is required + } + + private TemplateException(string message) : base(message) + { + // Not allowed, error code is required + } + + private TemplateException(string message, Exception innerException) : base(message, innerException) + { + // Not allowed, error code is required + } + + #endregion } diff --git a/samples/dotnet/api-azure-function/Utils/YourAppException.cs b/samples/dotnet/api-azure-function/Utils/YourAppException.cs index 3d7e6900d179..1fab6a671c73 100644 --- a/samples/dotnet/api-azure-function/Utils/YourAppException.cs +++ b/samples/dotnet/api-azure-function/Utils/YourAppException.cs @@ -6,7 +6,15 @@ namespace SemanticKernelFunction.Utils; public class YourAppException : Exception { + public YourAppException() : base() + { + } + public YourAppException(string message) : base(message) { } + + public YourAppException(string message, Exception innerException) : base(message, innerException) + { + } } diff --git a/samples/dotnet/kernel-syntax-examples/RepoUtils/YourAppException.cs b/samples/dotnet/kernel-syntax-examples/RepoUtils/YourAppException.cs index d3c0754e7eeb..28794dbb1b04 100644 --- a/samples/dotnet/kernel-syntax-examples/RepoUtils/YourAppException.cs +++ b/samples/dotnet/kernel-syntax-examples/RepoUtils/YourAppException.cs @@ -6,7 +6,15 @@ namespace RepoUtils; public class YourAppException : Exception { + public YourAppException() : base() + { + } + public YourAppException(string message) : base(message) { } + + public YourAppException(string message, Exception innerException) : base(message, innerException) + { + } } From 13d7e53bc3313132e002a1ec9c6695becc2a792f Mon Sep 17 00:00:00 2001 From: Devis Lucato Date: Tue, 28 Feb 2023 21:52:55 -0800 Subject: [PATCH 2/2] Comment out VS Threading analyzer --- dotnet/Directory.Packages.props | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dotnet/Directory.Packages.props b/dotnet/Directory.Packages.props index 1341ba9b74c6..fa3ef30fb9c8 100644 --- a/dotnet/Directory.Packages.props +++ b/dotnet/Directory.Packages.props @@ -37,9 +37,9 @@ - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + + + + \ No newline at end of file