diff --git a/docs/csharp_binary.md b/docs/csharp_binary.md index 90999e81..0e8529f8 100644 --- a/docs/csharp_binary.md +++ b/docs/csharp_binary.md @@ -8,11 +8,11 @@ Rule for compiling C# binaries.
 csharp_binary(name, deps, srcs, data, resources, out, additionalfiles, allow_unsafe_blocks,
-              appsetting_files, compile_data, compiler_options, defines, generate_documentation_file,
-              include_host_model_dll, internals_visible_to, keyfile, langversion, nowarn, nullable,
-              project_sdk, roll_forward_behavior, run_analyzers, target_frameworks,
-              treat_warnings_as_errors, warning_level, warnings_as_errors, warnings_not_as_errors,
-              winexe)
+              analyzer_configs, appsetting_files, compile_data, compiler_options, defines,
+              generate_documentation_file, include_host_model_dll, internals_visible_to, keyfile,
+              langversion, nowarn, nullable, project_sdk, roll_forward_behavior, run_analyzers,
+              target_frameworks, treat_warnings_as_errors, warning_level, warnings_as_errors,
+              warnings_not_as_errors, winexe)
 
Compile a C# exe @@ -30,6 +30,7 @@ Compile a C# exe | out | File name, without extension, of the built assembly. | String | optional | `""` | | additionalfiles | Extra files to configure analyzers. | List of labels | optional | `[]` | | allow_unsafe_blocks | Allow compiling unsafe code. It true, /unsafe is passed to the compiler. | Boolean | optional | `False` | +| analyzer_configs | A list of analyzer configuration files. See: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/configuration-files | List of labels | optional | `[]` | | appsetting_files | A list of appsettings files to include in the output directory. | List of labels | optional | `[]` | | compile_data | Additional compile time files. | List of labels | optional | `[]` | | compiler_options | Additional options to pass to the compiler. This attribute should only be used if the compiler flag has not already been exposed as an attribute. | List of strings | optional | `[]` | diff --git a/docs/csharp_library.md b/docs/csharp_library.md index 3a970727..e1dfe477 100644 --- a/docs/csharp_library.md +++ b/docs/csharp_library.md @@ -8,8 +8,9 @@ Rule for compiling C# libraries.
 csharp_library(name, deps, srcs, data, resources, out, additionalfiles, allow_unsafe_blocks,
-               compile_data, compiler_options, defines, exports, generate_documentation_file,
-               internals_visible_to, keyfile, langversion, nowarn, nullable, project_sdk,
+               analyzer_configs, compile_data, compiler_options, defines, exports,
+               generate_documentation_file, internals_visible_to, is_analyzer,
+               is_language_specific_analyzer, keyfile, langversion, nowarn, nullable, project_sdk,
                run_analyzers, target_frameworks, treat_warnings_as_errors, warning_level,
                warnings_as_errors, warnings_not_as_errors)
 
@@ -29,12 +30,15 @@ Compile a C# DLL | out | File name, without extension, of the built assembly. | String | optional | `""` | | additionalfiles | Extra files to configure analyzers. | List of labels | optional | `[]` | | allow_unsafe_blocks | Allow compiling unsafe code. It true, /unsafe is passed to the compiler. | Boolean | optional | `False` | +| analyzer_configs | A list of analyzer configuration files. See: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/configuration-files | List of labels | optional | `[]` | | compile_data | Additional compile time files. | List of labels | optional | `[]` | | compiler_options | Additional options to pass to the compiler. This attribute should only be used if the compiler flag has not already been exposed as an attribute. | List of strings | optional | `[]` | | defines | A list of preprocessor directive symbols to define. | List of strings | optional | `[]` | | exports | List of targets to add to the dependencies of those that depend on this target. Use this sparingly as it weakens the precision of the build graph.

This attribute does nothing if you don't have strict dependencies enabled. | List of labels | optional | `[]` | | generate_documentation_file | Whether or not to generate a documentation file. | Boolean | optional | `True` | | internals_visible_to | Other libraries that can see the assembly's internal symbols. Using this rather than the InternalsVisibleTo assembly attribute will improve build caching. | List of strings | optional | `[]` | +| is_analyzer | Whether this library is an analyzer or not. This flag is needs to be set to true if the library is an analyzer or a source generator. | Boolean | optional | `False` | +| is_language_specific_analyzer | Whether this library is a language specific analyzer/source generator or not. This flag is needs to be set to true if the library is a analyzer that is specific to a language or if the library is a source generator. | Boolean | optional | `False` | | keyfile | The key file used to sign the assembly with a strong name. | Label | optional | `None` | | langversion | The version string for the language. | String | optional | `""` | | nowarn | List of warnings that should be ignored | List of strings | optional | `["CS1701", "CS1702"]` | diff --git a/docs/csharp_test.md b/docs/csharp_test.md index 5a773bbd..115b2298 100644 --- a/docs/csharp_test.md +++ b/docs/csharp_test.md @@ -11,10 +11,11 @@ a Bazel test.
 csharp_test(name, deps, srcs, data, resources, out, additionalfiles, allow_unsafe_blocks,
-            appsetting_files, compile_data, compiler_options, defines, generate_documentation_file,
-            internals_visible_to, keyfile, langversion, nowarn, nullable, project_sdk,
-            roll_forward_behavior, run_analyzers, target_frameworks, treat_warnings_as_errors,
-            warning_level, warnings_as_errors, warnings_not_as_errors, winexe)
+            analyzer_configs, appsetting_files, compile_data, compiler_options, defines,
+            generate_documentation_file, internals_visible_to, keyfile, langversion, nowarn, nullable,
+            project_sdk, roll_forward_behavior, run_analyzers, target_frameworks,
+            treat_warnings_as_errors, warning_level, warnings_as_errors, warnings_not_as_errors,
+            winexe)
 
Compiles a C# executable and runs it as a test @@ -32,6 +33,7 @@ Compiles a C# executable and runs it as a test | out | File name, without extension, of the built assembly. | String | optional | `""` | | additionalfiles | Extra files to configure analyzers. | List of labels | optional | `[]` | | allow_unsafe_blocks | Allow compiling unsafe code. It true, /unsafe is passed to the compiler. | Boolean | optional | `False` | +| analyzer_configs | A list of analyzer configuration files. See: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/configuration-files | List of labels | optional | `[]` | | appsetting_files | A list of appsettings files to include in the output directory. | List of labels | optional | `[]` | | compile_data | Additional compile time files. | List of labels | optional | `[]` | | compiler_options | Additional options to pass to the compiler. This attribute should only be used if the compiler flag has not already been exposed as an attribute. | List of strings | optional | `[]` | diff --git a/docs/defs.md b/docs/defs.md index 63b3449d..f9ef1186 100644 --- a/docs/defs.md +++ b/docs/defs.md @@ -10,11 +10,11 @@ Users should not load files under "/dotnet"
 csharp_binary(name, deps, srcs, data, resources, out, additionalfiles, allow_unsafe_blocks,
-              appsetting_files, compile_data, compiler_options, defines, generate_documentation_file,
-              include_host_model_dll, internals_visible_to, keyfile, langversion, nowarn, nullable,
-              project_sdk, roll_forward_behavior, run_analyzers, target_frameworks,
-              treat_warnings_as_errors, warning_level, warnings_as_errors, warnings_not_as_errors,
-              winexe)
+              analyzer_configs, appsetting_files, compile_data, compiler_options, defines,
+              generate_documentation_file, include_host_model_dll, internals_visible_to, keyfile,
+              langversion, nowarn, nullable, project_sdk, roll_forward_behavior, run_analyzers,
+              target_frameworks, treat_warnings_as_errors, warning_level, warnings_as_errors,
+              warnings_not_as_errors, winexe)
 
Compile a C# exe @@ -32,6 +32,7 @@ Compile a C# exe | out | File name, without extension, of the built assembly. | String | optional | `""` | | additionalfiles | Extra files to configure analyzers. | List of labels | optional | `[]` | | allow_unsafe_blocks | Allow compiling unsafe code. It true, /unsafe is passed to the compiler. | Boolean | optional | `False` | +| analyzer_configs | A list of analyzer configuration files. See: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/configuration-files | List of labels | optional | `[]` | | appsetting_files | A list of appsettings files to include in the output directory. | List of labels | optional | `[]` | | compile_data | Additional compile time files. | List of labels | optional | `[]` | | compiler_options | Additional options to pass to the compiler. This attribute should only be used if the compiler flag has not already been exposed as an attribute. | List of strings | optional | `[]` | @@ -60,8 +61,9 @@ Compile a C# exe
 csharp_library(name, deps, srcs, data, resources, out, additionalfiles, allow_unsafe_blocks,
-               compile_data, compiler_options, defines, exports, generate_documentation_file,
-               internals_visible_to, keyfile, langversion, nowarn, nullable, project_sdk,
+               analyzer_configs, compile_data, compiler_options, defines, exports,
+               generate_documentation_file, internals_visible_to, is_analyzer,
+               is_language_specific_analyzer, keyfile, langversion, nowarn, nullable, project_sdk,
                run_analyzers, target_frameworks, treat_warnings_as_errors, warning_level,
                warnings_as_errors, warnings_not_as_errors)
 
@@ -81,12 +83,15 @@ Compile a C# DLL | out | File name, without extension, of the built assembly. | String | optional | `""` | | additionalfiles | Extra files to configure analyzers. | List of labels | optional | `[]` | | allow_unsafe_blocks | Allow compiling unsafe code. It true, /unsafe is passed to the compiler. | Boolean | optional | `False` | +| analyzer_configs | A list of analyzer configuration files. See: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/configuration-files | List of labels | optional | `[]` | | compile_data | Additional compile time files. | List of labels | optional | `[]` | | compiler_options | Additional options to pass to the compiler. This attribute should only be used if the compiler flag has not already been exposed as an attribute. | List of strings | optional | `[]` | | defines | A list of preprocessor directive symbols to define. | List of strings | optional | `[]` | | exports | List of targets to add to the dependencies of those that depend on this target. Use this sparingly as it weakens the precision of the build graph.

This attribute does nothing if you don't have strict dependencies enabled. | List of labels | optional | `[]` | | generate_documentation_file | Whether or not to generate a documentation file. | Boolean | optional | `True` | | internals_visible_to | Other libraries that can see the assembly's internal symbols. Using this rather than the InternalsVisibleTo assembly attribute will improve build caching. | List of strings | optional | `[]` | +| is_analyzer | Whether this library is an analyzer or not. This flag is needs to be set to true if the library is an analyzer or a source generator. | Boolean | optional | `False` | +| is_language_specific_analyzer | Whether this library is a language specific analyzer/source generator or not. This flag is needs to be set to true if the library is a analyzer that is specific to a language or if the library is a source generator. | Boolean | optional | `False` | | keyfile | The key file used to sign the assembly with a strong name. | Label | optional | `None` | | langversion | The version string for the language. | String | optional | `""` | | nowarn | List of warnings that should be ignored | List of strings | optional | `["CS1701", "CS1702"]` | @@ -106,10 +111,11 @@ Compile a C# DLL
 csharp_test(name, deps, srcs, data, resources, out, additionalfiles, allow_unsafe_blocks,
-            appsetting_files, compile_data, compiler_options, defines, generate_documentation_file,
-            internals_visible_to, keyfile, langversion, nowarn, nullable, project_sdk,
-            roll_forward_behavior, run_analyzers, target_frameworks, treat_warnings_as_errors,
-            warning_level, warnings_as_errors, warnings_not_as_errors, winexe)
+            analyzer_configs, appsetting_files, compile_data, compiler_options, defines,
+            generate_documentation_file, internals_visible_to, keyfile, langversion, nowarn, nullable,
+            project_sdk, roll_forward_behavior, run_analyzers, target_frameworks,
+            treat_warnings_as_errors, warning_level, warnings_as_errors, warnings_not_as_errors,
+            winexe)
 
Compiles a C# executable and runs it as a test @@ -127,6 +133,7 @@ Compiles a C# executable and runs it as a test | out | File name, without extension, of the built assembly. | String | optional | `""` | | additionalfiles | Extra files to configure analyzers. | List of labels | optional | `[]` | | allow_unsafe_blocks | Allow compiling unsafe code. It true, /unsafe is passed to the compiler. | Boolean | optional | `False` | +| analyzer_configs | A list of analyzer configuration files. See: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/configuration-files | List of labels | optional | `[]` | | appsetting_files | A list of appsettings files to include in the output directory. | List of labels | optional | `[]` | | compile_data | Additional compile time files. | List of labels | optional | `[]` | | compiler_options | Additional options to pass to the compiler. This attribute should only be used if the compiler flag has not already been exposed as an attribute. | List of strings | optional | `[]` | @@ -303,8 +310,9 @@ Imports a DLL ## import_library
-import_library(name, deps, data, analyzers, framework_list, library_name, libs, native, nupkg, refs,
-               sha512, targeting_pack_overrides, version)
+import_library(name, deps, data, analyzers, analyzers_csharp, analyzers_fsharp, analyzers_vb,
+               framework_list, library_name, libs, native, nupkg, refs, sha512,
+               targeting_pack_overrides, version)
 
Creates a target for a static DLL for a specific target framework @@ -318,6 +326,9 @@ Creates a target for a static DLL for a specific target framework | deps | Other DLLs that this DLL depends on. | List of labels | optional | `[]` | | data | Other files that this DLL depends on at runtime | List of labels | optional | `[]` | | analyzers | Static analyzer DLLs | List of labels | optional | `[]` | +| analyzers_csharp | Static C# analyzer DLLs | List of labels | optional | `[]` | +| analyzers_fsharp | Static F# analyzer DLLs | List of labels | optional | `[]` | +| analyzers_vb | Static VB analyzer DLLs | List of labels | optional | `[]` | | framework_list | Targeting packs like e.g. Microsoft.NETCore.App.Ref have a PlatformManifest.txt that includes all the DLLs that are included in the targeting pack. This is used to determine which version of a DLL should be used during compilation or runtime. | Dictionary: String -> String | optional | `{}` | | library_name | The name of the library | String | required | | | libs | Static runtime DLLs | List of labels | optional | `[]` | diff --git a/dotnet/paket.rules_dotnet_dev_nuget_packages.bzl b/dotnet/paket.rules_dotnet_dev_nuget_packages.bzl index 5a40e9e5..45182b24 100644 --- a/dotnet/paket.rules_dotnet_dev_nuget_packages.bzl +++ b/dotnet/paket.rules_dotnet_dev_nuget_packages.bzl @@ -12,13 +12,19 @@ def rules_dotnet_dev_nuget_packages(): {"name": "LibGit2Sharp", "id": "LibGit2Sharp", "version": "0.27.0-preview-0182", "sha512": "sha512-EQZksMK/1/oSuSU+vtc9R3DurosXySQ5uHRO02D5JvAoYdSCOGQ1lTigtvYcVnXcRGdsAlM3pXnYWexNNf7X4g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["LibGit2Sharp.NativeBinaries"], "net462": ["LibGit2Sharp.NativeBinaries"], "net47": ["LibGit2Sharp.NativeBinaries"], "net471": ["LibGit2Sharp.NativeBinaries"], "net472": ["LibGit2Sharp.NativeBinaries"], "net48": ["LibGit2Sharp.NativeBinaries"], "net5.0": ["LibGit2Sharp.NativeBinaries"], "net6.0": ["LibGit2Sharp.NativeBinaries"], "net7.0": ["LibGit2Sharp.NativeBinaries"], "net8.0": ["LibGit2Sharp.NativeBinaries"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["LibGit2Sharp.NativeBinaries"], "netcoreapp2.1": ["LibGit2Sharp.NativeBinaries"], "netcoreapp2.2": ["LibGit2Sharp.NativeBinaries"], "netcoreapp3.0": ["LibGit2Sharp.NativeBinaries"], "netcoreapp3.1": ["LibGit2Sharp.NativeBinaries"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["LibGit2Sharp.NativeBinaries"], "netstandard2.1": ["LibGit2Sharp.NativeBinaries"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "LibGit2Sharp.NativeBinaries", "id": "LibGit2Sharp.NativeBinaries", "version": "2.0.315-alpha.0.9", "sha512": "sha512-YYQfD2dsYdPn9NjR5s4Mcbek0UM76nO00pPUToAS7we3Qknqqh3y6/QV2/GKMv41EDFZ8osGZfCz+qUWows2zw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Magick.NET.Core", "id": "Magick.NET.Core", "version": "12.2.2", "sha512": "sha512-pCrQcYNwbTHynEYpAa6jKHZmsuSyV0/4ypVDvlgto+5Aks+M0eR8T/aCoFkJO4jS7Rf/xdh0Ujo+MfqBtYGrdA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Bcl.AsyncInterfaces", "id": "Microsoft.Bcl.AsyncInterfaces", "version": "7.0.0", "sha512": "sha512-Nb9B1lxCab0LZi0ijNLEpw4hgwt0Wl8QQM1DxIhJS2otChAtIVMfyGrYl3YzdSjspvBYPliJlr0kCtizNAVe3w==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Threading.Tasks.Extensions"], "net462": ["System.Threading.Tasks.Extensions"], "net47": ["System.Threading.Tasks.Extensions"], "net471": ["System.Threading.Tasks.Extensions"], "net472": ["System.Threading.Tasks.Extensions"], "net48": ["System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Bcl.AsyncInterfaces", "id": "Microsoft.Bcl.AsyncInterfaces", "version": "8.0.0", "sha512": "sha512-ecsHc9lEZZJM7k5HHZA1PV2N+ELEarLFcssV2bn7XQIJoaiNZDkplTNcX+VKANfDGURAuEyVFCcRu7aFy16VUg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Threading.Tasks.Extensions"], "net462": ["System.Threading.Tasks.Extensions"], "net47": ["System.Threading.Tasks.Extensions"], "net471": ["System.Threading.Tasks.Extensions"], "net472": ["System.Threading.Tasks.Extensions"], "net48": ["System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.Analyzers", "id": "Microsoft.CodeAnalysis.Analyzers", "version": "3.3.4", "sha512": "sha512-I+Riw6/6WjNICydoiNpDjN/GGP7u4XsL6VsI9lG/OjFufH3flvSEy/fxNhGDVGwZWwq/5BlnqX+LH2dmheaPfg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.Common", "id": "Microsoft.CodeAnalysis.Common", "version": "4.9.2", "sha512": "sha512-XCtqPQdnoqfrBSidFWIESm8exXVHF4yPY94e84St2PVZPc2bGeQNXdFNwadu1Bd2sr/bAgM5B0UHbCqBz+/SeQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.CSharp", "id": "Microsoft.CodeAnalysis.CSharp", "version": "4.9.2", "sha512": "sha512-oy5nUdJOaOQEjUZimhYH4xU6nVxt8ctkdP7HT2fc32ecvH50QeIwJXgjNt7MGUyhJO+Wd3SipQWQ5QyDw7VuLg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common"], "net462": ["Microsoft.CodeAnalysis.Common"], "net47": ["Microsoft.CodeAnalysis.Common"], "net471": ["Microsoft.CodeAnalysis.Common"], "net472": ["Microsoft.CodeAnalysis.Common"], "net48": ["Microsoft.CodeAnalysis.Common"], "net5.0": ["Microsoft.CodeAnalysis.Common"], "net6.0": ["Microsoft.CodeAnalysis.Common"], "net7.0": ["Microsoft.CodeAnalysis.Common"], "net8.0": ["Microsoft.CodeAnalysis.Common"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "NETStandard.Library.Ref", "id": "NETStandard.Library.Ref", "version": "2.1.0", "sha512": "sha512-Jr0OqnqkaJJGEVq3w9oNQrIEteD/4QBNg3YOh1cvRjydzwop07+5aWjO/SfEYu6CwBn+dSBKXj8niEvTNy2brA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": ["Microsoft.Win32.Primitives|4.3.0", "System.AppContext|4.3.0", "System.Collections|4.3.0", "System.Collections.Concurrent|4.3.0", "System.Collections.Immutable|1.4.0", "System.Collections.NonGeneric|4.3.0", "System.Collections.Specialized|4.3.0", "System.ComponentModel|4.3.0", "System.ComponentModel.EventBasedAsync|4.3.0", "System.ComponentModel.Primitives|4.3.0", "System.ComponentModel.TypeConverter|4.3.0", "System.Console|4.3.0", "System.Data.Common|4.3.0", "System.Diagnostics.Contracts|4.3.0", "System.Diagnostics.Debug|4.3.0", "System.Diagnostics.FileVersionInfo|4.3.0", "System.Diagnostics.Process|4.3.0", "System.Diagnostics.StackTrace|4.3.0", "System.Diagnostics.TextWriterTraceListener|4.3.0", "System.Diagnostics.Tools|4.3.0", "System.Diagnostics.TraceSource|4.3.0", "System.Diagnostics.Tracing|4.3.0", "System.Dynamic.Runtime|4.3.0", "System.Globalization|4.3.0", "System.Globalization.Calendars|4.3.0", "System.Globalization.Extensions|4.3.0", "System.IO|4.3.0", "System.IO.Compression|4.3.0", "System.IO.Compression.ZipFile|4.3.0", "System.IO.FileSystem|4.3.0", "System.IO.FileSystem.DriveInfo|4.3.0", "System.IO.FileSystem.Primitives|4.3.0", "System.IO.FileSystem.Watcher|4.3.0", "System.IO.IsolatedStorage|4.3.0", "System.IO.MemoryMappedFiles|4.3.0", "System.IO.Pipes|4.3.0", "System.IO.UnmanagedMemoryStream|4.3.0", "System.Linq|4.3.0", "System.Linq.Expressions|4.3.0", "System.Linq.Queryable|4.3.0", "System.Net.Http|4.3.0", "System.Net.NameResolution|4.3.0", "System.Net.Primitives|4.3.0", "System.Net.Requests|4.3.0", "System.Net.Security|4.3.0", "System.Net.Sockets|4.3.0", "System.Net.WebHeaderCollection|4.3.0", "System.ObjectModel|4.3.0", "System.Private.DataContractSerialization|4.3.0", "System.Reflection|4.3.0", "System.Reflection.Emit|4.3.0", "System.Reflection.Emit.ILGeneration|4.3.0", "System.Reflection.Emit.Lightweight|4.3.0", "System.Reflection.Extensions|4.3.0", "System.Reflection.Primitives|4.3.0", "System.Reflection.TypeExtensions|4.3.0", "System.Resources.ResourceManager|4.3.0", "System.Runtime|4.3.0", "System.Runtime.Extensions|4.3.0", "System.Runtime.Handles|4.3.0", "System.Runtime.InteropServices|4.3.0", "System.Runtime.InteropServices.RuntimeInformation|4.3.0", "System.Runtime.Loader|4.3.0", "System.Runtime.Numerics|4.3.0", "System.Runtime.Serialization.Formatters|4.3.0", "System.Runtime.Serialization.Json|4.3.0", "System.Runtime.Serialization.Primitives|4.3.0", "System.Security.AccessControl|4.4.0", "System.Security.Claims|4.3.0", "System.Security.Cryptography.Algorithms|4.3.0", "System.Security.Cryptography.Csp|4.3.0", "System.Security.Cryptography.Encoding|4.3.0", "System.Security.Cryptography.Primitives|4.3.0", "System.Security.Cryptography.X509Certificates|4.3.0", "System.Security.Cryptography.Xml|4.4.0", "System.Security.Principal|4.3.0", "System.Security.Principal.Windows|4.4.0", "System.Text.Encoding|4.3.0", "System.Text.Encoding.Extensions|4.3.0", "System.Text.RegularExpressions|4.3.0", "System.Threading|4.3.0", "System.Threading.Overlapped|4.3.0", "System.Threading.Tasks|4.3.0", "System.Threading.Tasks.Extensions|4.3.0", "System.Threading.Tasks.Parallel|4.3.0", "System.Threading.Thread|4.3.0", "System.Threading.ThreadPool|4.3.0", "System.Threading.Timer|4.3.0", "System.ValueTuple|4.3.0", "System.Xml.ReaderWriter|4.3.0", "System.Xml.XDocument|4.3.0", "System.Xml.XmlDocument|4.3.0", "System.Xml.XmlSerializer|4.3.0", "System.Xml.XPath|4.3.0", "System.Xml.XPath.XDocument|4.3.0"], "framework_list": ["Microsoft.Win32.Primitives|4.0.3.0", "System.AppContext|4.1.2.0", "System.Buffers|4.0.3.0", "System.Collections.Concurrent|4.0.11.0", "System.Collections.NonGeneric|4.0.3.0", "System.Collections.Specialized|4.0.3.0", "System.Collections|4.0.11.0", "System.ComponentModel.Composition|4.0.0.0", "System.ComponentModel.EventBasedAsync|4.0.11.0", "System.ComponentModel.Primitives|4.1.2.0", "System.ComponentModel.TypeConverter|4.1.2.0", "System.ComponentModel|4.0.1.0", "System.Console|4.0.2.0", "System.Core|4.0.0.0", "System.Data.Common|4.1.2.0", "System.Data|4.0.0.0", "System.Diagnostics.Contracts|4.0.1.0", "System.Diagnostics.Debug|4.0.11.0", "System.Diagnostics.FileVersionInfo|4.0.2.0", "System.Diagnostics.Process|4.1.2.0", "System.Diagnostics.StackTrace|4.0.4.0", "System.Diagnostics.TextWriterTraceListener|4.0.2.0", "System.Diagnostics.Tools|4.0.1.0", "System.Diagnostics.TraceSource|4.0.2.0", "System.Diagnostics.Tracing|4.1.2.0", "System.Drawing.Primitives|4.0.2.0", "System.Drawing|4.0.0.0", "System.Dynamic.Runtime|4.0.11.0", "System.Globalization.Calendars|4.0.3.0", "System.Globalization.Extensions|4.0.3.0", "System.Globalization|4.0.11.0", "System.IO.Compression.FileSystem|4.0.0.0", "System.IO.Compression.ZipFile|4.0.3.0", "System.IO.Compression|4.1.3.0", "System.IO.FileSystem.DriveInfo|4.0.2.0", "System.IO.FileSystem.Primitives|4.0.3.0", "System.IO.FileSystem.Watcher|4.0.2.0", "System.IO.FileSystem|4.0.3.0", "System.IO.IsolatedStorage|4.0.2.0", "System.IO.MemoryMappedFiles|4.0.2.0", "System.IO.Pipes|4.0.2.0", "System.IO.UnmanagedMemoryStream|4.0.3.0", "System.IO|4.1.2.0", "System.Linq.Expressions|4.1.2.0", "System.Linq.Parallel|4.0.1.0", "System.Linq.Queryable|4.0.1.0", "System.Linq|4.1.2.0", "System.Memory|4.0.2.0", "System.Net.Http|4.1.2.0", "System.Net.NameResolution|4.0.2.0", "System.Net.NetworkInformation|4.1.2.0", "System.Net.Ping|4.0.2.0", "System.Net.Primitives|4.0.11.0", "System.Net.Requests|4.0.11.0", "System.Net.Security|4.0.2.0", "System.Net.Sockets|4.1.2.0", "System.Net.WebHeaderCollection|4.0.1.0", "System.Net.WebSockets.Client|4.0.2.0", "System.Net.WebSockets|4.0.2.0", "System.Net|4.0.0.0", "System.Numerics.Vectors|4.1.5.0", "System.Numerics|4.0.0.0", "System.ObjectModel|4.0.11.0", "System.Reflection.DispatchProxy|4.0.5.0", "System.Reflection.Emit.ILGeneration|4.0.1.0", "System.Reflection.Emit.Lightweight|4.0.1.0", "System.Reflection.Emit|4.0.1.0", "System.Reflection.Extensions|4.0.1.0", "System.Reflection.Primitives|4.0.1.0", "System.Reflection|4.1.2.0", "System.Resources.Reader|4.0.2.0", "System.Resources.ResourceManager|4.0.1.0", "System.Resources.Writer|4.0.2.0", "System.Runtime.CompilerServices.VisualC|4.0.2.0", "System.Runtime.Extensions|4.1.2.0", "System.Runtime.Handles|4.0.1.0", "System.Runtime.InteropServices.RuntimeInformation|4.0.2.0", "System.Runtime.InteropServices|4.1.2.0", "System.Runtime.Numerics|4.0.1.0", "System.Runtime.Serialization.Formatters|4.0.2.0", "System.Runtime.Serialization.Json|4.0.1.0", "System.Runtime.Serialization.Primitives|4.1.3.0", "System.Runtime.Serialization.Xml|4.1.3.0", "System.Runtime.Serialization|4.0.0.0", "System.Runtime|4.1.2.0", "System.Security.Claims|4.0.3.0", "System.Security.Cryptography.Algorithms|4.2.2.0", "System.Security.Cryptography.Csp|4.0.2.0", "System.Security.Cryptography.Encoding|4.0.2.0", "System.Security.Cryptography.Primitives|4.0.2.0", "System.Security.Cryptography.X509Certificates|4.1.2.0", "System.Security.Principal|4.0.1.0", "System.Security.SecureString|4.0.2.0", "System.ServiceModel.Web|4.0.0.0", "System.Text.Encoding.Extensions|4.0.11.0", "System.Text.Encoding|4.0.11.0", "System.Text.RegularExpressions|4.1.1.0", "System.Threading.Overlapped|4.0.3.0", "System.Threading.Tasks.Extensions|4.2.1.0", "System.Threading.Tasks.Parallel|4.0.1.0", "System.Threading.Tasks|4.0.11.0", "System.Threading.Thread|4.0.2.0", "System.Threading.ThreadPool|4.0.12.0", "System.Threading.Timer|4.0.1.0", "System.Threading|4.0.11.0", "System.Transactions|4.0.0.0", "System.ValueTuple|4.0.2.0", "System.Web|4.0.0.0", "System.Windows|4.0.0.0", "System.Xml.Linq|4.0.0.0", "System.Xml.ReaderWriter|4.1.1.0", "System.Xml.Serialization|4.0.0.0", "System.Xml.XDocument|4.0.11.0", "System.Xml.XPath.XDocument|4.0.3.0", "System.Xml.XPath|4.0.3.0", "System.Xml.XmlDocument|4.0.3.0", "System.Xml.XmlSerializer|4.0.11.0", "System.Xml|4.0.0.0", "System|4.0.0.0", "mscorlib|4.0.0.0", "netstandard|2.1.0.0"]}, {"name": "System.Buffers", "id": "System.Buffers", "version": "4.5.1", "sha512": "sha512-gNphWOVbm89+C15jebnPRaYykU8De1PFv1YJV24814IfeGGVa3PXRHDS0MLlbdI1pe9Mpv/n4ZK4INwtAjqv8g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Collections.Immutable", "id": "System.Collections.Immutable", "version": "8.0.0", "sha512": "sha512-BXqVkcIrhimvvem6q2ChWkuW6XYYirvb6FlhvuwaMoBqBdpcr4nehJBKP65Tw40UqcUM6oDoODsecM0yjZ6AUw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Runtime.CompilerServices.Unsafe"], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Memory", "id": "System.Memory", "version": "4.5.5", "sha512": "sha512-6MjlNsl7lKw0Q8lAsw2tQ89ul9x6jD2Yk3EEj+dOFoYGOE9eAUO9wNhvd4O/n97oQXlkyzqKXXUnE+kLElFy3A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "net451": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "net452": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "net46": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "net461": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp1.1": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard1.2": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard1.3": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard1.4": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard1.5": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard1.6": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Numerics.Vectors", "id": "System.Numerics.Vectors", "version": "4.5.0", "sha512": "sha512-nATsBTD2CKr4AYN6eRszhX4sptImWmBJwB/U6XKCWWfnCcrTBw8XSCm3QA9gjppkHTr8OkXUY21MR91D3QZXsw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Reflection.Metadata", "id": "System.Reflection.Metadata", "version": "8.0.0", "sha512": "sha512-+6sMdkJjee0B6nm3AlBBl7cQaI0oPniLvvkrkFhmEN3fo/hGONaFdwpAaO+GRTlbZe4kRZzFwU7kSXQW0RyJxg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Memory"], "net6.0": ["System.Collections.Immutable"], "net7.0": ["System.Collections.Immutable"], "net8.0": ["System.Collections.Immutable"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Runtime.CompilerServices.Unsafe", "id": "System.Runtime.CompilerServices.Unsafe", "version": "6.0.0", "sha512": "sha512-1AVzAb5OxJNvJLnOADtexNmWgattm2XVOT3TjQTN7Dd4SqoSwai1CsN2fth42uQldJSQdz/sAec0+TzxBFgisw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Security.Principal.Windows", "id": "System.Security.Principal.Windows", "version": "5.0.0", "sha512": "sha512-RKkgqq8ishctQTGbtXqyuOGkUx1fAhkqb1OoHYdRJRlbYLoLWkSkWYHRN/17DzplsSlZtf2Xr8BXjNhO8nRnzQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Text.Encoding.CodePages", "id": "System.Text.Encoding.CodePages", "version": "8.0.0", "sha512": "sha512-d9rfaxpz7u+1BQem129eOiDgrn0/VQw0kmWuTg1V8K5PDvG0G+CN2BB5io4B27p04sqsdGtRWLjiPXIlI9Rz7Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Runtime.CompilerServices.Unsafe"], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Text.Encodings.Web", "id": "System.Text.Encodings.Web", "version": "7.0.0", "sha512": "sha512-0WTBXfAhqZ0Y7Qw5trfAKQt/lI2PCb8HFAtHuuZAPxy5qCLBUEqr16YJQ2etn8+M7R6hhrBmKlGBXruzejsENA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Runtime.CompilerServices.Unsafe"], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Buffers", "System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Text.Json", "id": "System.Text.Json", "version": "7.0.3", "sha512": "sha512-DqP+zKPdTIT42a/d1tPu+w/hq14QZ8+6tbpuv2GsyrjhqBqbsHH7mNta/sSvOkF3fB+yP7PWr2IjYILinfT6VQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net6.0": ["System.Text.Encodings.Web", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Text.Encodings.Web"], "net8.0": ["System.Text.Encodings.Web"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.Bcl.AsyncInterfaces", "System.Text.Encodings.Web", "System.Buffers", "System.Memory", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Threading.Tasks.Extensions", "id": "System.Threading.Tasks.Extensions", "version": "4.5.4", "sha512": "sha512-aAUghud9PHGYc3o9oWPWd0C3xE+TJQw5ZZs78htlR6mr9ky/QEgfXHjyQ2GvOq9H1S0YizcVVKCSin92ZcH8FA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["System.Runtime.CompilerServices.Unsafe"], "net451": ["System.Runtime.CompilerServices.Unsafe"], "net452": ["System.Runtime.CompilerServices.Unsafe"], "net46": ["System.Runtime.CompilerServices.Unsafe"], "net461": ["System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp1.1": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.1": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.2": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.3": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.4": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.5": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.6": ["System.Runtime.CompilerServices.Unsafe"], "netstandard2.0": ["System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, diff --git a/dotnet/private/common.bzl b/dotnet/private/common.bzl index fcb3d30f..e29f9928 100644 --- a/dotnet/private/common.bzl +++ b/dotnet/private/common.bzl @@ -249,7 +249,13 @@ def collect_compile_info(name, deps, targeting_pack, exports, strict_deps): direct_compile_data = [] transitive_compile_data = [] direct_analyzers = [] + direct_analyzers_csharp = [] + direct_analyzers_fsharp = [] + direct_analyzers_vb = [] transitive_analyzers = [] + transitive_analyzers_csharp = [] + transitive_analyzers_fsharp = [] + transitive_analyzers_vb = [] exports_files = [] @@ -272,6 +278,9 @@ def collect_compile_info(name, deps, targeting_pack, exports, strict_deps): framework_files.extend(compile_info.irefs) direct_analyzers.extend(compile_info.analyzers) + direct_analyzers_csharp.extend(compile_info.analyzers_csharp) + direct_analyzers_fsharp.extend(compile_info.analyzers_fsharp) + direct_analyzers_vb.extend(compile_info.analyzers_vb) direct_compile_data.extend(compile_info.compile_data) for dep in deps: @@ -295,6 +304,9 @@ def collect_compile_info(name, deps, targeting_pack, exports, strict_deps): direct_iref.extend(assembly.irefs if name in assembly.internals_visible_to else assembly.refs) direct_ref.extend(assembly.refs) direct_analyzers.extend(assembly.analyzers) + direct_analyzers_csharp.extend(assembly.analyzers_csharp) + direct_analyzers_fsharp.extend(assembly.analyzers_fsharp) + direct_analyzers_vb.extend(assembly.analyzers_vb) direct_compile_data.extend(assembly.compile_data) # We take all the exports of each dependency and add them @@ -313,6 +325,9 @@ def collect_compile_info(name, deps, targeting_pack, exports, strict_deps): if add_to_output: transitive_ref.append(transitive_assembly) transitive_analyzers.append(assembly.transitive_analyzers) + transitive_analyzers_csharp.append(assembly.transitive_analyzers_csharp) + transitive_analyzers_fsharp.append(assembly.transitive_analyzers_fsharp) + transitive_analyzers_vb.append(assembly.transitive_analyzers_vb) transitive_compile_data.append(assembly.transitive_compile_data) for file in framework_list.values(): @@ -327,6 +342,9 @@ def collect_compile_info(name, deps, targeting_pack, exports, strict_deps): depset(direct = direct_iref, transitive = [depset(transitive_ref)]), depset(direct = direct_ref, transitive = [depset(transitive_ref)]), depset(direct = direct_analyzers, transitive = transitive_analyzers), + depset(direct = direct_analyzers_csharp, transitive = transitive_analyzers_csharp), + depset(direct = direct_analyzers_fsharp, transitive = transitive_analyzers_fsharp), + depset(direct = direct_analyzers_vb, transitive = transitive_analyzers_vb), depset(direct = direct_compile_data, transitive = transitive_compile_data), framework_files, exports_files, diff --git a/dotnet/private/providers.bzl b/dotnet/private/providers.bzl index 929eb529..c9413e8d 100644 --- a/dotnet/private/providers.bzl +++ b/dotnet/private/providers.bzl @@ -7,13 +7,19 @@ DotnetAssemblyCompileInfo = provider( "project_sdk": "string: The SDK being targeted", "refs": "list[File]: Reference-only assemblies containing only public symbols. See docs/ReferenceAssemblies.md for more info.", "irefs": "list[File]: Reference-only assemblies containing public and internal symbols. See docs/ReferenceAssemblies.md for more info.", - "analyzers": "list[File]: Analyzer dlls", + "analyzers": "list[File]: Common language analyzer dlls", + "analyzers_csharp": "list[File]: C# analyzer dlls", + "analyzers_fsharp": "list[File]: F# analyzer dlls", + "analyzers_vb": "list[File]: VB analyzer dlls", "internals_visible_to": "list[string]: A list of assemblies that can use the assemblies listed in iref for compilation. See docs/ReferenceAssemblies.md for more info.", "compile_data": "list[File]: Compile data files", "exports": "list[File]", "transitive_refs": "depset[File]: Transitive reference-only assemblies containing only public symbols. Only used when strict deps are off.", "transitive_compile_data": "depset[File]: Transitive compile data files. Only used when strict deps are off.", "transitive_analyzers": "depset[File]: Transitive analyzer dlls. Only used when strict deps are off.", + "transitive_analyzers_csharp": "depset[File]: Transitive C# analyzer dlls. Only used when strict deps are off.", + "transitive_analyzers_fsharp": "depset[File]: Transitive F# analyzer dlls. Only used when strict deps are off.", + "transitive_analyzers_vb": "depset[File]: Transitive VB analyzer dlls. Only used when strict deps are off.", }, ) diff --git a/dotnet/private/rules/common/attrs.bzl b/dotnet/private/rules/common/attrs.bzl index 9ae01e62..47676975 100644 --- a/dotnet/private/rules/common/attrs.bzl +++ b/dotnet/private/rules/common/attrs.bzl @@ -225,6 +225,14 @@ CSHARP_COMMON_ATTRS = dicts.add( mandatory = False, default = ["CS1701", "CS1702"], ), + "analyzer_configs": attr.label_list( + doc = "A list of analyzer configuration files. See: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/configuration-files", + allow_files = True, + allow_empty = True, + # We transition to the default configuration because the end user might have analyzer_configs + # that is generated by a dotnet binary + cfg = default_transition, + ), }, ) @@ -232,6 +240,16 @@ CSHARP_COMMON_ATTRS = dicts.add( CSHARP_LIBRARY_COMMON_ATTRS = dicts.add( CSHARP_COMMON_ATTRS, LIBRARY_COMMON_ATTRS, + { + "is_analyzer": attr.bool( + doc = "Whether this library is an analyzer or not. This flag is needs to be set to true if the library is an analyzer or a source generator.", + default = False, + ), + "is_language_specific_analyzer": attr.bool( + doc = "Whether this library is a language specific analyzer/source generator or not. This flag is needs to be set to true if the library is a analyzer that is specific to a language or if the library is a source generator.", + default = False, + ), + }, ) # These are attributes that are common across all the binary C# rules diff --git a/dotnet/private/rules/csharp/actions/csharp_assembly.bzl b/dotnet/private/rules/csharp/actions/csharp_assembly.bzl index df29db73..f5231c8e 100644 --- a/dotnet/private/rules/csharp/actions/csharp_assembly.bzl +++ b/dotnet/private/rules/csharp/actions/csharp_assembly.bzl @@ -86,6 +86,9 @@ def AssemblyAction( allow_unsafe_blocks, nullable, run_analyzers, + is_analyzer, + is_language_specific_analyzer, + analyzer_configs, compiler_options, is_windows): """Creates an action that runs the CSharp compiler with the specified inputs. @@ -126,6 +129,9 @@ def AssemblyAction( allow_unsafe_blocks: Compiles the target with /unsafe nullable: Enable nullable context, or nullable warnings. run_analyzers: Enable analyzers. + is_analyzer: Whether or not the target is an analyzer. + is_language_specific_analyzer: Whether or not the target is a language specific analyzer. + analyzer_configs: List of analyzer configuration files. compiler_options: Additional options to pass to the compiler. is_windows: Whether or not the target is running on Windows. Returns: @@ -138,6 +144,9 @@ def AssemblyAction( irefs, prefs, analyzers, + analyzers_csharp, + analyzers_fsharp, + analyzers_vb, transitive_compile_data, framework_files, exports_files, @@ -163,12 +172,14 @@ def AssemblyAction( # Appsettings out_appsettings = copy_files_to_dir(target_name, actions, is_windows, appsetting_files, out_dir) - if len(internals_visible_to) == 0: + if len(internals_visible_to) == 0 or is_analyzer: _compile( actions, compiler_wrapper, additionalfiles, analyzers, + analyzers_csharp, + analyzer_configs, debug, default_lang_version, defines, @@ -216,6 +227,8 @@ def AssemblyAction( compiler_wrapper, additionalfiles, analyzers, + analyzers_csharp, + analyzer_configs, debug, default_lang_version, defines, @@ -252,6 +265,8 @@ def AssemblyAction( compiler_wrapper, additionalfiles, analyzers, + analyzers_csharp, + analyzer_configs, debug, default_lang_version, defines, @@ -286,19 +301,25 @@ def AssemblyAction( name = assembly_name, version = "1.0.0", #TODO: Maybe make this configurable? project_sdk = project_sdk, - refs = [out_ref], + refs = [out_ref] if not is_analyzer else [], irefs = [out_iref] if out_iref else [out_ref], - analyzers = [], + analyzers = [] if (not is_analyzer) or is_language_specific_analyzer else [out_dll], + analyzers_csharp = [out_dll] if is_language_specific_analyzer else [], + analyzers_fsharp = [], + analyzers_vb = [], internals_visible_to = internals_visible_to or [], compile_data = compile_data, exports = exports_files, transitive_refs = prefs, transitive_analyzers = analyzers, + transitive_analyzers_csharp = analyzers_csharp, + transitive_analyzers_fsharp = analyzers_fsharp, + transitive_analyzers_vb = analyzers_vb, transitive_compile_data = transitive_compile_data, ), DotnetAssemblyRuntimeInfo( name = assembly_name, version = "1.0.0", #TODO: Maybe make this configurable? - libs = [out_dll], + libs = [out_dll] if not is_analyzer else [], pdbs = [out_pdb] if out_pdb else [], xml_docs = [out_xml] if out_xml else [], data = data, @@ -314,6 +335,8 @@ def _compile( compiler_wrapper, additionalfiles, analyzer_assemblies, + analyzer_assemblies_csharp, + analyzer_configs, debug, default_lang_version, defines, @@ -421,7 +444,9 @@ def _compile( # analyzers if run_analyzers: args.add_all(analyzer_assemblies, format_each = "/analyzer:%s") + args.add_all(analyzer_assemblies_csharp, format_each = "/analyzer:%s") args.add_all(additionalfiles, format_each = "/additionalfile:%s") + args.add_all(analyzer_configs, format_each = "/analyzerconfig:%s") # .cs files args.add_all(srcs) @@ -446,7 +471,7 @@ def _compile( args.use_param_file("@%s", use_always = True) - direct_inputs = srcs + resources + additionalfiles + [toolchain.csharp_compiler.files_to_run.executable] + direct_inputs = srcs + resources + additionalfiles + analyzer_configs + [toolchain.csharp_compiler.files_to_run.executable] direct_inputs += [keyfile] if keyfile else [] # dotnet.exe csc.dll /noconfig @@ -456,7 +481,7 @@ def _compile( progress_message = "Compiling " + target_name + (" (internals ref-only dll)" if out_dll == None else ""), inputs = depset( direct = direct_inputs + framework_files + [compiler_wrapper, toolchain.runtime.files_to_run.executable], - transitive = [refs, analyzer_assemblies, toolchain.runtime.default_runfiles.files, toolchain.csharp_compiler.default_runfiles.files, compile_data], + transitive = [refs, analyzer_assemblies, analyzer_assemblies_csharp, toolchain.runtime.default_runfiles.files, toolchain.csharp_compiler.default_runfiles.files, compile_data], ), outputs = outputs, executable = compiler_wrapper, diff --git a/dotnet/private/rules/csharp/binary.bzl b/dotnet/private/rules/csharp/binary.bzl index 034af198..4712126d 100644 --- a/dotnet/private/rules/csharp/binary.bzl +++ b/dotnet/private/rules/csharp/binary.bzl @@ -49,6 +49,9 @@ def _compile_action(ctx, tfm): allow_unsafe_blocks = ctx.attr.allow_unsafe_blocks, nullable = ctx.attr.nullable, run_analyzers = ctx.attr.run_analyzers, + is_analyzer = False, + is_language_specific_analyzer = False, + analyzer_configs = ctx.files.analyzer_configs, compiler_options = ctx.attr.compiler_options, is_windows = ctx.target_platform_has_constraint(ctx.attr._windows_constraint[platform_common.ConstraintValueInfo]), ) diff --git a/dotnet/private/rules/csharp/library.bzl b/dotnet/private/rules/csharp/library.bzl index 8f47f4d0..0e6851ce 100644 --- a/dotnet/private/rules/csharp/library.bzl +++ b/dotnet/private/rules/csharp/library.bzl @@ -48,6 +48,9 @@ def _compile_action(ctx, tfm): allow_unsafe_blocks = ctx.attr.allow_unsafe_blocks, nullable = ctx.attr.nullable, run_analyzers = ctx.attr.run_analyzers, + is_analyzer = ctx.attr.is_analyzer, + is_language_specific_analyzer = ctx.attr.is_language_specific_analyzer, + analyzer_configs = ctx.files.analyzer_configs, compiler_options = ctx.attr.compiler_options, is_windows = ctx.target_platform_has_constraint(ctx.attr._windows_constraint[platform_common.ConstraintValueInfo]), ) diff --git a/dotnet/private/rules/csharp/test.bzl b/dotnet/private/rules/csharp/test.bzl index e2ce0d94..4866e62d 100644 --- a/dotnet/private/rules/csharp/test.bzl +++ b/dotnet/private/rules/csharp/test.bzl @@ -51,6 +51,9 @@ def _compile_action(ctx, tfm): allow_unsafe_blocks = ctx.attr.allow_unsafe_blocks, nullable = ctx.attr.nullable, run_analyzers = ctx.attr.run_analyzers, + is_analyzer = False, + is_language_specific_analyzer = False, + analyzer_configs = ctx.files.analyzer_configs, compiler_options = ctx.attr.compiler_options, is_windows = ctx.target_platform_has_constraint(ctx.attr._windows_constraint[platform_common.ConstraintValueInfo]), ) diff --git a/dotnet/private/rules/fsharp/actions/fsharp_assembly.bzl b/dotnet/private/rules/fsharp/actions/fsharp_assembly.bzl index 8e7c35f8..430b46e5 100644 --- a/dotnet/private/rules/fsharp/actions/fsharp_assembly.bzl +++ b/dotnet/private/rules/fsharp/actions/fsharp_assembly.bzl @@ -148,6 +148,9 @@ def AssemblyAction( irefs, prefs, analyzers, + analyzers_csharp, + analyzers_fsharp, + analyzers_vb, transitive_compile_data, framework_files, exports_files, @@ -278,11 +281,17 @@ def AssemblyAction( refs = [out_dll], irefs = [out_iref] if out_iref else [out_ref] if out_ref else [out_dll], analyzers = [], + analyzers_csharp = [], + analyzers_fsharp = [], + analyzers_vb = [], internals_visible_to = internals_visible_to or [], compile_data = compile_data, exports = exports_files, transitive_refs = prefs, transitive_analyzers = analyzers, + transitive_analyzers_csharp = analyzers_csharp, + transitive_analyzers_fsharp = analyzers_fsharp, + transitive_analyzers_vb = analyzers_vb, transitive_compile_data = transitive_compile_data, ), DotnetAssemblyRuntimeInfo( name = assembly_name, diff --git a/dotnet/private/rules/nuget/imports.bzl b/dotnet/private/rules/nuget/imports.bzl index bae91c17..23876a4d 100644 --- a/dotnet/private/rules/nuget/imports.bzl +++ b/dotnet/private/rules/nuget/imports.bzl @@ -15,6 +15,9 @@ def _import_library(ctx): _irefs, prefs, analyzers, + analyzers_csharp, + analyzers_fsharp, + analyzers_vb, _compile_data, _framework_files, _exports, @@ -40,11 +43,17 @@ def _import_library(ctx): refs = ctx.files.refs, irefs = ctx.files.refs, analyzers = ctx.files.analyzers, + analyzers_csharp = ctx.files.analyzers_csharp, + analyzers_fsharp = ctx.files.analyzers_fsharp, + analyzers_vb = ctx.files.analyzers_vb, compile_data = [], exports = [], transitive_compile_data = depset([]), transitive_refs = prefs, transitive_analyzers = analyzers, + transitive_analyzers_csharp = analyzers_csharp, + transitive_analyzers_fsharp = analyzers_fsharp, + transitive_analyzers_vb = analyzers_vb, internals_visible_to = [], ) @@ -97,6 +106,21 @@ import_library = rule( allow_files = True, # [".dll"] currently does not work with empty file groups allow_empty = True, ), + "analyzers_csharp": attr.label_list( + doc = "Static C# analyzer DLLs", + allow_files = True, # [".dll"] currently does not work with empty file groups + allow_empty = True, + ), + "analyzers_fsharp": attr.label_list( + doc = "Static F# analyzer DLLs", + allow_files = True, # [".dll"] currently does not work with empty file groups + allow_empty = True, + ), + "analyzers_vb": attr.label_list( + doc = "Static VB analyzer DLLs", + allow_files = True, # [".dll"] currently does not work with empty file groups + allow_empty = True, + ), "refs": attr.label_list( doc = "Compile time DLLs", allow_files = True, # [".dll"] currently does not work with empty file groups @@ -140,11 +164,17 @@ def _import_dll(ctx): refs = [ctx.file.dll], irefs = [], analyzers = [], + analyzers_csharp = [], + analyzers_fsharp = [], + analyzers_vb = [], compile_data = [], exports = [], transitive_compile_data = depset([]), transitive_refs = depset([]), transitive_analyzers = depset([]), + transitive_analyzers_csharp = depset([]), + transitive_analyzers_fsharp = depset([]), + transitive_analyzers_vb = depset([]), internals_visible_to = [], ) assembly_runtime_info = DotnetAssemblyRuntimeInfo( diff --git a/dotnet/private/rules/nuget/nuget_archive.bzl b/dotnet/private/rules/nuget/nuget_archive.bzl index bd25e52e..3ca8febc 100644 --- a/dotnet/private/rules/nuget/nuget_archive.bzl +++ b/dotnet/private/rules/nuget/nuget_archive.bzl @@ -192,7 +192,39 @@ def _process_analyzer_file(groups, file): return group = groups["analyzers"] - group["dotnet"].append(file) + + parts = file.split("/") + + # The path format is analyzers/{framework_name}{version}/{supported_architecture}/{supported_language}/{analyzer_name}.dll + # Note: The only supported framework_name is `dotnet` + + # Note: The `supported_architecture` part is not properly handled yet see: https://github.com/dotnet/sdk/issues/20355 + # The tl;dr: Anaylzers can be built for different versions of roslyn and the `target_architecture` is strctured like this `roslyn` e.g. `roslyn3.8`. + # When a NuGet package contains folders under analyzers with the pattern, roslyn., + # the folder with the highest version that is less than or equal to the current Microsoft.CodeAnalysis . version should be used. + # For now we add the latest version of the lowest version of of the package to stay the most compatible. + + # The analyzers can be either language specific or not. If they are not language specific the path will be analyzers/dotnet/{analyzer_name}.dll + # if the analyzers are language specific the path will be analyzers/dotnet/{cs,vb,fs}/{analyzer_name}.dll + if len(parts) == 3: + group["dotnet"].append(file) + elif len(parts) == 4: + lang = parts[2] + group["dotnet/{}".format(lang)].append(file) + elif len(parts) == 5: + lang = parts[3] + supported_architecture = parts[2] + + # Use this as a marker for the lowest version of the dll + if not group.get("dotnet/{}/lowest".format(lang)): + group["dotnet/{}/lowest".format(lang)] = file + group["dotnet/{}".format(lang)].append(file) + else: + # If the current version is lower than the version we have stored we replace it + current_lowest_version = group["dotnet/{}/lowest".format(lang)].split("/")[2] + if supported_architecture < current_lowest_version: + group["dotnet/{}/lowest".format(lang, supported_architecture)] = file + group["dotnet/{}".format(lang)].append(file) return @@ -338,9 +370,11 @@ def _nuget_archive_impl(ctx): groups = { # See https://learn.microsoft.com/en-us/nuget/guides/analyzers-conventions # Example: analyzers/dotnet/cs/System.Runtime.CSharp.Analyzers.dll - # NB: The analyzers supports is not fully implemented yet "analyzers": { "dotnet": [], + "dotnet/cs": [], + "dotnet/fs": [], + "dotnet/vb": [], }, # See: https://devblogs.microsoft.com/nuget/nuget-contentfiles-demystified/ # NB: Only the any group is supported at the moment @@ -453,6 +487,9 @@ load("@rules_dotnet//dotnet/private/rules/nuget:nuget_archive.bzl", "tfm_filegro _create_framework_select("libs", libs) or "filegroup(name = \"libs\", srcs = [])", _create_framework_select("refs", refs) or "filegroup(name = \"refs\", srcs = [])", "filegroup(name = \"analyzers\", srcs = [%s])" % ",".join(["\n \"%s\"" % a for a in groups.get("analyzers")["dotnet"]]), + "filegroup(name = \"analyzers_csharp\", srcs = [%s])" % ",".join(["\n \"%s\"" % a for a in groups.get("analyzers")["dotnet/cs"]]), + "filegroup(name = \"analyzers_fsharp\", srcs = [%s])" % ",".join(["\n \"%s\"" % a for a in groups.get("analyzers")["dotnet/fs"]]), + "filegroup(name = \"analyzers_vb\", srcs = [%s])" % ",".join(["\n \"%s\"" % a for a in groups.get("analyzers")["dotnet/vb"]]), "filegroup(name = \"data\", srcs = [])", _create_rid_native_select("native", native) or "filegroup(name = \"native\", srcs = [])", "filegroup(name = \"content_files\", srcs = [%s])" % ",".join(["\n \"%s\"" % a for a in groups.get("contentFiles")["any"]]), diff --git a/dotnet/private/rules/nuget/template.BUILD b/dotnet/private/rules/nuget/template.BUILD index 45afd442..62c50e34 100644 --- a/dotnet/private/rules/nuget/template.BUILD +++ b/dotnet/private/rules/nuget/template.BUILD @@ -5,6 +5,9 @@ package(default_visibility = ["//visibility:public"]) import_library( name = "{VERSION}", analyzers = ["@{PREFIX}.{ID_LOWER}.v{VERSION}//:analyzers"], + analyzers_csharp = ["@{PREFIX}.{ID_LOWER}.v{VERSION}//:analyzers_csharp"], + analyzers_fsharp = ["@{PREFIX}.{ID_LOWER}.v{VERSION}//:analyzers_fsharp"], + analyzers_vb = ["@{PREFIX}.{ID_LOWER}.v{VERSION}//:analyzers_vb"], data = ["@{PREFIX}.{ID_LOWER}.v{VERSION}//:data"], framework_list = {FRAMEWORK_LIST}, library_name = "{ID}", diff --git a/dotnet/private/tests/nuget_structure/BUILD.bazel b/dotnet/private/tests/nuget_structure/BUILD.bazel index 34421c03..2bfdf40b 100644 --- a/dotnet/private/tests/nuget_structure/BUILD.bazel +++ b/dotnet/private/tests/nuget_structure/BUILD.bazel @@ -1,4 +1,5 @@ load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load(":analyzers.bzl", "analyzers_structure") load(":resolution.bzl", "resolution_structure") load(":runtimes.bzl", "runtimes_structure") load(":typeproviders.bzl", "typeproviders_structure") @@ -9,6 +10,8 @@ runtimes_structure() resolution_structure() +analyzers_structure() + bzl_library( name = "common", srcs = ["common.bzl"], diff --git a/dotnet/private/tests/nuget_structure/analyzers.bzl b/dotnet/private/tests/nuget_structure/analyzers.bzl new file mode 100644 index 00000000..e9b02d7d --- /dev/null +++ b/dotnet/private/tests/nuget_structure/analyzers.bzl @@ -0,0 +1,42 @@ +"NuGet structure tests" + +load("//dotnet/private/tests/nuget_structure:common.bzl", "nuget_structure_test", "nuget_test_wrapper") + +# buildifier: disable=unnamed-macro +def analyzers_structure(): + "Tests for the analyzers folder" + nuget_test_wrapper( + name = "system.text.json", + target_framework = "net8.0", + runtime_identifier = "linux-x64", + package = "@paket.rules_dotnet_dev_nuget_packages//system.text.json", + ) + + nuget_test_wrapper( + name = "microsoft.codeanalysis.analyzers", + target_framework = "net8.0", + runtime_identifier = "linux-x64", + package = "@paket.rules_dotnet_dev_nuget_packages//microsoft.codeanalysis.analyzers", + ) + + nuget_structure_test( + name = "nuget_structure_should_parse_version_specific_analyzers", + target_under_test = ":system.text.json", + expected_libs = ["lib/net7.0/System.Text.Json.dll"], + expected_refs = ["lib/net7.0/System.Text.Json.dll"], + expected_analyzers = [], + expected_analyzers_csharp = ["analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll"], + expected_analyzers_fsharp = [], + expected_analyzers_vb = [], + ) + + nuget_structure_test( + name = "nuget_structure_should_parse_non_version_specific_analyzers", + target_under_test = ":microsoft.codeanalysis.analyzers", + expected_libs = [], + expected_refs = [], + expected_analyzers = [], + expected_analyzers_csharp = ["analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll"], + expected_analyzers_fsharp = [], + expected_analyzers_vb = ["analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll"], + ) diff --git a/dotnet/private/tests/nuget_structure/common.bzl b/dotnet/private/tests/nuget_structure/common.bzl index 0fda4b7b..f37b04a3 100644 --- a/dotnet/private/tests/nuget_structure/common.bzl +++ b/dotnet/private/tests/nuget_structure/common.bzl @@ -49,6 +49,27 @@ def _nuget_structure_test_impl(ctx): "\nExpected analyzers:\n{}\nActual analyzers:\n{}".format(ctx.attr.expected_analyzers, analyzers_files), ) + analyzers_csharp_files = _get_nuget_relative_paths(compile_provider.analyzers_csharp) + asserts.true( + env, + sorted(ctx.attr.expected_analyzers_csharp) == sorted(analyzers_csharp_files), + "\nExpected analyzers_csharp:\n{}\nActual analyzers_csharp:\n{}".format(ctx.attr.expected_analyzers_csharp, analyzers_csharp_files), + ) + + analyzers_fsharp_files = _get_nuget_relative_paths(compile_provider.analyzers_fsharp) + asserts.true( + env, + sorted(ctx.attr.expected_analyzers_fsharp) == sorted(analyzers_fsharp_files), + "\nExpected analyzers_fsharp:\n{}\nActual analyzers_fsharp:\n{}".format(ctx.attr.expected_analyzers_fsharp, analyzers_fsharp_files), + ) + + analyzers_vb_files = _get_nuget_relative_paths(compile_provider.analyzers_vb) + asserts.true( + env, + sorted(ctx.attr.expected_analyzers_vb) == sorted(analyzers_vb_files), + "\nExpected analyzers_vb:\n{}\nActual analyzers_vb:\n{}".format(ctx.attr.expected_analyzers_vb, analyzers_vb_files), + ) + data_files = _get_nuget_relative_paths(runtime_provider.data) asserts.true( env, @@ -71,6 +92,9 @@ nuget_structure_test = analysistest.make( "expected_libs": attr.string_list(default = []), "expected_refs": attr.string_list(default = []), "expected_analyzers": attr.string_list(default = []), + "expected_analyzers_csharp": attr.string_list(default = []), + "expected_analyzers_fsharp": attr.string_list(default = []), + "expected_analyzers_vb": attr.string_list(default = []), "expected_data": attr.string_list(default = []), "expected_native": attr.string_list(default = []), }, diff --git a/dotnet/private/tests/source_generators/generator/.analyzerconfig b/dotnet/private/tests/source_generators/generator/.analyzerconfig new file mode 100644 index 00000000..e97c48b0 --- /dev/null +++ b/dotnet/private/tests/source_generators/generator/.analyzerconfig @@ -0,0 +1,2 @@ +is_global = true +build_property.EnforceExtendedAnalyzerRules = true diff --git a/dotnet/private/tests/source_generators/generator/BUILD.bazel b/dotnet/private/tests/source_generators/generator/BUILD.bazel new file mode 100644 index 00000000..58a1b72a --- /dev/null +++ b/dotnet/private/tests/source_generators/generator/BUILD.bazel @@ -0,0 +1,23 @@ +load("@rules_dotnet//dotnet:defs.bzl", "csharp_library") + +csharp_library( + name = "generator", + srcs = [ + "Generator.cs", + ], + analyzer_configs = [ + ".analyzerconfig", + ], + is_analyzer = True, + is_language_specific_analyzer = True, + target_frameworks = ["netstandard2.0"], + visibility = ["//dotnet/private/tests/source_generators:__subpackages__"], + # Treat this warning as an error so that we know that the analyzer config is working + # The error is: A project containing analyzers or source generators should specify the property 'true' + warnings_as_errors = ["RS1036"], + deps = [ + "@paket.rules_dotnet_dev_nuget_packages//microsoft.codeanalysis.analyzers", + "@paket.rules_dotnet_dev_nuget_packages//microsoft.codeanalysis.common", + "@paket.rules_dotnet_dev_nuget_packages//microsoft.codeanalysis.csharp", + ], +) diff --git a/dotnet/private/tests/source_generators/generator/Generator.cs b/dotnet/private/tests/source_generators/generator/Generator.cs new file mode 100644 index 00000000..fba0786f --- /dev/null +++ b/dotnet/private/tests/source_generators/generator/Generator.cs @@ -0,0 +1,30 @@ +using Microsoft.CodeAnalysis; + +namespace SourceGenerator +{ + [Generator] + public class HelloSourceGenerator : ISourceGenerator + { + public void Execute(GeneratorExecutionContext context) + { + string source = $@"// +using System; + +namespace SourceGeneratorTest +{{ + public static partial class TestGenerator + {{ + public static partial string HelloFrom(string name) => + $""Generator says: Hi from {{name}}""; + }} +}} +"; + context.AddSource($"TestGenerator.g.cs", source); + } + + public void Initialize(GeneratorInitializationContext context) + { + // No initialization required for this one + } + } +} diff --git a/dotnet/private/tests/source_generators/generator_usage/BUILD.bazel b/dotnet/private/tests/source_generators/generator_usage/BUILD.bazel new file mode 100644 index 00000000..02c142ad --- /dev/null +++ b/dotnet/private/tests/source_generators/generator_usage/BUILD.bazel @@ -0,0 +1,11 @@ +load("@rules_dotnet//dotnet:defs.bzl", "csharp_nunit_test") + +csharp_nunit_test( + name = "generator_usage", + srcs = ["Test.cs"], + target_frameworks = ["net8.0"], + deps = [ + "//dotnet/private/tests/source_generators/generator", + "@paket.rules_dotnet_dev_nuget_packages//system.text.json", + ], +) diff --git a/dotnet/private/tests/source_generators/generator_usage/Test.cs b/dotnet/private/tests/source_generators/generator_usage/Test.cs new file mode 100644 index 00000000..dda6839c --- /dev/null +++ b/dotnet/private/tests/source_generators/generator_usage/Test.cs @@ -0,0 +1,23 @@ +using NUnit.Framework; +using System.Linq; + +namespace SourceGeneratorTest +{ + + public static partial class TestGenerator + { + public static partial string HelloFrom(string name); + } + + [TestFixture] + public sealed class Test + { + [Test] + public void LibCompilesAndValueIsSet() + { + Assert.AreEqual("Generator says: Hi from source generator", TestGenerator.HelloFrom("source generator")); + } + } +} + + diff --git a/examples/paket.dependencies b/examples/paket.dependencies index 67c7141f..2273f0d2 100644 --- a/examples/paket.dependencies +++ b/examples/paket.dependencies @@ -6,12 +6,7 @@ group example_deps nuget Expecto 9.0.4 nuget FSharp.Core 6.0.3 nuget FSharp.Data 5.0.2 - nuget NETStandard.Library 2.0.3 - nuget Microsoft.NETCore.App.Ref 6.0.8 - nuget Microsoft.NETCore.App.Runtime.win-x64 6.0.8 - nuget Microsoft.NETCore.App.Runtime.linux-x64 6.0.8 - nuget Microsoft.NETCore.App.Runtime.osx-x64 6.0.8 - nuget Microsoft.AspNetCore.App.Ref 6.0.8 - nuget Microsoft.AspNetCore.App.Runtime.win-x64 6.0.8 - nuget Microsoft.AspNetCore.App.Runtime.linux-x64 6.0.8 - nuget Microsoft.AspNetCore.App.Runtime.osx-x64 6.0.8 + nuget Microsoft.CodeAnalysis.Common 4.9.2 + nuget Microsoft.CodeAnalysis.Analyzers 3.3.4 + nuget Microsoft.CodeAnalysis.CSharp 4.9.2 + diff --git a/examples/paket.example_deps.bzl b/examples/paket.example_deps.bzl index f70f98db..7f19435d 100644 --- a/examples/paket.example_deps.bzl +++ b/examples/paket.example_deps.bzl @@ -10,16 +10,17 @@ def example_deps(): {"name": "Expecto", "id": "Expecto", "version": "9.0.4", "sha512": "sha512-k0TT6pNIyzDaJD0ZxHDhNU0UmmWZlum2XFfHTGrkApQ+JUdjcoBqKOACXrSkfiLVYsD8Ww768eeAiKPP3QYetw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["FSharp.Core", "Mono.Cecil"], "net462": ["FSharp.Core", "Mono.Cecil"], "net47": ["FSharp.Core", "Mono.Cecil"], "net471": ["FSharp.Core", "Mono.Cecil"], "net472": ["FSharp.Core", "Mono.Cecil"], "net48": ["FSharp.Core", "Mono.Cecil"], "net5.0": ["FSharp.Core", "Mono.Cecil"], "net6.0": ["FSharp.Core", "Mono.Cecil"], "net7.0": ["FSharp.Core", "Mono.Cecil"], "net8.0": ["FSharp.Core", "Mono.Cecil"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["FSharp.Core", "Mono.Cecil"], "netcoreapp2.1": ["FSharp.Core", "Mono.Cecil"], "netcoreapp2.2": ["FSharp.Core", "Mono.Cecil"], "netcoreapp3.0": ["FSharp.Core", "Mono.Cecil"], "netcoreapp3.1": ["FSharp.Core", "Mono.Cecil"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["FSharp.Core", "Mono.Cecil"], "netstandard2.1": ["FSharp.Core", "Mono.Cecil"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "FSharp.Core", "id": "FSharp.Core", "version": "6.0.3", "sha512": "sha512-aDyKHiVFMwXWJrfW90iAeKyvw/lN+x98DPfx4oXke9Qnl4dz1sOi8KT2iczGeunqyWXh7nm+XUJ18i/0P3pZYw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "FSharp.Data", "id": "FSharp.Data", "version": "5.0.2", "sha512": "sha512-BlDokqEWMysUMedhZzaREUPrhAbj8VRUEXjUrd85fzH63XaxppqjEYtpjQLnQcwkyWI71bzr3cfzYgaAANQLAQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["FSharp.Core"], "net462": ["FSharp.Core"], "net47": ["FSharp.Core"], "net471": ["FSharp.Core"], "net472": ["FSharp.Core"], "net48": ["FSharp.Core"], "net5.0": ["FSharp.Core"], "net6.0": ["FSharp.Core"], "net7.0": ["FSharp.Core"], "net8.0": ["FSharp.Core"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["FSharp.Core"], "netcoreapp2.1": ["FSharp.Core"], "netcoreapp2.2": ["FSharp.Core"], "netcoreapp3.0": ["FSharp.Core"], "netcoreapp3.1": ["FSharp.Core"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["FSharp.Core"], "netstandard2.1": ["FSharp.Core"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.AspNetCore.App.Ref", "id": "Microsoft.AspNetCore.App.Ref", "version": "6.0.8", "sha512": "sha512-yLy7tFshfGLJRCFdlmOv8YOlJ4J5IfE88bnqiulxsJzhgEQNfbPQLpxbvmjCO3Zg0tdBLAS4B8QYWoojkOkWLg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": ["Microsoft.Extensions.Caching.Abstractions|6.0.0", "Microsoft.Extensions.Caching.Memory|6.0.0", "Microsoft.Extensions.Configuration.Abstractions|6.0.0", "Microsoft.Extensions.Configuration.Binder|6.0.0", "Microsoft.Extensions.Configuration.CommandLine|6.0.0", "Microsoft.Extensions.Configuration|6.0.0", "Microsoft.Extensions.Configuration.EnvironmentVariables|6.0.0", "Microsoft.Extensions.Configuration.FileExtensions|6.0.0", "Microsoft.Extensions.Configuration.Ini|6.0.0", "Microsoft.Extensions.Configuration.Json|6.0.0", "Microsoft.Extensions.Configuration.UserSecrets|6.0.0", "Microsoft.Extensions.Configuration.Xml|6.0.0", "Microsoft.Extensions.DependencyInjection.Abstractions|6.0.0", "Microsoft.Extensions.DependencyInjection|6.0.0", "Microsoft.Extensions.FileProviders.Abstractions|6.0.0", "Microsoft.Extensions.FileProviders.Composite|6.0.0", "Microsoft.Extensions.FileProviders.Physical|6.0.0", "Microsoft.Extensions.FileSystemGlobbing|6.0.0", "Microsoft.Extensions.Hosting.Abstractions|6.0.0", "Microsoft.Extensions.Hosting|6.0.0", "Microsoft.Extensions.Http|6.0.0", "Microsoft.Extensions.Logging.Abstractions|6.0.0", "Microsoft.Extensions.Logging.Configuration|6.0.0", "Microsoft.Extensions.Logging.Console|6.0.0", "Microsoft.Extensions.Logging.Debug|6.0.0", "Microsoft.Extensions.Logging|6.0.0", "Microsoft.Extensions.Logging.EventLog|6.0.0", "Microsoft.Extensions.Logging.EventSource|6.0.0", "Microsoft.Extensions.Logging.TraceSource|6.0.0", "Microsoft.Extensions.Options.ConfigurationExtensions|6.0.0", "Microsoft.Extensions.Options.DataAnnotations|6.0.0", "Microsoft.Extensions.Options|6.0.0", "Microsoft.Extensions.Primitives|6.0.0", "System.Diagnostics.EventLog|6.0.0", "System.IO.Pipelines|6.0.0", "System.Security.Cryptography.Xml|6.0.0", "Microsoft.AspNetCore.Antiforgery|6.0.0", "Microsoft.AspNetCore.Authentication.Abstractions|6.0.0", "Microsoft.AspNetCore.Authentication.Cookies|6.0.0", "Microsoft.AspNetCore.Authentication.Core|6.0.0", "Microsoft.AspNetCore.Authentication|6.0.0", "Microsoft.AspNetCore.Authentication.OAuth|6.0.0", "Microsoft.AspNetCore.Authorization|6.0.0", "Microsoft.AspNetCore.Authorization.Policy|6.0.0", "Microsoft.AspNetCore.Components.Authorization|6.0.0", "Microsoft.AspNetCore.Components|6.0.0", "Microsoft.AspNetCore.Components.Forms|6.0.0", "Microsoft.AspNetCore.Components.Server|6.0.0", "Microsoft.AspNetCore.Components.Web|6.0.0", "Microsoft.AspNetCore.Connections.Abstractions|6.0.0", "Microsoft.AspNetCore.CookiePolicy|6.0.0", "Microsoft.AspNetCore.Cors|6.0.0", "Microsoft.AspNetCore.Cryptography.Internal|6.0.0", "Microsoft.AspNetCore.Cryptography.KeyDerivation|6.0.0", "Microsoft.AspNetCore.DataProtection.Abstractions|6.0.0", "Microsoft.AspNetCore.DataProtection|6.0.0", "Microsoft.AspNetCore.DataProtection.Extensions|6.0.0", "Microsoft.AspNetCore.Diagnostics.Abstractions|6.0.0", "Microsoft.AspNetCore.Diagnostics|6.0.0", "Microsoft.AspNetCore.Diagnostics.HealthChecks|6.0.0", "Microsoft.AspNetCore|6.0.0", "Microsoft.AspNetCore.HostFiltering|6.0.0", "Microsoft.AspNetCore.Hosting.Abstractions|6.0.0", "Microsoft.AspNetCore.Hosting|6.0.0", "Microsoft.AspNetCore.Hosting.Server.Abstractions|6.0.0", "Microsoft.AspNetCore.Html.Abstractions|6.0.0", "Microsoft.AspNetCore.Http.Abstractions|6.0.0", "Microsoft.AspNetCore.Http.Connections.Common|6.0.0", "Microsoft.AspNetCore.Http.Connections|6.0.0", "Microsoft.AspNetCore.Http|6.0.0", "Microsoft.AspNetCore.Http.Extensions|6.0.0", "Microsoft.AspNetCore.Http.Features|6.0.0", "Microsoft.AspNetCore.Http.Results|6.0.0", "Microsoft.AspNetCore.HttpLogging|6.0.0", "Microsoft.AspNetCore.HttpOverrides|6.0.0", "Microsoft.AspNetCore.HttpsPolicy|6.0.0", "Microsoft.AspNetCore.Identity|6.0.0", "Microsoft.AspNetCore.Localization|6.0.0", "Microsoft.AspNetCore.Localization.Routing|6.0.0", "Microsoft.AspNetCore.Metadata|6.0.0", "Microsoft.AspNetCore.Mvc.Abstractions|6.0.0", "Microsoft.AspNetCore.Mvc.ApiExplorer|6.0.0", "Microsoft.AspNetCore.Mvc.Core|6.0.0", "Microsoft.AspNetCore.Mvc.Cors|6.0.0", "Microsoft.AspNetCore.Mvc.DataAnnotations|6.0.0", "Microsoft.AspNetCore.Mvc|6.0.0", "Microsoft.AspNetCore.Mvc.Formatters.Json|6.0.0", "Microsoft.AspNetCore.Mvc.Formatters.Xml|6.0.0", "Microsoft.AspNetCore.Mvc.Localization|6.0.0", "Microsoft.AspNetCore.Mvc.Razor|6.0.0", "Microsoft.AspNetCore.Mvc.RazorPages|6.0.0", "Microsoft.AspNetCore.Mvc.TagHelpers|6.0.0", "Microsoft.AspNetCore.Mvc.ViewFeatures|6.0.0", "Microsoft.AspNetCore.Razor|6.0.0", "Microsoft.AspNetCore.Razor.Runtime|6.0.0", "Microsoft.AspNetCore.ResponseCaching.Abstractions|6.0.0", "Microsoft.AspNetCore.ResponseCaching|6.0.0", "Microsoft.AspNetCore.ResponseCompression|6.0.0", "Microsoft.AspNetCore.Rewrite|6.0.0", "Microsoft.AspNetCore.Routing.Abstractions|6.0.0", "Microsoft.AspNetCore.Routing|6.0.0", "Microsoft.AspNetCore.Server.HttpSys|6.0.0", "Microsoft.AspNetCore.Server.IIS|6.0.0", "Microsoft.AspNetCore.Server.IISIntegration|6.0.0", "Microsoft.AspNetCore.Server.Kestrel.Core|6.0.0", "Microsoft.AspNetCore.Server.Kestrel|6.0.0", "Microsoft.AspNetCore.Server.Kestrel.Transport.Quic|6.0.0", "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets|6.0.0", "Microsoft.AspNetCore.Session|6.0.0", "Microsoft.AspNetCore.SignalR.Common|6.0.0", "Microsoft.AspNetCore.SignalR.Core|6.0.0", "Microsoft.AspNetCore.SignalR|6.0.0", "Microsoft.AspNetCore.SignalR.Protocols.Json|6.0.0", "Microsoft.AspNetCore.StaticFiles|6.0.0", "Microsoft.AspNetCore.WebSockets|6.0.0", "Microsoft.AspNetCore.WebUtilities|6.0.0", "Microsoft.Extensions.Configuration.KeyPerFile|6.0.0", "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions|6.0.0", "Microsoft.Extensions.Diagnostics.HealthChecks|6.0.0", "Microsoft.Extensions.Features|6.0.0", "Microsoft.Extensions.FileProviders.Embedded|6.0.0", "Microsoft.Extensions.Identity.Core|6.0.0", "Microsoft.Extensions.Identity.Stores|6.0.0", "Microsoft.Extensions.Localization.Abstractions|6.0.0", "Microsoft.Extensions.Localization|6.0.0", "Microsoft.Extensions.ObjectPool|6.0.0", "Microsoft.Extensions.WebEncoders|6.0.0", "Microsoft.JSInterop|6.0.0", "Microsoft.Net.Http.Headers|6.0.0"], "framework_list": ["Microsoft.AspNetCore.Antiforgery|6.0.0.0", "Microsoft.AspNetCore.Authentication.Abstractions|6.0.0.0", "Microsoft.AspNetCore.Authentication.Cookies|6.0.0.0", "Microsoft.AspNetCore.Authentication.Core|6.0.0.0", "Microsoft.AspNetCore.Authentication.OAuth|6.0.0.0", "Microsoft.AspNetCore.Authentication|6.0.0.0", "Microsoft.AspNetCore.Authorization.Policy|6.0.0.0", "Microsoft.AspNetCore.Authorization|6.0.0.0", "Microsoft.AspNetCore.Components.Authorization|6.0.0.0", "Microsoft.AspNetCore.Components.Forms|6.0.0.0", "Microsoft.AspNetCore.Components.Server|6.0.0.0", "Microsoft.AspNetCore.Components.Web|6.0.0.0", "Microsoft.AspNetCore.Components|6.0.0.0", "Microsoft.AspNetCore.Connections.Abstractions|6.0.0.0", "Microsoft.AspNetCore.CookiePolicy|6.0.0.0", "Microsoft.AspNetCore.Cors|6.0.0.0", "Microsoft.AspNetCore.Cryptography.Internal|6.0.0.0", "Microsoft.AspNetCore.Cryptography.KeyDerivation|6.0.0.0", "Microsoft.AspNetCore.DataProtection.Abstractions|6.0.0.0", "Microsoft.AspNetCore.DataProtection.Extensions|6.0.0.0", "Microsoft.AspNetCore.DataProtection|6.0.0.0", "Microsoft.AspNetCore.Diagnostics.Abstractions|6.0.0.0", "Microsoft.AspNetCore.Diagnostics.HealthChecks|6.0.0.0", "Microsoft.AspNetCore.Diagnostics|6.0.0.0", "Microsoft.AspNetCore.HostFiltering|6.0.0.0", "Microsoft.AspNetCore.Hosting.Abstractions|6.0.0.0", "Microsoft.AspNetCore.Hosting.Server.Abstractions|6.0.0.0", "Microsoft.AspNetCore.Hosting|6.0.0.0", "Microsoft.AspNetCore.Html.Abstractions|6.0.0.0", "Microsoft.AspNetCore.Http.Abstractions|6.0.0.0", "Microsoft.AspNetCore.Http.Connections.Common|6.0.0.0", "Microsoft.AspNetCore.Http.Connections|6.0.0.0", "Microsoft.AspNetCore.Http.Extensions|6.0.0.0", "Microsoft.AspNetCore.Http.Features|6.0.0.0", "Microsoft.AspNetCore.Http.Results|6.0.0.0", "Microsoft.AspNetCore.Http|6.0.0.0", "Microsoft.AspNetCore.HttpLogging|6.0.0.0", "Microsoft.AspNetCore.HttpOverrides|6.0.0.0", "Microsoft.AspNetCore.HttpsPolicy|6.0.0.0", "Microsoft.AspNetCore.Identity|6.0.0.0", "Microsoft.AspNetCore.Localization.Routing|6.0.0.0", "Microsoft.AspNetCore.Localization|6.0.0.0", "Microsoft.AspNetCore.Metadata|6.0.0.0", "Microsoft.AspNetCore.Mvc.Abstractions|6.0.0.0", "Microsoft.AspNetCore.Mvc.ApiExplorer|6.0.0.0", "Microsoft.AspNetCore.Mvc.Core|6.0.0.0", "Microsoft.AspNetCore.Mvc.Cors|6.0.0.0", "Microsoft.AspNetCore.Mvc.DataAnnotations|6.0.0.0", "Microsoft.AspNetCore.Mvc.Formatters.Json|6.0.0.0", "Microsoft.AspNetCore.Mvc.Formatters.Xml|6.0.0.0", "Microsoft.AspNetCore.Mvc.Localization|6.0.0.0", "Microsoft.AspNetCore.Mvc.Razor|6.0.0.0", "Microsoft.AspNetCore.Mvc.RazorPages|6.0.0.0", "Microsoft.AspNetCore.Mvc.TagHelpers|6.0.0.0", "Microsoft.AspNetCore.Mvc.ViewFeatures|6.0.0.0", "Microsoft.AspNetCore.Mvc|6.0.0.0", "Microsoft.AspNetCore.Razor.Runtime|6.0.0.0", "Microsoft.AspNetCore.Razor|6.0.0.0", "Microsoft.AspNetCore.ResponseCaching.Abstractions|6.0.0.0", "Microsoft.AspNetCore.ResponseCaching|6.0.0.0", "Microsoft.AspNetCore.ResponseCompression|6.0.0.0", "Microsoft.AspNetCore.Rewrite|6.0.0.0", "Microsoft.AspNetCore.Routing.Abstractions|6.0.0.0", "Microsoft.AspNetCore.Routing|6.0.0.0", "Microsoft.AspNetCore.Server.HttpSys|6.0.0.0", "Microsoft.AspNetCore.Server.IIS|6.0.0.0", "Microsoft.AspNetCore.Server.IISIntegration|6.0.0.0", "Microsoft.AspNetCore.Server.Kestrel.Core|6.0.0.0", "Microsoft.AspNetCore.Server.Kestrel.Transport.Quic|6.0.0.0", "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets|6.0.0.0", "Microsoft.AspNetCore.Server.Kestrel|6.0.0.0", "Microsoft.AspNetCore.Session|6.0.0.0", "Microsoft.AspNetCore.SignalR.Common|6.0.0.0", "Microsoft.AspNetCore.SignalR.Core|6.0.0.0", "Microsoft.AspNetCore.SignalR.Protocols.Json|6.0.0.0", "Microsoft.AspNetCore.SignalR|6.0.0.0", "Microsoft.AspNetCore.StaticFiles|6.0.0.0", "Microsoft.AspNetCore.WebSockets|6.0.0.0", "Microsoft.AspNetCore.WebUtilities|6.0.0.0", "Microsoft.AspNetCore|6.0.0.0", "Microsoft.Extensions.Caching.Abstractions|6.0.0.0", "Microsoft.Extensions.Caching.Memory|6.0.0.0", "Microsoft.Extensions.Configuration.Abstractions|6.0.0.0", "Microsoft.Extensions.Configuration.Binder|6.0.0.0", "Microsoft.Extensions.Configuration.CommandLine|6.0.0.0", "Microsoft.Extensions.Configuration.EnvironmentVariables|6.0.0.0", "Microsoft.Extensions.Configuration.FileExtensions|6.0.0.0", "Microsoft.Extensions.Configuration.Ini|6.0.0.0", "Microsoft.Extensions.Configuration.Json|6.0.0.0", "Microsoft.Extensions.Configuration.KeyPerFile|6.0.0.0", "Microsoft.Extensions.Configuration.UserSecrets|6.0.0.0", "Microsoft.Extensions.Configuration.Xml|6.0.0.0", "Microsoft.Extensions.Configuration|6.0.0.0", "Microsoft.Extensions.DependencyInjection.Abstractions|6.0.0.0", "Microsoft.Extensions.DependencyInjection|6.0.0.0", "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions|6.0.0.0", "Microsoft.Extensions.Diagnostics.HealthChecks|6.0.0.0", "Microsoft.Extensions.Features|6.0.0.0", "Microsoft.Extensions.FileProviders.Abstractions|6.0.0.0", "Microsoft.Extensions.FileProviders.Composite|6.0.0.0", "Microsoft.Extensions.FileProviders.Embedded|6.0.0.0", "Microsoft.Extensions.FileProviders.Physical|6.0.0.0", "Microsoft.Extensions.FileSystemGlobbing|6.0.0.0", "Microsoft.Extensions.Hosting.Abstractions|6.0.0.0", "Microsoft.Extensions.Hosting|6.0.0.0", "Microsoft.Extensions.Http|6.0.0.0", "Microsoft.Extensions.Identity.Core|6.0.0.0", "Microsoft.Extensions.Identity.Stores|6.0.0.0", "Microsoft.Extensions.Localization.Abstractions|6.0.0.0", "Microsoft.Extensions.Localization|6.0.0.0", "Microsoft.Extensions.Logging.Abstractions|6.0.0.0", "Microsoft.Extensions.Logging.Configuration|6.0.0.0", "Microsoft.Extensions.Logging.Console|6.0.0.0", "Microsoft.Extensions.Logging.Debug|6.0.0.0", "Microsoft.Extensions.Logging.EventLog|6.0.0.0", "Microsoft.Extensions.Logging.EventSource|6.0.0.0", "Microsoft.Extensions.Logging.TraceSource|6.0.0.0", "Microsoft.Extensions.Logging|6.0.0.0", "Microsoft.Extensions.ObjectPool|6.0.0.0", "Microsoft.Extensions.Options.ConfigurationExtensions|6.0.0.0", "Microsoft.Extensions.Options.DataAnnotations|6.0.0.0", "Microsoft.Extensions.Options|6.0.0.0", "Microsoft.Extensions.Primitives|6.0.0.0", "Microsoft.Extensions.WebEncoders|6.0.0.0", "Microsoft.JSInterop|6.0.0.0", "Microsoft.Net.Http.Headers|6.0.0.0", "System.Diagnostics.EventLog|6.0.0.0", "System.IO.Pipelines|6.0.0.0", "System.Security.Cryptography.Xml|6.0.0.0"]}, - {"name": "Microsoft.AspNetCore.App.Runtime.linux-x64", "id": "Microsoft.AspNetCore.App.Runtime.linux-x64", "version": "6.0.8", "sha512": "sha512-3Hig5sP4ALm0aaB3cYCdhmW0a6SgT23ReaP5oYOZ9p1fQoQy4fHeLlU2LXQTXgJDopd3sQZCaWg639rJCYppiQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.AspNetCore.App.Runtime.osx-x64", "id": "Microsoft.AspNetCore.App.Runtime.osx-x64", "version": "6.0.8", "sha512": "sha512-AQHu61cati6QzemklVlevQgChYJ3+msUUnXVDh51cEHhFEO/HBLKFWTiS1A49jnLBFpNUY98jPJMauyKIrh4jQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.AspNetCore.App.Runtime.win-x64", "id": "Microsoft.AspNetCore.App.Runtime.win-x64", "version": "6.0.8", "sha512": "sha512-fSuPkgA89T57pmGx2g6pcMSizT49ABL43d6s8Vp0PCzPjrme7UBISHATM9zP45Sq6GUhTZe2892wj7NmPa0wBA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.NETCore.App.Ref", "id": "Microsoft.NETCore.App.Ref", "version": "6.0.8", "sha512": "sha512-TcZWOpmw+hWGQANrK0YWS3oHvtxdkn5A5JB284IdgXNvQ4rGABOPK8u52qB2bATbpSy3DbiMdobRxgAB2/mcJQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": ["Microsoft.CSharp|4.4.0", "Microsoft.Win32.Primitives|4.3.0", "Microsoft.Win32.Registry|4.4.0", "runtime.debian.8-x64.runtime.native.System|4.3.0", "runtime.debian.8-x64.runtime.native.System.IO.Compression|4.3.0", "runtime.debian.8-x64.runtime.native.System.Net.Http|4.3.0", "runtime.debian.8-x64.runtime.native.System.Net.Security|4.3.0", "runtime.debian.8-x64.runtime.native.System.Security.Cryptography|4.3.0", "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0", "runtime.fedora.23-x64.runtime.native.System|4.3.0", "runtime.fedora.23-x64.runtime.native.System.IO.Compression|4.3.0", "runtime.fedora.23-x64.runtime.native.System.Net.Http|4.3.0", "runtime.fedora.23-x64.runtime.native.System.Net.Security|4.3.0", "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography|4.3.0", "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0", "runtime.fedora.24-x64.runtime.native.System|4.3.0", "runtime.fedora.24-x64.runtime.native.System.IO.Compression|4.3.0", "runtime.fedora.24-x64.runtime.native.System.Net.Http|4.3.0", "runtime.fedora.24-x64.runtime.native.System.Net.Security|4.3.0", "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography|4.3.0", "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0", "runtime.opensuse.13.2-x64.runtime.native.System|4.3.0", "runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression|4.3.0", "runtime.opensuse.13.2-x64.runtime.native.System.Net.Http|4.3.0", "runtime.opensuse.13.2-x64.runtime.native.System.Net.Security|4.3.0", "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography|4.3.0", "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0", "runtime.opensuse.42.1-x64.runtime.native.System|4.3.0", "runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression|4.3.0", "runtime.opensuse.42.1-x64.runtime.native.System.Net.Http|4.3.0", "runtime.opensuse.42.1-x64.runtime.native.System.Net.Security|4.3.0", "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography|4.3.0", "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0", "runtime.osx.10.10-x64.runtime.native.System|4.3.0", "runtime.osx.10.10-x64.runtime.native.System.IO.Compression|4.3.0", "runtime.osx.10.10-x64.runtime.native.System.Net.Http|4.3.0", "runtime.osx.10.10-x64.runtime.native.System.Net.Security|4.3.0", "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography|4.3.0", "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple|4.3.0", "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0", "runtime.rhel.7-x64.runtime.native.System|4.3.0", "runtime.rhel.7-x64.runtime.native.System.IO.Compression|4.3.0", "runtime.rhel.7-x64.runtime.native.System.Net.Http|4.3.0", "runtime.rhel.7-x64.runtime.native.System.Net.Security|4.3.0", "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography|4.3.0", "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0", "runtime.ubuntu.14.04-x64.runtime.native.System|4.3.0", "runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression|4.3.0", "runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http|4.3.0", "runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security|4.3.0", "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography|4.3.0", "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0", "runtime.ubuntu.16.04-x64.runtime.native.System|4.3.0", "runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression|4.3.0", "runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http|4.3.0", "runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security|4.3.0", "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography|4.3.0", "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0", "runtime.ubuntu.16.10-x64.runtime.native.System|4.3.0", "runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression|4.3.0", "runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http|4.3.0", "runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security|4.3.0", "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography|4.3.0", "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0", "System.AppContext|4.3.0", "System.Buffers|4.4.0", "System.Collections|4.3.0", "System.Collections.Concurrent|4.3.0", "System.Collections.Immutable|1.4.0", "System.Collections.NonGeneric|4.3.0", "System.Collections.Specialized|4.3.0", "System.ComponentModel|4.3.0", "System.ComponentModel.EventBasedAsync|4.3.0", "System.ComponentModel.Primitives|4.3.0", "System.ComponentModel.TypeConverter|4.3.0", "System.Console|4.3.0", "System.Data.Common|4.3.0", "System.Diagnostics.Contracts|4.3.0", "System.Diagnostics.Debug|4.3.0", "System.Diagnostics.DiagnosticSource|4.4.0", "System.Diagnostics.FileVersionInfo|4.3.0", "System.Diagnostics.Process|4.3.0", "System.Diagnostics.StackTrace|4.3.0", "System.Diagnostics.TextWriterTraceListener|4.3.0", "System.Diagnostics.Tools|4.3.0", "System.Diagnostics.TraceSource|4.3.0", "System.Diagnostics.Tracing|4.3.0", "System.Dynamic.Runtime|4.3.0", "System.Globalization|4.3.0", "System.Globalization.Calendars|4.3.0", "System.Globalization.Extensions|4.3.0", "System.IO|4.3.0", "System.IO.Compression|4.3.0", "System.IO.Compression.ZipFile|4.3.0", "System.IO.FileSystem|4.3.0", "System.IO.FileSystem.AccessControl|4.4.0", "System.IO.FileSystem.DriveInfo|4.3.0", "System.IO.FileSystem.Primitives|4.3.0", "System.IO.FileSystem.Watcher|4.3.0", "System.IO.IsolatedStorage|4.3.0", "System.IO.MemoryMappedFiles|4.3.0", "System.IO.Pipes|4.3.0", "System.IO.UnmanagedMemoryStream|4.3.0", "System.Linq|4.3.0", "System.Linq.Expressions|4.3.0", "System.Linq.Queryable|4.3.0", "System.Net.Http|4.3.0", "System.Net.NameResolution|4.3.0", "System.Net.Primitives|4.3.0", "System.Net.Requests|4.3.0", "System.Net.Security|4.3.0", "System.Net.Sockets|4.3.0", "System.Net.WebHeaderCollection|4.3.0", "System.ObjectModel|4.3.0", "System.Private.DataContractSerialization|4.3.0", "System.Reflection|4.3.0", "System.Reflection.Emit|4.3.0", "System.Reflection.Emit.ILGeneration|4.3.0", "System.Reflection.Emit.Lightweight|4.3.0", "System.Reflection.Extensions|4.3.0", "System.Reflection.Metadata|1.5.0", "System.Reflection.Primitives|4.3.0", "System.Reflection.TypeExtensions|4.3.0", "System.Resources.ResourceManager|4.3.0", "System.Runtime|4.3.0", "System.Runtime.Extensions|4.3.0", "System.Runtime.Handles|4.3.0", "System.Runtime.InteropServices|4.3.0", "System.Runtime.InteropServices.RuntimeInformation|4.3.0", "System.Runtime.Loader|4.3.0", "System.Runtime.Numerics|4.3.0", "System.Runtime.Serialization.Formatters|4.3.0", "System.Runtime.Serialization.Json|4.3.0", "System.Runtime.Serialization.Primitives|4.3.0", "System.Security.AccessControl|4.4.0", "System.Security.Claims|4.3.0", "System.Security.Cryptography.Algorithms|4.3.0", "System.Security.Cryptography.Cng|4.4.0", "System.Security.Cryptography.Csp|4.3.0", "System.Security.Cryptography.Encoding|4.3.0", "System.Security.Cryptography.OpenSsl|4.4.0", "System.Security.Cryptography.Primitives|4.3.0", "System.Security.Cryptography.X509Certificates|4.3.0", "System.Security.Cryptography.Xml|4.4.0", "System.Security.Principal|4.3.0", "System.Security.Principal.Windows|4.4.0", "System.Text.Encoding|4.3.0", "System.Text.Encoding.Extensions|4.3.0", "System.Text.RegularExpressions|4.3.0", "System.Threading|4.3.0", "System.Threading.Overlapped|4.3.0", "System.Threading.Tasks|4.3.0", "System.Threading.Tasks.Extensions|4.3.0", "System.Threading.Tasks.Parallel|4.3.0", "System.Threading.Thread|4.3.0", "System.Threading.ThreadPool|4.3.0", "System.Threading.Timer|4.3.0", "System.ValueTuple|4.3.0", "System.Xml.ReaderWriter|4.3.0", "System.Xml.XDocument|4.3.0", "System.Xml.XmlDocument|4.3.0", "System.Xml.XmlSerializer|4.3.0", "System.Xml.XPath|4.3.0", "System.Xml.XPath.XDocument|4.3.0"], "framework_list": ["Microsoft.CSharp|6.0.0.0", "Microsoft.VisualBasic.Core|11.0.0.0", "Microsoft.VisualBasic|10.0.0.0", "Microsoft.Win32.Primitives|6.0.0.0", "Microsoft.Win32.Registry|6.0.0.0", "System.AppContext|6.0.0.0", "System.Buffers|6.0.0.0", "System.Collections.Concurrent|6.0.0.0", "System.Collections.Immutable|6.0.0.0", "System.Collections.NonGeneric|6.0.0.0", "System.Collections.Specialized|6.0.0.0", "System.Collections|6.0.0.0", "System.ComponentModel.Annotations|6.0.0.0", "System.ComponentModel.DataAnnotations|4.0.0.0", "System.ComponentModel.EventBasedAsync|6.0.0.0", "System.ComponentModel.Primitives|6.0.0.0", "System.ComponentModel.TypeConverter|6.0.0.0", "System.ComponentModel|6.0.0.0", "System.Configuration|4.0.0.0", "System.Console|6.0.0.0", "System.Core|4.0.0.0", "System.Data.Common|6.0.0.0", "System.Data.DataSetExtensions|4.0.0.0", "System.Data|4.0.0.0", "System.Diagnostics.Contracts|6.0.0.0", "System.Diagnostics.Debug|6.0.0.0", "System.Diagnostics.DiagnosticSource|6.0.0.0", "System.Diagnostics.FileVersionInfo|6.0.0.0", "System.Diagnostics.Process|6.0.0.0", "System.Diagnostics.StackTrace|6.0.0.0", "System.Diagnostics.TextWriterTraceListener|6.0.0.0", "System.Diagnostics.Tools|6.0.0.0", "System.Diagnostics.TraceSource|6.0.0.0", "System.Diagnostics.Tracing|6.0.0.0", "System.Drawing.Primitives|6.0.0.0", "System.Drawing|4.0.0.0", "System.Dynamic.Runtime|6.0.0.0", "System.Formats.Asn1|6.0.0.0", "System.Globalization.Calendars|6.0.0.0", "System.Globalization.Extensions|6.0.0.0", "System.Globalization|6.0.0.0", "System.IO.Compression.Brotli|6.0.0.0", "System.IO.Compression.FileSystem|4.0.0.0", "System.IO.Compression.ZipFile|6.0.0.0", "System.IO.Compression|6.0.0.0", "System.IO.FileSystem.AccessControl|6.0.0.0", "System.IO.FileSystem.DriveInfo|6.0.0.0", "System.IO.FileSystem.Primitives|6.0.0.0", "System.IO.FileSystem.Watcher|6.0.0.0", "System.IO.FileSystem|6.0.0.0", "System.IO.IsolatedStorage|6.0.0.0", "System.IO.MemoryMappedFiles|6.0.0.0", "System.IO.Pipes.AccessControl|6.0.0.0", "System.IO.Pipes|6.0.0.0", "System.IO.UnmanagedMemoryStream|6.0.0.0", "System.IO|6.0.0.0", "System.Linq.Expressions|6.0.0.0", "System.Linq.Parallel|6.0.0.0", "System.Linq.Queryable|6.0.0.0", "System.Linq|6.0.0.0", "System.Memory|6.0.0.0", "System.Net.Http.Json|6.0.0.0", "System.Net.Http|6.0.0.0", "System.Net.HttpListener|6.0.0.0", "System.Net.Mail|6.0.0.0", "System.Net.NameResolution|6.0.0.0", "System.Net.NetworkInformation|6.0.0.0", "System.Net.Ping|6.0.0.0", "System.Net.Primitives|6.0.0.0", "System.Net.Requests|6.0.0.0", "System.Net.Security|6.0.0.0", "System.Net.ServicePoint|6.0.0.0", "System.Net.Sockets|6.0.0.0", "System.Net.WebClient|6.0.0.0", "System.Net.WebHeaderCollection|6.0.0.0", "System.Net.WebProxy|6.0.0.0", "System.Net.WebSockets.Client|6.0.0.0", "System.Net.WebSockets|6.0.0.0", "System.Net|4.0.0.0", "System.Numerics.Vectors|6.0.0.0", "System.Numerics|4.0.0.0", "System.ObjectModel|6.0.0.0", "System.Reflection.DispatchProxy|6.0.0.0", "System.Reflection.Emit.ILGeneration|6.0.0.0", "System.Reflection.Emit.Lightweight|6.0.0.0", "System.Reflection.Emit|6.0.0.0", "System.Reflection.Extensions|6.0.0.0", "System.Reflection.Metadata|6.0.0.0", "System.Reflection.Primitives|6.0.0.0", "System.Reflection.TypeExtensions|6.0.0.0", "System.Reflection|6.0.0.0", "System.Resources.Reader|6.0.0.0", "System.Resources.ResourceManager|6.0.0.0", "System.Resources.Writer|6.0.0.0", "System.Runtime.CompilerServices.Unsafe|6.0.0.0", "System.Runtime.CompilerServices.VisualC|6.0.0.0", "System.Runtime.Extensions|6.0.0.0", "System.Runtime.Handles|6.0.0.0", "System.Runtime.InteropServices.RuntimeInformation|6.0.0.0", "System.Runtime.InteropServices|6.0.0.0", "System.Runtime.Intrinsics|6.0.0.0", "System.Runtime.Loader|6.0.0.0", "System.Runtime.Numerics|6.0.0.0", "System.Runtime.Serialization.Formatters|6.0.0.0", "System.Runtime.Serialization.Json|6.0.0.0", "System.Runtime.Serialization.Primitives|6.0.0.0", "System.Runtime.Serialization.Xml|6.0.0.0", "System.Runtime.Serialization|4.0.0.0", "System.Runtime|6.0.0.0", "System.Security.AccessControl|6.0.0.0", "System.Security.Claims|6.0.0.0", "System.Security.Cryptography.Algorithms|6.0.0.0", "System.Security.Cryptography.Cng|6.0.0.0", "System.Security.Cryptography.Csp|6.0.0.0", "System.Security.Cryptography.Encoding|6.0.0.0", "System.Security.Cryptography.OpenSsl|6.0.0.0", "System.Security.Cryptography.Primitives|6.0.0.0", "System.Security.Cryptography.X509Certificates|6.0.0.0", "System.Security.Principal.Windows|6.0.0.0", "System.Security.Principal|6.0.0.0", "System.Security.SecureString|6.0.0.0", "System.Security|4.0.0.0", "System.ServiceModel.Web|4.0.0.0", "System.ServiceProcess|4.0.0.0", "System.Text.Encoding.CodePages|6.0.0.0", "System.Text.Encoding.Extensions|6.0.0.0", "System.Text.Encoding|6.0.0.0", "System.Text.Encodings.Web|6.0.0.0", "System.Text.Json|6.0.0.0", "System.Text.RegularExpressions|6.0.0.0", "System.Threading.Channels|6.0.0.0", "System.Threading.Overlapped|6.0.0.0", "System.Threading.Tasks.Dataflow|6.0.0.0", "System.Threading.Tasks.Extensions|6.0.0.0", "System.Threading.Tasks.Parallel|6.0.0.0", "System.Threading.Tasks|6.0.0.0", "System.Threading.Thread|6.0.0.0", "System.Threading.ThreadPool|6.0.0.0", "System.Threading.Timer|6.0.0.0", "System.Threading|6.0.0.0", "System.Transactions.Local|6.0.0.0", "System.Transactions|4.0.0.0", "System.ValueTuple|4.0.3.0", "System.Web.HttpUtility|6.0.0.0", "System.Web|4.0.0.0", "System.Windows|4.0.0.0", "System.Xml.Linq|4.0.0.0", "System.Xml.ReaderWriter|6.0.0.0", "System.Xml.Serialization|4.0.0.0", "System.Xml.XDocument|6.0.0.0", "System.Xml.XPath.XDocument|6.0.0.0", "System.Xml.XPath|6.0.0.0", "System.Xml.XmlDocument|6.0.0.0", "System.Xml.XmlSerializer|6.0.0.0", "System.Xml|4.0.0.0", "System|4.0.0.0", "WindowsBase|4.0.0.0", "mscorlib|4.0.0.0", "netstandard|2.1.0.0"]}, - {"name": "Microsoft.NETCore.App.Runtime.linux-x64", "id": "Microsoft.NETCore.App.Runtime.linux-x64", "version": "6.0.8", "sha512": "sha512-cjVzAUiYxPv949mXl0IbwzSRq0xBTGcW3N619CUcCwe35Ma1C1Tg1nh75Xc+OEn5+eAMW/S66dy+kQhdc277tA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.NETCore.App.Runtime.osx-x64", "id": "Microsoft.NETCore.App.Runtime.osx-x64", "version": "6.0.8", "sha512": "sha512-RDOy3pzl0sutv5U3JAx23JWiw2UCoHAPNsCo35TA8MU2DM+LMDXN/lxi2cslot6GfFsxe0cYhclkEocHa2xMPQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.NETCore.App.Runtime.win-x64", "id": "Microsoft.NETCore.App.Runtime.win-x64", "version": "6.0.8", "sha512": "sha512-pgpxzvQPZzBPD1lWulgRO/aafBhSBLhqH+SrBD+sYSIu7eswlxE5icW/r8o60fNFKYVg0CFvrnmCut5YpTT27Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.NETCore.Platforms", "id": "Microsoft.NETCore.Platforms", "version": "7.0.4", "sha512": "sha512-mcQWjuDBh4WHGG4WcBI0k025WAdA2afMm6fs42sm1f+3gRyNQUiuMVT5gAWNUGSHmlu6qn/TCnAQpfl4Gm6cBw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.Analyzers", "id": "Microsoft.CodeAnalysis.Analyzers", "version": "3.3.4", "sha512": "sha512-I+Riw6/6WjNICydoiNpDjN/GGP7u4XsL6VsI9lG/OjFufH3flvSEy/fxNhGDVGwZWwq/5BlnqX+LH2dmheaPfg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.Common", "id": "Microsoft.CodeAnalysis.Common", "version": "4.9.2", "sha512": "sha512-XCtqPQdnoqfrBSidFWIESm8exXVHF4yPY94e84St2PVZPc2bGeQNXdFNwadu1Bd2sr/bAgM5B0UHbCqBz+/SeQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.CSharp", "id": "Microsoft.CodeAnalysis.CSharp", "version": "4.9.2", "sha512": "sha512-oy5nUdJOaOQEjUZimhYH4xU6nVxt8ctkdP7HT2fc32ecvH50QeIwJXgjNt7MGUyhJO+Wd3SipQWQ5QyDw7VuLg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common"], "net462": ["Microsoft.CodeAnalysis.Common"], "net47": ["Microsoft.CodeAnalysis.Common"], "net471": ["Microsoft.CodeAnalysis.Common"], "net472": ["Microsoft.CodeAnalysis.Common"], "net48": ["Microsoft.CodeAnalysis.Common"], "net5.0": ["Microsoft.CodeAnalysis.Common"], "net6.0": ["Microsoft.CodeAnalysis.Common"], "net7.0": ["Microsoft.CodeAnalysis.Common"], "net8.0": ["Microsoft.CodeAnalysis.Common"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Mono.Cecil", "id": "Mono.Cecil", "version": "0.11.4", "sha512": "sha512-CnjwUMmFHnScNG8e/4DRZQQX67H5ajekRDudmZ6Fy1jCLhyH1jjzbQCOEFhBLa2NjPWQpMF+RHdBJY8a7GgmlA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "NETStandard.Library", "id": "NETStandard.Library", "version": "2.0.3", "sha512": "sha512-548M6mnBSJWxsIlkQHfbzoYxpiYFXZZSL00p4GHYv8PkiqFBnnT68mW5mGEsA/ch9fDO9GkPgkFQpWiXZN7mAQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["Microsoft.NETCore.Platforms"], "net451": ["Microsoft.NETCore.Platforms"], "net452": ["Microsoft.NETCore.Platforms"], "net46": ["Microsoft.NETCore.Platforms"], "net461": ["Microsoft.NETCore.Platforms"], "net462": ["Microsoft.NETCore.Platforms"], "net47": ["Microsoft.NETCore.Platforms"], "net471": ["Microsoft.NETCore.Platforms"], "net472": ["Microsoft.NETCore.Platforms"], "net48": ["Microsoft.NETCore.Platforms"], "net5.0": ["Microsoft.NETCore.Platforms"], "net6.0": ["Microsoft.NETCore.Platforms"], "net7.0": ["Microsoft.NETCore.Platforms"], "net8.0": ["Microsoft.NETCore.Platforms"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms"], "netstandard1.1": ["Microsoft.NETCore.Platforms"], "netstandard1.2": ["Microsoft.NETCore.Platforms"], "netstandard1.3": ["Microsoft.NETCore.Platforms"], "netstandard1.4": ["Microsoft.NETCore.Platforms"], "netstandard1.5": ["Microsoft.NETCore.Platforms"], "netstandard1.6": ["Microsoft.NETCore.Platforms"], "netstandard2.0": ["Microsoft.NETCore.Platforms"], "netstandard2.1": ["Microsoft.NETCore.Platforms"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Buffers", "id": "System.Buffers", "version": "4.5.1", "sha512": "sha512-gNphWOVbm89+C15jebnPRaYykU8De1PFv1YJV24814IfeGGVa3PXRHDS0MLlbdI1pe9Mpv/n4ZK4INwtAjqv8g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Collections.Immutable", "id": "System.Collections.Immutable", "version": "8.0.0", "sha512": "sha512-BXqVkcIrhimvvem6q2ChWkuW6XYYirvb6FlhvuwaMoBqBdpcr4nehJBKP65Tw40UqcUM6oDoODsecM0yjZ6AUw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Runtime.CompilerServices.Unsafe"], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Memory", "id": "System.Memory", "version": "4.5.5", "sha512": "sha512-6MjlNsl7lKw0Q8lAsw2tQ89ul9x6jD2Yk3EEj+dOFoYGOE9eAUO9wNhvd4O/n97oQXlkyzqKXXUnE+kLElFy3A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "net451": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "net452": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "net46": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "net461": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp1.1": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard1.2": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard1.3": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard1.4": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard1.5": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard1.6": ["System.Buffers", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Numerics.Vectors", "id": "System.Numerics.Vectors", "version": "4.5.0", "sha512": "sha512-nATsBTD2CKr4AYN6eRszhX4sptImWmBJwB/U6XKCWWfnCcrTBw8XSCm3QA9gjppkHTr8OkXUY21MR91D3QZXsw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Reflection.Metadata", "id": "System.Reflection.Metadata", "version": "8.0.0", "sha512": "sha512-+6sMdkJjee0B6nm3AlBBl7cQaI0oPniLvvkrkFhmEN3fo/hGONaFdwpAaO+GRTlbZe4kRZzFwU7kSXQW0RyJxg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Memory"], "net6.0": ["System.Collections.Immutable"], "net7.0": ["System.Collections.Immutable"], "net8.0": ["System.Collections.Immutable"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Runtime.CompilerServices.Unsafe", "id": "System.Runtime.CompilerServices.Unsafe", "version": "6.0.0", "sha512": "sha512-1AVzAb5OxJNvJLnOADtexNmWgattm2XVOT3TjQTN7Dd4SqoSwai1CsN2fth42uQldJSQdz/sAec0+TzxBFgisw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Text.Encoding.CodePages", "id": "System.Text.Encoding.CodePages", "version": "8.0.0", "sha512": "sha512-d9rfaxpz7u+1BQem129eOiDgrn0/VQw0kmWuTg1V8K5PDvG0G+CN2BB5io4B27p04sqsdGtRWLjiPXIlI9Rz7Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Runtime.CompilerServices.Unsafe"], "net7.0": [], "net8.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Threading.Tasks.Extensions", "id": "System.Threading.Tasks.Extensions", "version": "4.5.4", "sha512": "sha512-aAUghud9PHGYc3o9oWPWd0C3xE+TJQw5ZZs78htlR6mr9ky/QEgfXHjyQ2GvOq9H1S0YizcVVKCSin92ZcH8FA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["System.Runtime.CompilerServices.Unsafe"], "net451": ["System.Runtime.CompilerServices.Unsafe"], "net452": ["System.Runtime.CompilerServices.Unsafe"], "net46": ["System.Runtime.CompilerServices.Unsafe"], "net461": ["System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "netcoreapp1.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp1.1": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.1": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.2": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.3": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.4": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.5": ["System.Runtime.CompilerServices.Unsafe"], "netstandard1.6": ["System.Runtime.CompilerServices.Unsafe"], "netstandard2.0": ["System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, ], ) diff --git a/examples/paket.lock b/examples/paket.lock index 9b47c5c5..0a3484a2 100644 --- a/examples/paket.lock +++ b/examples/paket.lock @@ -11,15 +11,33 @@ NUGET FSharp.Core (6.0.3) FSharp.Data (5.0.2) FSharp.Core (>= 5.0.1) - Microsoft.AspNetCore.App.Ref (6.0.8) - Microsoft.AspNetCore.App.Runtime.linux-x64 (6.0.8) - Microsoft.AspNetCore.App.Runtime.osx-x64 (6.0.8) - Microsoft.AspNetCore.App.Runtime.win-x64 (6.0.8) - Microsoft.NETCore.App.Ref (6.0.8) - Microsoft.NETCore.App.Runtime.linux-x64 (6.0.8) - Microsoft.NETCore.App.Runtime.osx-x64 (6.0.8) - Microsoft.NETCore.App.Runtime.win-x64 (6.0.8) - Microsoft.NETCore.Platforms (7.0.4) + Microsoft.CodeAnalysis.Analyzers (3.3.4) + Microsoft.CodeAnalysis.Common (4.9.2) + Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) + System.Collections.Immutable (>= 8.0) + System.Memory (>= 4.5.5) - restriction: == netstandard2.0 + System.Reflection.Metadata (>= 8.0) + System.Runtime.CompilerServices.Unsafe (>= 6.0) + System.Text.Encoding.CodePages (>= 8.0) - restriction: == netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: == netstandard2.0 + Microsoft.CodeAnalysis.CSharp (4.9.2) + Microsoft.CodeAnalysis.Common (4.9.2) Mono.Cecil (0.11.4) - NETStandard.Library (2.0.3) - Microsoft.NETCore.Platforms (>= 1.1) + System.Buffers (4.5.1) - restriction: == netstandard2.0 + System.Collections.Immutable (8.0) + System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 6.0) + System.Memory (4.5.5) - restriction: == netstandard2.0 + System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) + System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) + System.Numerics.Vectors (4.5) - restriction: == netstandard2.0 + System.Reflection.Metadata (8.0) + System.Collections.Immutable (>= 8.0) + System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (6.0) + System.Text.Encoding.CodePages (8.0) - restriction: == netstandard2.0 + System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 6.0) + System.Threading.Tasks.Extensions (4.5.4) - restriction: == netstandard2.0 + System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.0)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= wp8)) (== netstandard2.0) diff --git a/examples/source_generators/generator/.analyzerconfig b/examples/source_generators/generator/.analyzerconfig new file mode 100644 index 00000000..e97c48b0 --- /dev/null +++ b/examples/source_generators/generator/.analyzerconfig @@ -0,0 +1,2 @@ +is_global = true +build_property.EnforceExtendedAnalyzerRules = true diff --git a/examples/source_generators/generator/BUILD.bazel b/examples/source_generators/generator/BUILD.bazel new file mode 100644 index 00000000..356a83ac --- /dev/null +++ b/examples/source_generators/generator/BUILD.bazel @@ -0,0 +1,20 @@ +load("@rules_dotnet//dotnet:defs.bzl", "csharp_library") + +csharp_library( + name = "generator", + srcs = [ + "Generator.cs", + ], + analyzer_configs = [ + ".analyzerconfig", + ], + is_analyzer = True, + is_language_specific_analyzer = True, + target_frameworks = ["netstandard2.0"], + visibility = ["//source_generators:__subpackages__"], + deps = [ + "@paket.example_deps//microsoft.codeanalysis.analyzers", + "@paket.example_deps//microsoft.codeanalysis.common", + "@paket.example_deps//microsoft.codeanalysis.csharp", + ], +) diff --git a/examples/source_generators/generator/Generator.cs b/examples/source_generators/generator/Generator.cs new file mode 100644 index 00000000..fc0f44ad --- /dev/null +++ b/examples/source_generators/generator/Generator.cs @@ -0,0 +1,37 @@ +using Microsoft.CodeAnalysis; + +namespace SourceGenerator +{ + [Generator] + public class HelloSourceGenerator : ISourceGenerator + { + public void Execute(GeneratorExecutionContext context) + { + // Find the main method + var mainMethod = context.Compilation.GetEntryPoint(context.CancellationToken); + + // Build up the source code + string source = $@"// +using System; + +namespace {mainMethod.ContainingNamespace.ToDisplayString()} +{{ + public static partial class {mainMethod.ContainingType.Name} + {{ + static partial void HelloFrom(string name) => + Console.WriteLine($""Generator says: Hi from '{{name}}'""); + }} +}} +"; + var typeName = mainMethod.ContainingType.Name; + + // Add the source code to the compilation + context.AddSource($"{typeName}.g.cs", source); + } + + public void Initialize(GeneratorInitializationContext context) + { + // No initialization required for this one + } + } +} diff --git a/examples/source_generators/generator_usage/BUILD.bazel b/examples/source_generators/generator_usage/BUILD.bazel new file mode 100644 index 00000000..9b572728 --- /dev/null +++ b/examples/source_generators/generator_usage/BUILD.bazel @@ -0,0 +1,12 @@ +load("@rules_dotnet//dotnet:defs.bzl", "csharp_binary") + +csharp_binary( + name = "generator_usage", + srcs = [ + "Main.cs", + ], + target_frameworks = ["net6.0"], + deps = [ + "//source_generators/generator", + ], +) diff --git a/examples/source_generators/generator_usage/Main.cs b/examples/source_generators/generator_usage/Main.cs new file mode 100644 index 00000000..d63f6f11 --- /dev/null +++ b/examples/source_generators/generator_usage/Main.cs @@ -0,0 +1,11 @@ +namespace ConsoleApp; + +partial class Program +{ + static void Main(string[] args) + { + HelloFrom("Generated Code"); + } + + static partial void HelloFrom(string name); +} diff --git a/paket.dependencies b/paket.dependencies index 66240cfa..0fb837b7 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -26,6 +26,9 @@ group rules_dotnet_dev_nuget_packages nuget Magick.NET.Core 12.2.2 nuget System.Memory 4.5.5 nuget System.Text.Json 7.0.3 + nuget Microsoft.CodeAnalysis.Common 4.9.2 + nuget Microsoft.CodeAnalysis.Analyzers 3.3.4 + nuget Microsoft.CodeAnalysis.CSharp 4.9.2 group rules_dotnet_nuget_packages framework: net6.0 diff --git a/paket.lock b/paket.lock index 24b8e0aa..6c509810 100644 --- a/paket.lock +++ b/paket.lock @@ -368,17 +368,37 @@ NUGET LibGit2Sharp.NativeBinaries (2.0.315-alpha.0.9) LibGit2Sharp.NativeBinaries (2.0.315-alpha.0.9) Magick.NET.Core (12.2.2) - Microsoft.Bcl.AsyncInterfaces (7.0) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) (== netstandard2.1) + Microsoft.Bcl.AsyncInterfaces (8.0) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) (== netstandard2.1) System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (&& (== net6.0) (>= net462)) (&& (== net6.0) (< netstandard2.1)) (== netstandard2.0) (&& (== netstandard2.1) (>= net462)) + Microsoft.CodeAnalysis.Analyzers (3.3.4) + Microsoft.CodeAnalysis.Common (4.9.2) + Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) + System.Collections.Immutable (>= 8.0) + System.Memory (>= 4.5.5) - restriction: || (== netstandard2.0) (== netstandard2.1) + System.Reflection.Metadata (>= 8.0) + System.Runtime.CompilerServices.Unsafe (>= 6.0) + System.Text.Encoding.CodePages (>= 8.0) - restriction: || (== netstandard2.0) (== netstandard2.1) + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (== netstandard2.0) (== netstandard2.1) + Microsoft.CodeAnalysis.CSharp (4.9.2) + Microsoft.CodeAnalysis.Common (4.9.2) NETStandard.Library.Ref (2.1) System.Buffers (4.5.1) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) (== netstandard2.1) + System.Collections.Immutable (8.0) + System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) (== netstandard2.1) + System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Memory (4.5.5) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) (== netstandard2.1) System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== net6.0) (< netcoreapp2.0)) (== netstandard2.0) (== netstandard2.1) System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= monotouch)) (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.0)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.1)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= uap10.1)) (&& (== net6.0) (>= xamarinios)) (&& (== net6.0) (>= xamarinmac)) (&& (== net6.0) (>= xamarintvos)) (&& (== net6.0) (>= xamarinwatchos)) (== netstandard2.0) (== netstandard2.1) System.Numerics.Vectors (4.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) (== netstandard2.1) + System.Reflection.Metadata (8.0) + System.Collections.Immutable (>= 8.0) + System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) (== netstandard2.1) System.Runtime.CompilerServices.Unsafe (6.0) System.Security.Principal.Windows (5.0) + System.Text.Encoding.CodePages (8.0) - restriction: || (== netstandard2.0) (== netstandard2.1) + System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) (== netstandard2.1) + System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encodings.Web (7.0) System.Buffers (>= 4.5.1) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) (== netstandard2.1) System.Memory (>= 4.5.5) - restriction: || (&& (== net6.0) (>= net462)) (== netstandard2.0) (== netstandard2.1)