From 43064c63a9314d731b4e75f9e0ba0dba1ca5abea Mon Sep 17 00:00:00 2001 From: Maxime Mangel Date: Thu, 11 Jan 2024 16:31:22 +0100 Subject: [PATCH 1/6] Add an example for formatting long secondary constructor --- docs/fsharp/style-guide/formatting.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/fsharp/style-guide/formatting.md b/docs/fsharp/style-guide/formatting.md index cb47bb5ca5a07..310c282a30d6d 100644 --- a/docs/fsharp/style-guide/formatting.md +++ b/docs/fsharp/style-guide/formatting.md @@ -1651,6 +1651,16 @@ type TypeWithLongConstructor aThirdVeryLongCtorParam: AVeryLongTypeThatYouNeedToUse ) = // ... the body of the class follows + +// ✔️ OK +type TypeWithLongSecondaryConstructor () = + new + ( + aVeryLongCtorParam: AVeryLongTypeThatYouNeedToUse, + aSecondVeryLongCtorParam: AVeryLongTypeThatYouNeedToUse, + aThirdVeryLongCtorParam: AVeryLongTypeThatYouNeedToUse + ) = + // ... the body of the constructor follows ``` If the parameters are curried, place the `=` character along with any return type on a new line: From 84e066bbf127b3e08817b943fbdebc51ebbff6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Jare=C5=A1?= Date: Fri, 12 Jan 2024 16:03:02 +0100 Subject: [PATCH 2/6] MSTest runner Add ignored settings and workarounds (#38957) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add ignored settings and workarounds * Add link * Apply suggestions from code review Co-authored-by: Amaury Levé * Fix rest of sections * Apply suggestions from code review Co-authored-by: Amaury Levé * Fix whitespace * Remove locale from links * Apply suggestions from code review Co-authored-by: David Pine * Update toc --------- Co-authored-by: Amaury Levé Co-authored-by: David Pine Co-authored-by: Amaury Levé --- .../unit-testing-mstest-runner-runsettings.md | 45 +++++++++++++++++++ docs/navigate/devops-testing/toc.yml | 2 + 2 files changed, 47 insertions(+) create mode 100644 docs/core/testing/unit-testing-mstest-runner-runsettings.md diff --git a/docs/core/testing/unit-testing-mstest-runner-runsettings.md b/docs/core/testing/unit-testing-mstest-runner-runsettings.md new file mode 100644 index 0000000000000..de45e3b30d5e3 --- /dev/null +++ b/docs/core/testing/unit-testing-mstest-runner-runsettings.md @@ -0,0 +1,45 @@ +--- +title: MSTest runner runsettings +description: Learn how to use runsettings with MSTest runner to configure MSTest test framework. +author: nohwnd +ms.author: jajares +ms.date: 01/03/2024 +--- + + +# Use runsettings with MSTest runner + +MSTest runner allows you to provide a [VSTest *.runsettings* file](/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file), but not all options in this file are picked up by the runner. This article teaches you about the supported and unsupported settings, and configuration options. This article shows you alternatives for the most used VSTest configuration options. + +## Supported runsettings + +All runsettings in `` section of the configuration file are supported by MSTest runner. + +Their full description can be [found here](https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file?view=vs-2022#mstest-element). + +## Unsupported runsettings + +The **RunConfiguration** element can include the following elements. None of these settings are respected by the MSTest runner: + +|Node|Description|Reason / workaround | +|-|-|-| +|**MaxCpuCount**|This setting controls the level of parallelism on process-level. Use 0 to enable the maximum process-level parallelism.| When MSTest runner is used with MSBuild, this option is [offloaded to MSBuild](/visualstudio/msbuild/building-multiple-projects-in-parallel-with-msbuild). When a single executable is run, this option has no meaning for MSTest runner. +|**ResultsDirectory**|The directory where test results are placed. The path is relative to the directory that contains .runsettings file.| Use the commandline option `--results-directory` to determine the directory where the test results are going to be placed. If the specified directory doesn't exist, it's created. The default is `TestResults` in the directory that contains the test application. +|**TargetFrameworkVersion**| This setting defines the framework version, or framework family to use to run tests.| This option is ignored. The `` or `` MSBuild properties determine the target framework of the application. The tests are hosted in the final application. +|**TargetPlatform**|This setting defines the architecture to use to run tests. | `` determines the architecture of the final application that hosts the tests. +|**TreatTestAdapterErrorsAsWarnings**|Suppresses test adapter errors to become warnings. | MSTest runner allows only one type of tests to be run from a single assembly, and failure to load the test framework or other parts of infrastructure will become an unskippable error, because it signifies that some tests could not be discovered or run. +|**TestAdaptersPaths**| One or more paths to the directory where the TestAdapters are located| MSTest runner does not use the concept of test adapters and does not allow dynamic loading of extensions unless they are part of the build, and are registered in `Program.cs`, either automatically via build targets or manually. | +|**TestCaseFilter**| A filter to limit tests which will run. | To filter tests use `--filter` command line option. +|**TestSessionTimeout**|Allows users to terminate a test session when it exceeds a given timeout.| There is no alternative option. | +|**DotnetHostPath**|Specify a custom path to dotnet host that is used to run the testhost. | MSTest runner is not doing any additional resolving of dotnet. It depends fully on how dotnet resolves itself, which can be controlled by environment variables such as [`DOTNET_HOST_PATH`](/dotnet/core/tools/dotnet-environment-variables#dotnet_host_path) +|**TreatNoTestsAsError**| Exit with non-zero exit code when no tests are discovered. | MSTest runner will error by default when no tests are discovered or run in a test application. You can set how many tests you expect to find in the assembly by using `--minimum-expected-tests` command line parameter, which defaults to 1. + +### DataCollectionRunSettings + +MSTest runner is not using data collectors. Instead it has the concept of in-process and out-of-process extensions. Each extension is configured by its respective configuration file, or through commandline. + +Most importantly [hang](unit-testing-mstest-runner-extensions.md#hang-dump-files) and [crash](unit-testing-mstest-runner-extensions.md#crash-dump-files) extension, and [code coverage](unit-testing-mstest-runner-extensions.md#microsoft-code-coverage) extension. + +### LoggerRunSettings + +Loggers in MSTest runner are configured through commandline parameters, or by settings in code. diff --git a/docs/navigate/devops-testing/toc.yml b/docs/navigate/devops-testing/toc.yml index 9c25c2b006845..7cb6b6345fdfd 100644 --- a/docs/navigate/devops-testing/toc.yml +++ b/docs/navigate/devops-testing/toc.yml @@ -79,6 +79,8 @@ items: href: ../../core/testing/unit-testing-mstest-runner-exit-codes.md - name: Usage with dotnet test href: ../../core/testing/unit-testing-mstest-runner-integrations.md + - name: Runsettings + href: ../../core/testing/unit-testing-mstest-runner-runsettings.md - name: Code analysis items: - name: Overview From 1d022c86175a70af23f7d62c9130e4bd7f0f0d0a Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Fri, 12 Jan 2024 07:41:11 -0800 Subject: [PATCH 3/6] Remove backslash before < (#39107) --- docs/fundamentals/toc.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/fundamentals/toc.yml b/docs/fundamentals/toc.yml index 88c567d8b1970..4ee0021d13f96 100644 --- a/docs/fundamentals/toc.yml +++ b/docs/fundamentals/toc.yml @@ -244,7 +244,7 @@ items: items: - name: Nullable class href: runtime-libraries/system-nullable.md - - name: Nullable\ class + - name: Nullable class href: runtime-libraries/system-nullable{t}.md - name: Generic types items: @@ -283,11 +283,11 @@ items: href: ../standard/collections/thread-safe/index.md?toc=/dotnet/fundamentals/toc.json&bc=/dotnet/breadcrumb/toc.json - name: Supplemental API remarks items: - - name: HashSet\ class + - name: HashSet class href: runtime-libraries/system-collections-generic-hashset{t}.md - - name: List\ class + - name: List class href: runtime-libraries/system-collections-generic-list{t}.md - - name: ObservableCollection\ class + - name: ObservableCollection class href: runtime-libraries/system-collections-objectmodel-observablecollection{t}.md - name: Delegates and lambdas href: ../standard/delegates-lambdas.md @@ -469,7 +469,7 @@ items: href: ../standard/memory-and-spans/memory-t-usage-guidelines.md - name: Supplemental API remarks items: - - name: Span\ struct + - name: Span struct href: runtime-libraries/system-span{t}.md - name: SIMD-enabled types href: ../standard/simd.md From 262e42ca8b7be015457d7623eed5df9439235aaf Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Fri, 12 Jan 2024 22:42:47 -0800 Subject: [PATCH 4/6] Fix table formatting per markdownlint (#39121) --- docs/core/compatibility/6.0.md | 4 +- ...ryptographic-abstractions-not-supported.md | 2 +- .../5.0/listseparator-value-change.md | 2 +- .../dependency-loading/loading-managed.md | 14 +- docs/core/diagnostics/collect-dumps-crash.md | 8 +- docs/core/diagnostics/dotnet-dump.md | 164 ++++---- .../diagnostics/sos-debugging-extension.md | 230 +++++------ docs/core/extensions/globalization.md | 18 +- docs/core/project-sdk/overview.md | 6 +- docs/core/runtime-config/wpf.md | 6 +- .../troubleshoot-app-launch.md | 4 + .../unit-testing-mstest-runner-runsettings.md | 29 +- docs/core/tools/dotnet.md | 70 ++-- .../linq/query-a-collection-of-objects.md | 164 ++++---- .../programming-guide/concepts/index.md | 27 +- .../csharp/programming-guide/strings/index.md | 32 +- .../pos-for-net/poscommon-class.md | 87 ++--- .../pos-for-net/supported-device-classes.md | 54 +-- .../appcontextswitchoverrides-element.md | 20 +- ...supported-linq-methods-linq-to-entities.md | 356 +++++++++--------- docs/framework/get-started/index.md | 10 +- .../framework/tools/al-exe-assembly-linker.md | 2 +- ...ol-exe-code-access-security-policy-tool.md | 6 +- ...xe-manifest-generation-and-editing-tool.md | 12 +- .../tools/sn-exe-strong-name-tool.md | 186 ++++----- .../unmanaged-api/wmi/beginenumeration.md | 68 ++-- .../wmi/beginmethodenumeration.md | 54 +-- docs/framework/unmanaged-api/wmi/putmethod.md | 6 +- .../wmi/qualifierset-beginenumeration.md | 8 +- .../wmi/qualifierset-getnames.md | 2 +- .../unmanaged-api/wmi/spawnderivedclass.md | 2 +- .../working-with-certificates.md | 48 ++- .../language-reference/caller-information.md | 2 +- .../language-reference/compiler-options.md | 2 +- .../language-reference/keyword-reference.md | 26 +- .../plaintext-formatting.md | 12 +- .../component-design-guidelines.md | 8 +- docs/fundamentals/apicompat/diagnostic-ids.md | 2 +- .../includes/excluded-symbol-names.md | 4 +- .../excluded-type-names-with-derived-types.md | 4 +- .../code-analysis/quality-rules/ca1008.md | 14 +- .../code-analysis/quality-rules/ca1031.md | 4 +- .../code-analysis/quality-rules/ca1062.md | 4 +- .../code-analysis/quality-rules/ca1501.md | 4 +- .../code-analysis/quality-rules/ca1710.md | 2 +- .../code-analysis/quality-rules/ca2241.md | 5 +- .../runtime-loader-binder-events.md | 68 ++-- .../diagnostics/runtime-thread-events.md | 132 +++---- .../diagnostics/runtime-type-events.md | 6 +- .../runtime-libraries/system-text-encoding.md | 2 +- .../syslib-diagnostics/syslib0007.md | 2 +- docs/iot/tutorials/adc.md | 3 +- docs/iot/tutorials/lcd-display.md | 3 +- ...l-permutation-feature-importance-ml-net.md | 58 +-- .../how-to-use-the-automl-api.md | 10 +- .../how-to-guides/prepare-data-ml-net.md | 28 +- docs/machine-learning/resources/metrics.md | 12 +- docs/machine-learning/resources/transforms.md | 2 +- .../sentiment-analysis-model-builder.md | 10 +- ...r-expression-example-scanning-for-hrefs.md | 2 +- ...lar-expression-language-quick-reference.md | 14 +- .../data/sqlite/connection-strings.md | 12 +- .../exception-class-and-properties.md | 2 +- docs/standard/generics/math.md | 2 +- docs/standard/io/buffers.md | 20 +- docs/standard/language-independence.md | 4 +- docs/standard/numerics.md | 6 +- .../migrate-from-newtonsoft.md | 3 + .../statements/end-keyword-statement.md | 42 +-- ...-query-operators-by-manner-of-execution.md | 166 ++++---- ...ext-can-be-out-of-sync-with-databinding.md | 10 +- ...ateserver-requires-all-servers-web-farm.md | 10 +- ...-longer-decodes-invalid-input-sequences.md | 10 +- ...waitall-methods-with-time-out-arguments.md | 12 +- ...ce-handled-entrypointnotfoundexceptions.md | 12 +- ...ontextcreatedatabase-method-has-changed.md | 10 +- ...x-listview-datagrid-with-items-selected.md | 10 +- 77 files changed, 1235 insertions(+), 1242 deletions(-) diff --git a/docs/core/compatibility/6.0.md b/docs/core/compatibility/6.0.md index 75e52939b1d8e..490b199b6545f 100644 --- a/docs/core/compatibility/6.0.md +++ b/docs/core/compatibility/6.0.md @@ -71,10 +71,10 @@ For information on other breaking changes for containers in .NET 6, see [.NET 6 | [Set timestamp on read-only file on Windows](core-libraries/6.0/set-timestamp-readonly-file.md) | ❌ | ✔️ | | [Standard numeric format parsing precision](core-libraries/6.0/numeric-format-parsing-handles-higher-precision.md) | ✔️ | ❌ | | [Static abstract members in interfaces](core-libraries/6.0/static-abstract-interface-methods.md) | ❌ | ✔️ | -| [StringBuilder.Append overloads and evaluation order](core-libraries/6.0/stringbuilder-append-evaluation-order.md) | ❌ | ✔️ +| [StringBuilder.Append overloads and evaluation order](core-libraries/6.0/stringbuilder-append-evaluation-order.md) | ❌ | ✔️ | | [Strong-name APIs throw PlatformNotSupportedException](core-libraries/6.0/strong-name-signing-exceptions.md) | ❌ | ✔️ | | [System.Drawing.Common only supported on Windows](core-libraries/6.0/system-drawing-common-windows-only.md) | ❌ | ❌ | -| [System.Security.SecurityContext is marked obsolete](core-libraries/6.0/securitycontext-obsolete.md) | ✔️ | ❌ +| [System.Security.SecurityContext is marked obsolete](core-libraries/6.0/securitycontext-obsolete.md) | ✔️ | ❌ | | [Task.FromResult may return singleton](core-libraries/6.0/task-fromresult-returns-singleton.md) | ❌ | ✔️ | | [Unhandled exceptions from a BackgroundService](core-libraries/6.0/hosting-exception-handling.md) | ✔️ | ❌ | diff --git a/docs/core/compatibility/cryptography/5.0/instantiating-default-implementations-of-cryptographic-abstractions-not-supported.md b/docs/core/compatibility/cryptography/5.0/instantiating-default-implementations-of-cryptographic-abstractions-not-supported.md index 4e42de3955e4b..b91e3a0f5addd 100644 --- a/docs/core/compatibility/cryptography/5.0/instantiating-default-implementations-of-cryptographic-abstractions-not-supported.md +++ b/docs/core/compatibility/cryptography/5.0/instantiating-default-implementations-of-cryptographic-abstractions-not-supported.md @@ -85,7 +85,7 @@ Best practice dictates that libraries that consume cryptographic primitives (suc | | | The SHA-1 algorithm is considered broken. Consider using a stronger algorithm if possible. Consult your security advisor for further guidance. | | | | The HMACSHA1 algorithm is discouraged for most modern applications. Consider using a stronger algorithm if possible. Consult your security advisor for further guidance. | | | | The HMACSHA1 algorithm is discouraged for most modern applications. Consider using a stronger algorithm if possible. Consult your security advisor for further guidance. | - | | | + | | | | - If you must continue to call the obsolete parameterless `Create()` overloads, you can suppress the `SYSLIB0007` warning in code. diff --git a/docs/core/compatibility/globalization/5.0/listseparator-value-change.md b/docs/core/compatibility/globalization/5.0/listseparator-value-change.md index 650f1c93c4626..523de95b5c2c4 100644 --- a/docs/core/compatibility/globalization/5.0/listseparator-value-change.md +++ b/docs/core/compatibility/globalization/5.0/listseparator-value-change.md @@ -16,7 +16,7 @@ For all operating systems in .NET 5.0.1 and later versions, the values for values. | | .NET Framework
.NET Core 1.0 - 3.1 | .NET 5 | .NET 5.0.1 | --|-|-|- +|-|-|-|-| | **Windows** | Obtain from NLS | Decimal separator from ICU.
Can switch back to NLS. | Equivalent to NLS | | **Linux and macOS** | Decimal separator from ICU | Decimal separator from ICU | Equivalent to NLS | diff --git a/docs/core/dependency-loading/loading-managed.md b/docs/core/dependency-loading/loading-managed.md index 6d4054d619e23..2d083a2f07ac4 100644 --- a/docs/core/dependency-loading/loading-managed.md +++ b/docs/core/dependency-loading/loading-managed.md @@ -16,18 +16,18 @@ The most common mechanism to trigger a managed assembly load is a static assembl The direct use of the following APIs will also trigger loads: -|API |Description |`Active` | -|---------|---------|---------| +| API | Description | `Active` | +|-----|-------------|-----------------------------------------------------------| ||`Load-by-name`|The [this](../../csharp/language-reference/keywords/this.md) instance.| |
|Load from path.|The [this](../../csharp/language-reference/keywords/this.md) instance.| -|Load from object.|The [this](../../csharp/language-reference/keywords/this.md) instance.| +| |Load from object.|The [this](../../csharp/language-reference/keywords/this.md) instance.| ||Load from path in a new instance|The new instance.| -|Load from path in the instance.
Adds an handler. The handler will load the assembly's dependencies from its directory.|The instance.| +| |Load from path in the instance.
Adds an handler. The handler will load the assembly's dependencies from its directory.|The instance.| |

|`Load-by-name`.|Inferred from caller.
Prefer methods.| |
|Load from object in a new instance.|The new instance.| -

|`Load-by-name`.|Inferred from caller.
Prefer methods with an `assemblyResolver` argument.| -|If type `name` describes an assembly qualified generic type, trigger a `Load-by-name`.|Inferred from caller.
Prefer when using assembly qualified type names.| -

|`Load-by-name`.|Inferred from caller.
Prefer methods taking a argument.| +|

|`Load-by-name`.|Inferred from caller.
Prefer methods with an `assemblyResolver` argument.| +| |If type `name` describes an assembly qualified generic type, trigger a `Load-by-name`.|Inferred from caller.
Prefer when using assembly qualified type names.| +|

|`Load-by-name`.|Inferred from caller.
Prefer methods taking a argument.| ## Algorithm diff --git a/docs/core/diagnostics/collect-dumps-crash.md b/docs/core/diagnostics/collect-dumps-crash.md index f12d51bb0a58b..9525ead5e9e29 100644 --- a/docs/core/diagnostics/collect-dumps-crash.md +++ b/docs/core/diagnostics/collect-dumps-crash.md @@ -10,15 +10,15 @@ Configuring your application to collect a dump on crash is done by setting speci The following table shows the environment variables you can configure for collecting dumps on a crash. -|Environment variable|Description|Default value| -|-------|---------|---| +| Environment variable | Description | Default value | +|----------------------|-------------|---------------| |`COMPlus_DbgEnableMiniDump` or `DOTNET_DbgEnableMiniDump`|If set to 1, enable core dump generation.|0| |`COMPlus_DbgMiniDumpType` or `DOTNET_DbgMiniDumpType`|Type of dump to be collected. For more information, see [Types of mini dumps](#types-of-mini-dumps).|2 (`Heap`)| |`COMPlus_DbgMiniDumpName` or `DOTNET_DbgMiniDumpName`|Path to a file to write the dump to. Ensure that the user under which the dotnet process is running has write permissions to the specified directory.|`/tmp/coredump.`| |`COMPlus_CreateDumpDiagnostics` or `DOTNET_CreateDumpDiagnostics`|If set to 1, enables diagnostic logging of dump process.|0| -|`COMPlus_EnableCrashReport` or `DOTNET_EnableCrashReport`|(Requires .NET 6 or later; not supported on Windows.)
If set to 1, the runtime generates a JSON-formatted crash report that includes information about the threads and stack frames of the crashing application. The crash report name is the dump path or name with *.crashreport.json* appended. +|`COMPlus_EnableCrashReport` or `DOTNET_EnableCrashReport`|(Requires .NET 6 or later; not supported on Windows.)
If set to 1, the runtime generates a JSON-formatted crash report that includes information about the threads and stack frames of the crashing application. The crash report name is the dump path or name with *.crashreport.json* appended.| | |`COMPlus_CreateDumpVerboseDiagnostics` or `DOTNET_CreateDumpVerboseDiagnostics`|(Requires .NET 7 or later.)
If set to 1, enables verbose diagnostic logging of the dump process.|0| -|`COMPlus_CreateDumpLogToFile` or `DOTNET_CreateDumpLogToFile`|(Requires .NET 7 or later.)
The path of the file to which the diagnostic messages should be written. If unset, the diagnostic messages are written to the console of the crashing application.| +|`COMPlus_CreateDumpLogToFile` or `DOTNET_CreateDumpLogToFile`|(Requires .NET 7 or later.)
The path of the file to which the diagnostic messages should be written. | If unset, the diagnostic messages are written to the console of the crashing application. | > [!NOTE] > .NET 7 standardizes on the prefix `DOTNET_` instead of `COMPlus_` for these environment variables. However, the `COMPlus_` prefix will continue to work. If you're using a previous version of the .NET runtime, you should still use the `COMPlus_` prefix for environment variables. diff --git a/docs/core/diagnostics/dotnet-dump.md b/docs/core/diagnostics/dotnet-dump.md index c833556973e73..d451b4ba9f525 100644 --- a/docs/core/diagnostics/dotnet-dump.md +++ b/docs/core/diagnostics/dotnet-dump.md @@ -111,7 +111,7 @@ dotnet-dump collect [-h|--help] [-p|--process-id] [-n|--name] [--type] [-o|--out - **`--diag`** Enables dump collection diagnostic logging. - + - **`--crashreport`** Enables crash report generation. @@ -146,86 +146,86 @@ dotnet-dump analyze [-h|--help] [-c|--command] ### Analyze SOS commands -| Command | Function | -|-----------------------------------------------------|-----------------------------------------------------------------------------------------------| -| `analyzeoom` | Displays the info of the last OOM that occurred on an allocation request to the GC heap. -| `clrmodules` | Lists the managed modules in the process. -| `clrstack` | Provides a stack trace of managed code only. -| `clrthreads` | Lists the managed threads that are running. -| `clru` | Displays an annotated disassembly of a managed method. -| `d` or `readmemory` | Dumps memory contents. -| `dbgout` | Enables/disables (`-off`) internal SOS logging. -| `dso` | Displays all managed objects found within the bounds of the current stack. -| `dumpalc` | Displays details about a collectible AssemblyLoadContext to which the specified object is loaded. -| `dumparray` | Displays details about a managed array. -| `dumpasync` | Displays info about async state machines on the garbage-collected heap. -| `dumpassembly` | Displays details about an assembly. -| `dumpclass` | Displays information about the `EEClass` structure at the specified address. -| `dumpconcurrentdictionary` | Displays concurrent dictionary content. -| `dumpconcurrentqueue` | Displays concurrent queue content. -| `dumpdelegate` | Displays information about a delegate. -| `dumpdomain` | Displays information about the all assemblies within all the AppDomains or the specified one. -| `dumpgcdata` | Displays information about the GC data. -| `dumpgen` | Displays heap content for the specified generation. -| `dumpheap` | Displays info about the garbage-collected heap and collection statistics about objects. -| `dumpil` | Displays the Microsoft intermediate language (MSIL) that's associated with a managed method. -| `dumplog` | Writes the contents of an in-memory stress log to the specified file. -| `dumpmd` | Displays information about the `MethodDesc` structure at the specified address. -| `dumpmodule` | Displays information about the module at the specified address. -| `dumpmt` | Displays information about the method table at the specified address. -| `dumpobj` | Displays info the object at the specified address. -| `dumpruntimetypes` | Finds all System.RuntimeType objects in the GC heap and prints the type name and MethodTable they refer too. -| `dumpsig` | Dumps the signature of a method or field specified by ` `. -| `dumpsigelem` | Dumps a single element of a signature object. -| `dumpstackobjects` | Displays all managed objects found within the bounds of the current stack. -| `dumpvc` | Displays info about the fields of a value class. -| `eeheap` | Displays info about process memory consumed by internal runtime data structures. -| `eestack` | Runs `dumpstack` on all threads in the process. -| `eeversion` | Displays information about the runtime and SOS versions. -| `ehinfo` | Displays the exception handling blocks in a JIT-ed method. -| `exit` or `quit` | Exits interactive mode. -| `finalizequeue` | Displays all objects registered for finalization. -| `findappdomain` | Attempts to resolve the AppDomain of a GC object. -| `gchandles` | Displays statistics about garbage collector handles in the process. -| `gcheapstat` | Displays statistics about garbage collector. -| `gcinfo` | Displays the JIT GC encoding for a method. -| `gcroot` | Displays info about references (or roots) to the object at the specified address. -| `gcwhere` | Displays the location in the GC heap of the specified address. -| `histclear` | Releases any resources used by the family of Hist commands. -| `histinit` | Initializes the SOS structures from the stress log saved in the debuggee. -| `histobj` | Examines all stress log relocation records and displays the chain of garbage collection relocations that may have led to the address passed in as an argument. -| `histobjfind` | Displays all the log entries that reference the object at the specified address. -| `histroot` | Displays information related to both promotions and relocations of the specified root. -| `histstats` | Displays stress log stats. -| `ip2md` | Displays the `MethodDesc` structure at the specified address in code that has been JIT-compiled. -| `listnearobj` | Displays the object preceding and succeeding the specified address. -| `logopen` | Enables console file logging. -| `logclose` | Disables console file logging. -| `logging` | Enables/disables internal SOS logging. -| `lm` or `modules` | Displays the native modules in the process. -| `name2ee` | Displays the `MethodTable` and `EEClass` structures for the specified type or method in the specified module. -| `objsize` | Displays the size of the specified object. -| `parallelstacks` | Displays the merged threads stack similarly to the Visual Studio 'Parallel Stacks' panel. -| `pathto` | Displays the GC path from `` to ``. -| `pe` or `printexception` | Displays and formats fields of any object derived from the class at the specified address. -| `r` or `registers` | Displays the thread's registers. -| `runtimes` | Lists the runtimes in the target or changes the default runtime. -| `setclrpath` | Sets the path to load coreclr dac/dbi files using `setclrpath `. -| `setsymbolserver` | Enables the symbol server support. -| `sos` | Executes various coreclr debugging commands. Use the syntax `sos `. For more information, see 'soshelp'. -| `soshelp` or `help` | Displays all available commands. -| `soshelp ` or `help ` | Displays the specified command. -| `syncblk` | Displays the SyncBlock holder info. -| `taskstate` | Displays a Task state in a human readable format. -| `threadpool` | Displays info about the runtime thread pool. -| `threadpoolqueue` | Displays queued thread pool work items. -| `threadstate` | Pretty prints the meaning of a threads state. -| `threads ` or `setthread ` | Sets or displays the current thread ID for the SOS commands. -| `timerinfo` | Displays information about running timers. -| `token2ee` | Displays the MethodTable structure and MethodDesc structure for the specified token and module. -| `traverseheap` | Writes out heap information to a file in a format understood by the CLR Profiler. -| `verifyheap` | Checks the GC heap for signs of corruption. -| `verifyobj` | Checks the object that is passed as an argument for signs of corruption. +| Command | Function | +|-----------------------------------------------------|----------| +| `analyzeoom` | Displays the info of the last OOM that occurred on an allocation request to the GC heap. | +| `clrmodules` | Lists the managed modules in the process. | +| `clrstack` | Provides a stack trace of managed code only. | +| `clrthreads` | Lists the managed threads that are running. | +| `clru` | Displays an annotated disassembly of a managed method. | +| `d` or `readmemory` | Dumps memory contents. | +| `dbgout` | Enables/disables (`-off`) internal SOS logging. | +| `dso` | Displays all managed objects found within the bounds of the current stack. | +| `dumpalc` | Displays details about a collectible AssemblyLoadContext to which the specified object is loaded. | +| `dumparray` | Displays details about a managed array. | +| `dumpasync` | Displays info about async state machines on the garbage-collected heap. | +| `dumpassembly` | Displays details about an assembly. | +| `dumpclass` | Displays information about the `EEClass` structure at the specified address. | +| `dumpconcurrentdictionary` | Displays concurrent dictionary content. | +| `dumpconcurrentqueue` | Displays concurrent queue content. | +| `dumpdelegate` | Displays information about a delegate. | +| `dumpdomain` | Displays information about the all assemblies within all the AppDomains or the specified one. | +| `dumpgcdata` | Displays information about the GC data. | +| `dumpgen` | Displays heap content for the specified generation. | +| `dumpheap` | Displays info about the garbage-collected heap and collection statistics about objects. | +| `dumpil` | Displays the Microsoft intermediate language (MSIL) that's associated with a managed method. | +| `dumplog` | Writes the contents of an in-memory stress log to the specified file. | +| `dumpmd` | Displays information about the `MethodDesc` structure at the specified address. | +| `dumpmodule` | Displays information about the module at the specified address. | +| `dumpmt` | Displays information about the method table at the specified address. | +| `dumpobj` | Displays info the object at the specified address. | +| `dumpruntimetypes` | Finds all System.RuntimeType objects in the GC heap and prints the type name and MethodTable they refer too. | +| `dumpsig` | Dumps the signature of a method or field specified by ` `. | +| `dumpsigelem` | Dumps a single element of a signature object. | +| `dumpstackobjects` | Displays all managed objects found within the bounds of the current stack. | +| `dumpvc` | Displays info about the fields of a value class. | +| `eeheap` | Displays info about process memory consumed by internal runtime data structures. | +| `eestack` | Runs `dumpstack` on all threads in the process. | +| `eeversion` | Displays information about the runtime and SOS versions. | +| `ehinfo` | Displays the exception handling blocks in a JIT-ed method. | +| `exit` or `quit` | Exits interactive mode. | +| `finalizequeue` | Displays all objects registered for finalization. | +| `findappdomain` | Attempts to resolve the AppDomain of a GC object. | +| `gchandles` | Displays statistics about garbage collector handles in the process. | +| `gcheapstat` | Displays statistics about garbage collector. | +| `gcinfo` | Displays the JIT GC encoding for a method. | +| `gcroot` | Displays info about references (or roots) to the object at the specified address. | +| `gcwhere` | Displays the location in the GC heap of the specified address. | +| `histclear` | Releases any resources used by the family of Hist commands. | +| `histinit` | Initializes the SOS structures from the stress log saved in the debuggee. | +| `histobj` | Examines all stress log relocation records and displays the chain of garbage collection relocations that may have led to the address passed in as an argument. | +| `histobjfind` | Displays all the log entries that reference the object at the specified address. | +| `histroot` | Displays information related to both promotions and relocations of the specified root. | +| `histstats` | Displays stress log stats. | +| `ip2md` | Displays the `MethodDesc` structure at the specified address in code that has been JIT-compiled. | +| `listnearobj` | Displays the object preceding and succeeding the specified address. | +| `logopen` | Enables console file logging. | +| `logclose` | Disables console file logging. | +| `logging` | Enables/disables internal SOS logging. | +| `lm` or `modules` | Displays the native modules in the process. | +| `name2ee` | Displays the `MethodTable` and `EEClass` structures for the specified type or method in the specified module. | +| `objsize` | Displays the size of the specified object. | +| `parallelstacks` | Displays the merged threads stack similarly to the Visual Studio 'Parallel Stacks' panel. | +| `pathto` | Displays the GC path from `` to ``. | +| `pe` or `printexception` | Displays and formats fields of any object derived from the class at the specified address. | +| `r` or `registers` | Displays the thread's registers. | +| `runtimes` | Lists the runtimes in the target or changes the default runtime. | +| `setclrpath` | Sets the path to load coreclr dac/dbi files using `setclrpath `. | +| `setsymbolserver` | Enables the symbol server support. | +| `sos` | Executes various coreclr debugging commands. Use the syntax `sos `. For more information, see 'soshelp'. | +| `soshelp` or `help` | Displays all available commands. | +| `soshelp ` or `help ` | Displays the specified command. | +| `syncblk` | Displays the SyncBlock holder info. | +| `taskstate` | Displays a Task state in a human readable format. | +| `threadpool` | Displays info about the runtime thread pool. | +| `threadpoolqueue` | Displays queued thread pool work items. | +| `threadstate` | Pretty prints the meaning of a threads state. | +| `threads ` or `setthread ` | Sets or displays the current thread ID for the SOS commands. | +| `timerinfo` | Displays information about running timers. | +| `token2ee` | Displays the MethodTable structure and MethodDesc structure for the specified token and module. | +| `traverseheap` | Writes out heap information to a file in a format understood by the CLR Profiler. | +| `verifyheap` | Checks the GC heap for signs of corruption. | +| `verifyobj` | Checks the object that is passed as an argument for signs of corruption. | > [!NOTE] > Additional details can be found in [SOS Debugging Extension for .NET](sos-debugging-extension.md). @@ -247,7 +247,7 @@ Suppose you start a long-running app using the command ```dotnet run --configura ```console > dotnet-dump ps - + 21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release 36656 dotnet C:\Program Files\dotnet\dotnet.exe ``` diff --git a/docs/core/diagnostics/sos-debugging-extension.md b/docs/core/diagnostics/sos-debugging-extension.md index 9bbbdd5ef16fa..7c1cc184b1840 100644 --- a/docs/core/diagnostics/sos-debugging-extension.md +++ b/docs/core/diagnostics/sos-debugging-extension.md @@ -1,5 +1,5 @@ --- -title: "SOS debugging extension for .NET" +title: SOS debugging extension for .NET description: Learn about the SOS debugging extension for .NET, which provides information about the internal CLR environment. ms.date: 09/11/2023 ms.topic: reference @@ -31,7 +31,7 @@ Many of the commands have aliases or shortcuts under lldb: `clrstack [options]` The following table of commands is also available under **Help** or **soshelp**. Individual command help is available using `soshelp `. | Command | Description | -|-------------|-----------------| +|---------|-------------| | **bpmd** [**-nofuturemodule**] [\<*module name*> \<*method name*>] [**-md** <`MethodDesc`>] **-list** **-clear** \<*pending breakpoint number*> **-clearall** | Creates a breakpoint at the specified method in the specified module.

If the specified module and method have not been loaded, this command waits for a notification that the module was loaded and just-in-time (JIT) compiled before creating a breakpoint.

You can manage the list of pending breakpoints by using the **-list**, **-clear**, and **-clearall** options:

The **-list** option generates a list of all the pending breakpoints. If a pending breakpoint has a non-zero module ID, that breakpoint is specific to a function in that particular loaded module. If the pending breakpoint has a zero module ID, that breakpoint applies to modules that have not yet been loaded.

Use the **-clear** or **-clearall** option to remove pending breakpoints from the list. | | **CLRStack** [**-a**] [**-l**] [**-p**] [**-n**] [**-f**] [**-r**] [**-all**] | Provides a stack trace of managed code only.

The **-p** option shows arguments to the managed function.

The **-l** option shows information on local variables in a frame. The SOS debugging extension cannot retrieve local names, so the output for local names is in the format \<*local address*> **=** \<*value*>.

The **-a** option is a shortcut for **-l** and **-p** combined.

The **-n** option disables the display of source file names and line numbers. If the debugger has the option SYMOPT_LOAD_LINES specified, SOS will look up the symbols for every managed frame and if successful will display the corresponding source file name and line number. The **-n** (No line numbers) parameter can be specified to disable this behavior.

The **-f** option (full mode) displays the native frames intermixing them with the managed frames and the assembly name and function offset for the managed frames. This option does not display native frames when used with `dotnet-dump`.

The **-r** option dumps the registers for each stack frame.

The **-all** option dumps all the managed threads' stacks. | | **COMState** | Lists the COM apartment model for each thread and a `Context` pointer, if available. This command is only supported on Windows. | @@ -48,7 +48,7 @@ The following table of commands is also available under **Help** or **soshelp**. | **DumpModule** [**-mt**] \<*Module address*> | Displays information about a module at the specified address. The **-mt** option displays the types defined in a module and the types referenced by the module

You can use the **DumpDomain** or **DumpAssembly** command to retrieve a module's address. | | **DumpObj** [**-nofields**] \<*object address*>

-or-

**DO** \<*object address*> | Displays information about an object at the specified address. The **DumpObj** command displays the fields, the `EEClass` structure information, the method table, and the size of the object.

You can use the **DumpStackObjects** command to retrieve an object's address.

You can run the **DumpObj** command on fields of type `CLASS` because they are also objects.

The `-`**nofields** option prevents fields of the object being displayed, it is useful for objects like String. | | **DumpRuntimeTypes** | Displays the runtime type objects in the garbage collector heap and lists their associated type names and method tables. | -| **DumpStack** [**-EE**] [**-n**] [`top` *stack* [`bottom` *stack*]] | Displays a stack trace.

The **-EE** option causes the **DumpStack** command to display only managed functions. Use the `top` and `bottom` parameters to limit the stack frames displayed on x86 platforms.

The **-n** option disables the display of source file names and line numbers. If the debugger has the option SYMOPT_LOAD_LINES specified, SOS will look up the symbols for every managed frame and if successful will display the corresponding source file name and line number. The **-n** (No line numbers) parameter can be specified to disable this behavior.

+| **DumpStack** [**-EE**] [**-n**] [`top` *stack* [`bottom` *stack*]] | Displays a stack trace.

The **-EE** option causes the **DumpStack** command to display only managed functions. Use the `top` and `bottom` parameters to limit the stack frames displayed on x86 platforms.

The **-n** option disables the display of source file names and line numbers. If the debugger has the option SYMOPT_LOAD_LINES specified, SOS will look up the symbols for every managed frame and if successful will display the corresponding source file name and line number. The **-n** (No line numbers) parameter can be specified to disable this behavior. | | **DumpSig** \<*sigaddr*> \<*moduleaddr*> | Displays information about a `Sig` structure at the specified address. | | **DumpSigElem** \<*sigaddr*> \<*moduleaddr*> | Displays a single element of a signature object. In most cases, you should use **DumpSig** to look at individual signature objects. However, if a signature has been corrupted in some way, you can use **DumpSigElem** to read the valid portions of it. | | **DumpStackObjects** [**-verify**] [`top` *stack* [`bottom` *stack*]]

-or-

**DSO** [**-verify**] [`top` *stack* [`bottom` *stack*]] | Displays all managed objects found within the bounds of the current stack.

The **-verify** option validates each non-static `CLASS` field of an object field.

Use the **DumpStackObject** command with stack tracing commands such as **K** (windbg) or **bt** (lldb) along with the **clrstack** command to determine the values of local variables and parameters. | @@ -113,124 +113,124 @@ For instructions on configuring SOS for LLDB, see [dotnet-sos](dotnet-sos.md). S By default you can reach all the SOS commands by entering: `sos [command_name]`. However, the common commands have been aliased so that you don't need the `sos` prefix: -| Command | Function -| ------------------------------------- | --------------------------------------------------------------------------------------------- -| `analyzeoom` | Displays the info of the last OOM that occurred on an allocation request to the GC heap. -| `bpmd` | Creates a breakpoint at the specified managed method in the specified module. -| `clrmodules` | Lists the managed modules in the process. -| `clrstack` | Provides a stack trace of managed code only. -| `clrthreads` | Lists the managed threads that are running. -| `clru` | Displays an annotated disassembly of a managed method. -| `dbgout` | Enables/disables (`-off`) internal SOS logging. -| `dso` | Displays all managed objects found within the bounds of the current stack. -| `dumpalc` | Displays details about a collectible AssemblyLoadContext to which the specified object is loaded. -| `dumparray` | Displays details about a managed array. -| `dumpasync` | Displays info about async state machines on the garbage-collected heap. -| `dumpassembly` | Displays details about an assembly. -| `dumpclass` | Displays information about the `EEClass` structure at the specified address. -| `dumpconcurrentdictionary` | Displays concurrent dictionary content. -| `dumpconcurrentqueue` | Displays concurrent queue content. -| `dumpdelegate` | Displays information about a delegate. -| `dumpdomain` | Displays information about the all assemblies within all the AppDomains or the specified one. -| `dumpgcdata` | Displays information about the GC data. -| `dumpgen` | Displays heap content for the specified generation. -| `dumpheap` | Displays info about the garbage-collected heap and collection statistics about objects. -| `dumpil` | Displays the Microsoft intermediate language (MSIL) that's associated with a managed method. -| `dumplog` | Writes the contents of an in-memory stress log to the specified file. -| `dumpmd` | Displays information about the `MethodDesc` structure at the specified address. -| `dumpmodule` | Displays information about the module at the specified address. -| `dumpmt` | Displays information about the method table at the specified address. -| `dumpobj` | Displays info the object at the specified address. -| `dumpruntimetypes` | Finds all System.RuntimeType objects in the GC heap and prints the type name and MethodTable they refer too. -| `dumpsig` | Dumps the signature of a method or field specified by ` `. -| `dumpsigelem` | Dumps a single element of a signature object. -| `dumpstack` | Displays a native and managed stack trace. -| `dumpstackobjects` | Displays all managed objects found within the bounds of the current stack. -| `dumpvc` | Displays info about the fields of a value class. -| `eeheap` | Displays info about process memory consumed by internal runtime data structures. -| `eestack` | Runs `dumpstack` on all threads in the process. -| `eeversion` | Displays information about the runtime and SOS versions. -| `ehinfo` | Displays the exception handling blocks in a JIT-ed method. -| `finalizequeue` | Displays all objects registered for finalization. -| `findappdomain` | Attempts to resolve the AppDomain of a GC object. -| `findroots` | Finds and displays object roots across GC collections. -| `gchandles` | Displays statistics about garbage collector handles in the process. -| `gcheapstat` | Displays statistics about garbage collector. -| `gcinfo` | Displays the JIT GC encoding for a method. -| `gcroot` | Displays info about references (or roots) to the object at the specified address. -| `gcwhere` | Displays the location in the GC heap of the specified address. -| `histclear` | Releases any resources used by the family of Hist commands. -| `histinit` | Initializes the SOS structures from the stress log saved in the debuggee. -| `histobj` | Examines all stress log relocation records and displays the chain of garbage collection relocations that may have led to the address passed in as an argument. -| `histobjfind` | Displays all the log entries that reference the object at the specified address. -| `histroot` | Displays information related to both promotions and relocations of the specified root. -| `histstats` | Displays stress log stats. -| `ip2md` | Displays the `MethodDesc` structure at the specified address in code that has been JIT-compiled. -| `listnearobj` | Displays the object preceding and succeeding the specified address. -| `loadsymbols` | Loads the .NET native module symbols. -| `logging` | Enables/disables internal SOS logging. -| `name2ee` | Displays the `MethodTable` and `EEClass` structures for the specified type or method in the specified module. -| `objsize` | Displays the size of the specified object. -| `parallelstacks` | Displays the merged threads stack similarly to the Visual Studio 'Parallel Stacks' panel. -| `pathto` | Displays the GC path from `` to ``. -| `pe` | Displays and formats fields of any object derived from the class at the specified address. -| `printexception` | Displays and formats fields of any object derived from the class at the specified address. -| `runtimes` | Lists the runtimes in the target or change the default runtime. -| `stoponcatch` | Target process will break the next time a managed exception is caught during execution. -| `setclrpath` | Sets the path to load coreclr dac/dbi files. `setclrpath `. -| `sethostruntime` | Sets or displays the .NET runtime directory to use to run managed code in SOS. -| `setsymbolserver` | Enables the symbol server support. -| `setsostid` | Sets the current OS tid/thread index instead of using the one lldb provides. `setsostid `. -| `sos` | Executes various coreclr debugging commands. Use the syntax `sos `. For more information, see 'soshelp'. -| `soshelp` | Displays all available commands when no parameter is specified, or displays detailed help information about the specified command: `soshelp `. -| `syncblk` | Displays the SyncBlock holder info. -| `taskstate` | Displays a Task state in a human readable format. -| `threadpool` | Displays info about the runtime thread pool. -| `threadpoolqueue` | Displays queued thread pool work items. -| `threadstate` | Pretty prints the meaning of a threads state. -| `timerinfo` | Displays information about running timers. -| `token2ee` | Displays the MethodTable structure and MethodDesc structure for the specified token and module. -| `traverseheap` | Writes out heap information to a file in a format understood by the CLR Profiler. -| `verifyheap` | Checks the GC heap for signs of corruption. -| `verifyobj` | Checks the object that is passed as an argument for signs of corruption. +| Command | Function | +| ------------------------------------- | ------------------------------------------------------------------------------------------- | +| `analyzeoom` | Displays the info of the last OOM that occurred on an allocation request to the GC heap. | +| `bpmd` | Creates a breakpoint at the specified managed method in the specified module. | +| `clrmodules` | Lists the managed modules in the process. | +| `clrstack` | Provides a stack trace of managed code only. | +| `clrthreads` | Lists the managed threads that are running. | +| `clru` | Displays an annotated disassembly of a managed method. | +| `dbgout` | Enables/disables (`-off`) internal SOS logging. | +| `dso` | Displays all managed objects found within the bounds of the current stack. | +| `dumpalc` | Displays details about a collectible AssemblyLoadContext to which the specified object is loaded. | +| `dumparray` | Displays details about a managed array. | +| `dumpasync` | Displays info about async state machines on the garbage-collected heap. | +| `dumpassembly` | Displays details about an assembly. | +| `dumpclass` | Displays information about the `EEClass` structure at the specified address. | +| `dumpconcurrentdictionary` | Displays concurrent dictionary content. | +| `dumpconcurrentqueue` | Displays concurrent queue content. | +| `dumpdelegate` | Displays information about a delegate. | +| `dumpdomain` | Displays information about the all assemblies within all the AppDomains or the specified one. | +| `dumpgcdata` | Displays information about the GC data. | +| `dumpgen` | Displays heap content for the specified generation. | +| `dumpheap` | Displays info about the garbage-collected heap and collection statistics about objects. | +| `dumpil` | Displays the Microsoft intermediate language (MSIL) that's associated with a managed method. | +| `dumplog` | Writes the contents of an in-memory stress log to the specified file. | +| `dumpmd` | Displays information about the `MethodDesc` structure at the specified address. | +| `dumpmodule` | Displays information about the module at the specified address. | +| `dumpmt` | Displays information about the method table at the specified address. | +| `dumpobj` | Displays info the object at the specified address. | +| `dumpruntimetypes` | Finds all System.RuntimeType objects in the GC heap and prints the type name and MethodTable they refer too. | +| `dumpsig` | Dumps the signature of a method or field specified by ` `. | +| `dumpsigelem` | Dumps a single element of a signature object. | +| `dumpstack` | Displays a native and managed stack trace. | +| `dumpstackobjects` | Displays all managed objects found within the bounds of the current stack. | +| `dumpvc` | Displays info about the fields of a value class. | +| `eeheap` | Displays info about process memory consumed by internal runtime data structures. | +| `eestack` | Runs `dumpstack` on all threads in the process. | +| `eeversion` | Displays information about the runtime and SOS versions. | +| `ehinfo` | Displays the exception handling blocks in a JIT-ed method. | +| `finalizequeue` | Displays all objects registered for finalization. | +| `findappdomain` | Attempts to resolve the AppDomain of a GC object. | +| `findroots` | Finds and displays object roots across GC collections. | +| `gchandles` | Displays statistics about garbage collector handles in the process. | +| `gcheapstat` | Displays statistics about garbage collector. | +| `gcinfo` | Displays the JIT GC encoding for a method. | +| `gcroot` | Displays info about references (or roots) to the object at the specified address. | +| `gcwhere` | Displays the location in the GC heap of the specified address. | +| `histclear` | Releases any resources used by the family of Hist commands. | +| `histinit` | Initializes the SOS structures from the stress log saved in the debuggee. | +| `histobj` | Examines all stress log relocation records and displays the chain of garbage collection relocations that may have led to the address passed in as an argument. | +| `histobjfind` | Displays all the log entries that reference the object at the specified address. | +| `histroot` | Displays information related to both promotions and relocations of the specified root. | +| `histstats` | Displays stress log stats. | +| `ip2md` | Displays the `MethodDesc` structure at the specified address in code that has been JIT-compiled. | +| `listnearobj` | Displays the object preceding and succeeding the specified address. | +| `loadsymbols` | Loads the .NET native module symbols. | +| `logging` | Enables/disables internal SOS logging. | +| `name2ee` | Displays the `MethodTable` and `EEClass` structures for the specified type or method in the specified module. | +| `objsize` | Displays the size of the specified object. | +| `parallelstacks` | Displays the merged threads stack similarly to the Visual Studio 'Parallel Stacks' panel. | +| `pathto` | Displays the GC path from `` to ``. | +| `pe` | Displays and formats fields of any object derived from the class at the specified address. | +| `printexception` | Displays and formats fields of any object derived from the class at the specified address. | +| `runtimes` | Lists the runtimes in the target or change the default runtime. | +| `stoponcatch` | Target process will break the next time a managed exception is caught during execution. | +| `setclrpath` | Sets the path to load coreclr dac/dbi files. `setclrpath `. | +| `sethostruntime` | Sets or displays the .NET runtime directory to use to run managed code in SOS. | +| `setsymbolserver` | Enables the symbol server support. | +| `setsostid` | Sets the current OS tid/thread index instead of using the one lldb provides. `setsostid `. | +| `sos` | Executes various coreclr debugging commands. Use the syntax `sos `. For more information, see 'soshelp'. | +| `soshelp` | Displays all available commands when no parameter is specified, or displays detailed help information about the specified command: `soshelp `. | +| `syncblk` | Displays the SyncBlock holder info. | +| `taskstate` | Displays a Task state in a human readable format. | +| `threadpool` | Displays info about the runtime thread pool. | +| `threadpoolqueue` | Displays queued thread pool work items. | +| `threadstate` | Pretty prints the meaning of a threads state. | +| `timerinfo` | Displays information about running timers. | +| `token2ee` | Displays the MethodTable structure and MethodDesc structure for the specified token and module. | +| `traverseheap` | Writes out heap information to a file in a format understood by the CLR Profiler. | +| `verifyheap` | Checks the GC heap for signs of corruption. | +| `verifyobj` | Checks the object that is passed as an argument for signs of corruption. | ## Windbg/cdb example usage -| Command | Description -| - | - -| `!dumparray -start 2 -length 5 -details 00ad28d0` | Displays the contents of an array at the address `00ad28d0`. The display starts from the second element and continues for five elements. -| `!dumpassembly 1ca248` | Displays the contents of an assembly at the address `1ca248`. -| `!dumpheap` | Displays information about the garbage collector heap. -| `!DumpLog` | Writes the contents of the in-memory stress log to a (default) file called StressLog.txt in the current directory. - `!dumpmd 902f40` | Displays the `MethodDesc` structure at the address `902f40`. -| `!dumpmodule 1caa50` | Displays information about a module at the address `1caa50`. -| `!DumpObj a79d40` | Displays information about an object at the address `a79d40`. -| `!DumpVC 0090320c 00a79d9c` | Displays the fields of a value class at the address `00a79d9c` using the method table at the address `0090320c`. -| `!eeheap` -gc | Displays the process memory used by the garbage collector. -| `!finalizequeue` | Displays all objects scheduled for finalization. -| `!findappdomain 00a79d98` | Determines the application domain of an object at the address `00a79d98`. -| `!gcinfo 5b68dbb8` | Displays all garbage collector handles in the current process. -| `!name2ee unittest.exe MainClass.Main` | Displays the `MethodTable` and `EEClass` structures for the `Main` method in the class `MainClass` in the module `unittest.exe`. -| `!token2ee unittest.exe 02000003` | Displays information about the metadata token at the address `02000003` in the module `unittest.exe`. +| Command | Description | +| - | - | +| `!dumparray -start 2 -length 5 -details 00ad28d0` | Displays the contents of an array at the address `00ad28d0`. The display starts from the second element and continues for five elements. | +| `!dumpassembly 1ca248` | Displays the contents of an assembly at the address `1ca248`. | +| `!dumpheap` | Displays information about the garbage collector heap. | +| `!DumpLog` | Writes the contents of the in-memory stress log to a (default) file called StressLog.txt in the current directory. | +| `!dumpmd 902f40` | Displays the `MethodDesc` structure at the address `902f40`. | +| `!dumpmodule 1caa50` | Displays information about a module at the address `1caa50`. | +| `!DumpObj a79d40` | Displays information about an object at the address `a79d40`. | +| `!DumpVC 0090320c 00a79d9c` | Displays the fields of a value class at the address `00a79d9c` using the method table at the address `0090320c`. | +| `!eeheap` -gc | Displays the process memory used by the garbage collector. | +| `!finalizequeue` | Displays all objects scheduled for finalization. | +| `!findappdomain 00a79d98` | Determines the application domain of an object at the address `00a79d98`. | +| `!gcinfo 5b68dbb8` | Displays all garbage collector handles in the current process. | +| `!name2ee unittest.exe MainClass.Main` | Displays the `MethodTable` and `EEClass` structures for the `Main` method in the class `MainClass` in the module `unittest.exe`. | +| `!token2ee unittest.exe 02000003` | Displays information about the metadata token at the address `02000003` in the module `unittest.exe`. | ## LLDB example usage -| Command | Description -| - | - -| `dumparray -start 2 -length 5 -details 00ad28d0` | Displays the contents of an array at the address `00ad28d0`. The display starts from the second element and continues for five elements. -| `dumpassembly 1ca248` | Displays the contents of an assembly at the address `1ca248`. -| `dumpheap` | Displays information about the garbage collector heap. -| `dumplog` | Writes the contents of the in-memory stress log to a (default) file called StressLog.txt in the current directory. -| `dumpmd 902f40` | Displays the `MethodDesc` structure at the address `902f40`. -| `dumpmodule 1caa50` | Displays information about a module at the address `1caa50`. -| `dumpobj a79d40` | Displays information about an object at the address `a79d40`. -| `dumpvc 0090320c 00a79d9c` | Displays the fields of a value class at the address `00a79d9c` using the method table at the address `0090320c`. -| `eeheap -gc` | Displays the process memory used by the garbage collector. -| `findappdomain 00a79d98` | Determines the application domain of an object at the address `00a79d98`. -| `gcinfo 5b68dbb8` | Displays all garbage collector handles in the current process. -| `name2ee unittest.exe MainClass.Main` | Displays the `MethodTable` and `EEClass` structures for the `Main` method in the class `MainClass` in the module `unittest.exe`. -| `token2ee unittest.exe 02000003` | Displays information about the metadata token at the address `02000003` in the module `unittest.exe`. -| `clrthreads` | Displays the managed threads. +| Command | Description | +| - | - | +| `dumparray -start 2 -length 5 -details 00ad28d0` | Displays the contents of an array at the address `00ad28d0`. The display starts from the second element and continues for five elements. | +| `dumpassembly 1ca248` | Displays the contents of an assembly at the address `1ca248`. | +| `dumpheap` | Displays information about the garbage collector heap. | +| `dumplog` | Writes the contents of the in-memory stress log to a (default) file called StressLog.txt in the current directory. | +| `dumpmd 902f40` | Displays the `MethodDesc` structure at the address `902f40`. | +| `dumpmodule 1caa50` | Displays information about a module at the address `1caa50`. | +| `dumpobj a79d40` | Displays information about an object at the address `a79d40`. | +| `dumpvc 0090320c 00a79d9c` | Displays the fields of a value class at the address `00a79d9c` using the method table at the address `0090320c`. | +| `eeheap -gc` | Displays the process memory used by the garbage collector. | +| `findappdomain 00a79d98` | Determines the application domain of an object at the address `00a79d98`. | +| `gcinfo 5b68dbb8` | Displays all garbage collector handles in the current process. | +| `name2ee unittest.exe MainClass.Main` | Displays the `MethodTable` and `EEClass` structures for the `Main` method in the class `MainClass` in the module `unittest.exe`. | +| `token2ee unittest.exe 02000003` | Displays information about the metadata token at the address `02000003` in the module `unittest.exe`. | +| `clrthreads` | Displays the managed threads. | ## See also diff --git a/docs/core/extensions/globalization.md b/docs/core/extensions/globalization.md index 08aa7ea3ebd29..f426ab0b256a8 100644 --- a/docs/core/extensions/globalization.md +++ b/docs/core/extensions/globalization.md @@ -97,15 +97,15 @@ Culture-sensitive string comparison is defined by the article. -| .NET Framework version | Operating system | Unicode version | -|--|--|--| -| .NET Framework 2.0 | All operating systems | Unicode 4.1 | -| .NET Framework 3.0 | All operating systems | Unicode 4.1 | -| .NET Framework 3.5 | All operating systems | Unicode 4.1 | -| .NET Framework 4 | All operating systems | Unicode 5.0 | -| .NET Framework 4.5 and later on Windows 7 | Unicode 5.0 | -| .NET Framework 4.5 and later on Windows 8 and later operating systems | | Unicode 6.3.0 | -| .NET Core and .NET 5+ | | Depends on the version of the Unicode Standard supported by the underlying operating system. | +| .NET Framework version | Operating system | Unicode version | +|------------------------------|---------------------------------------|-----------------| +| .NET Framework 2.0 | All operating systems | Unicode 4.1 | +| .NET Framework 3.0 | All operating systems | Unicode 4.1 | +| .NET Framework 3.5 | All operating systems | Unicode 4.1 | +| .NET Framework 4 | All operating systems | Unicode 5.0 | +| .NET Framework 4.5 and later | Windows 7 | Unicode 5.0 | +| .NET Framework 4.5 and later | Windows 8 and later operating systems | Unicode 6.3.0 | +| .NET Core and .NET 5+ | | Depends on the version of the Unicode Standard supported by the underlying OS. | Starting with .NET Framework 4.5 and in all versions of .NET Core and .NET 5+, string comparison and sorting depends on the operating system. .NET Framework 4.5 and later running on Windows 7 retrieves data from its own tables that implement Unicode 5.0. .NET Framework 4.5 and later running on Windows 8 and later retrieves data from operating system tables that implement Unicode 6.3. On .NET Core and .NET 5+, the supported version of Unicode depends on the underlying operating system. If you serialize culture-sensitive sorted data, you can use the class to determine when your serialized data needs to be sorted so that it is consistent with .NET and the operating system's sort order. For an example, see the class topic. diff --git a/docs/core/project-sdk/overview.md b/docs/core/project-sdk/overview.md index 6055c95a4320c..6870f4c68871e 100644 --- a/docs/core/project-sdk/overview.md +++ b/docs/core/project-sdk/overview.md @@ -18,9 +18,9 @@ The following SDKs are available: | - | - | - | | `Microsoft.NET.Sdk` | The .NET SDK | | | `Microsoft.NET.Sdk.Web` | The .NET [Web SDK](/aspnet/core/razor-pages/web-sdk) | | -| `Microsoft.NET.Sdk.BlazorWebAssembly` | The .NET [Blazor WebAssembly](/aspnet/core/blazor#blazor-webassembly) SDK | -| `Microsoft.NET.Sdk.Razor` | The .NET [Razor SDK](/aspnet/core/razor-pages/sdk) | -| `Microsoft.NET.Sdk.Worker` | The .NET [Worker Service](../extensions/workers.md) SDK | +| `Microsoft.NET.Sdk.BlazorWebAssembly` | The .NET [Blazor WebAssembly](/aspnet/core/blazor#blazor-webassembly) SDK | | +| `Microsoft.NET.Sdk.Razor` | The .NET [Razor SDK](/aspnet/core/razor-pages/sdk) | | +| `Microsoft.NET.Sdk.Worker` | The .NET [Worker Service](../extensions/workers.md) SDK | | | `Microsoft.NET.Sdk.WindowsDesktop` | The .NET [Desktop SDK](msbuild-props-desktop.md), which includes Windows Forms (WinForms) and Windows Presentation Foundation (WPF).\* | and | The .NET SDK is the base SDK for .NET. The other SDKs reference the .NET SDK, and projects that are associated with the other SDKs have all the .NET SDK properties available to them. The Web SDK, for example, depends on both the .NET SDK and the Razor SDK. diff --git a/docs/core/runtime-config/wpf.md b/docs/core/runtime-config/wpf.md index 0b1037be54044..6cebffe1280b2 100644 --- a/docs/core/runtime-config/wpf.md +++ b/docs/core/runtime-config/wpf.md @@ -14,9 +14,9 @@ This article details the settings you can use to configure Windows Presentation - Configures whether hardware acceleration is used for WPF apps that are accessed through Remote Desktop Protocol (RDP). Hardware acceleration refers to the use of a computer's graphics processing unit (GPU) to speed up the rendering of graphics and visual effects in an application. This can result in improved performance and more seamless, responsive graphics. - If you omit this setting, graphics are rendered by software instead. This is equivalent to setting the value to `false`. -| | Setting name | Values | Version introduced -| - | - | - | - | +| Setting type | Setting name | Values | Version introduced | +|--------------|--------------|--------|--------------------| | **runtimeconfig.json** | `Switch.System.Windows.Media.EnableHardwareAccelerationInRdp` | `true` - enabled
`false` - disabled | .NET 8 | -| **Environment variable** | N/A | N/A | | +| **Environment variable** | N/A | | | [!INCLUDE [runtimehostconfigurationoption](includes/runtimehostconfigurationoption.md)] diff --git a/docs/core/runtime-discovery/troubleshoot-app-launch.md b/docs/core/runtime-discovery/troubleshoot-app-launch.md index 0cb388d4cc9bd..3cbb8534108a1 100644 --- a/docs/core/runtime-discovery/troubleshoot-app-launch.md +++ b/docs/core/runtime-discovery/troubleshoot-app-launch.md @@ -136,18 +136,22 @@ Alternately, you can download a runtime from the [.NET downloads](https://dotnet The following table shows the frameworks that each runtime contains. ::: zone pivot="os-windows" + | Runtime download | Included frameworks | | -------------------- | ------------------------------------------------------ | | ASP.NET Core Runtime | Microsoft.NETCore.App
Microsoft.AspNetCore.App | | .NET Desktop Runtime | Microsoft.NETCore.App
Microsoft.WindowsDesktop.App | | .NET Runtime | Microsoft.NETCore.App | + ::: zone-end ::: zone pivot="os-linux,os-macos" + | Runtime download | Included frameworks | | -------------------- | -------------------------------------------------- | | ASP.NET Core Runtime | Microsoft.NETCore.App
Microsoft.AspNetCore.App | | .NET Runtime | Microsoft.NETCore.App | + ::: zone-end Select a runtime download that contains the missing framework, and then install it. diff --git a/docs/core/testing/unit-testing-mstest-runner-runsettings.md b/docs/core/testing/unit-testing-mstest-runner-runsettings.md index de45e3b30d5e3..a390fa8770763 100644 --- a/docs/core/testing/unit-testing-mstest-runner-runsettings.md +++ b/docs/core/testing/unit-testing-mstest-runner-runsettings.md @@ -6,40 +6,39 @@ ms.author: jajares ms.date: 01/03/2024 --- - # Use runsettings with MSTest runner -MSTest runner allows you to provide a [VSTest *.runsettings* file](/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file), but not all options in this file are picked up by the runner. This article teaches you about the supported and unsupported settings, and configuration options. This article shows you alternatives for the most used VSTest configuration options. +MSTest runner allows you to provide a [VSTest *.runsettings* file](/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file), but not all options in this file are picked up by the runner. This article teaches you about the supported and unsupported settings, and configuration options. This article also shows you alternatives for the most used VSTest configuration options. ## Supported runsettings All runsettings in `` section of the configuration file are supported by MSTest runner. -Their full description can be [found here](https://learn.microsoft.com/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file?view=vs-2022#mstest-element). +For their full descriptions, see [MSTest element](/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file#mstest-element). ## Unsupported runsettings The **RunConfiguration** element can include the following elements. None of these settings are respected by the MSTest runner: -|Node|Description|Reason / workaround | -|-|-|-| -|**MaxCpuCount**|This setting controls the level of parallelism on process-level. Use 0 to enable the maximum process-level parallelism.| When MSTest runner is used with MSBuild, this option is [offloaded to MSBuild](/visualstudio/msbuild/building-multiple-projects-in-parallel-with-msbuild). When a single executable is run, this option has no meaning for MSTest runner. -|**ResultsDirectory**|The directory where test results are placed. The path is relative to the directory that contains .runsettings file.| Use the commandline option `--results-directory` to determine the directory where the test results are going to be placed. If the specified directory doesn't exist, it's created. The default is `TestResults` in the directory that contains the test application. -|**TargetFrameworkVersion**| This setting defines the framework version, or framework family to use to run tests.| This option is ignored. The `` or `` MSBuild properties determine the target framework of the application. The tests are hosted in the final application. -|**TargetPlatform**|This setting defines the architecture to use to run tests. | `` determines the architecture of the final application that hosts the tests. -|**TreatTestAdapterErrorsAsWarnings**|Suppresses test adapter errors to become warnings. | MSTest runner allows only one type of tests to be run from a single assembly, and failure to load the test framework or other parts of infrastructure will become an unskippable error, because it signifies that some tests could not be discovered or run. +| Node | Description | Reason / Workaround | +|------|-------------|---------------------| +|**MaxCpuCount**|This setting controls the level of parallelism on process-level. Use 0 to enable the maximum process-level parallelism.| When MSTest runner is used with MSBuild, this option is [offloaded to MSBuild](/visualstudio/msbuild/building-multiple-projects-in-parallel-with-msbuild). When a single executable is run, this option has no meaning for MSTest runner. | +|**ResultsDirectory**|The directory where test results are placed. The path is relative to the directory that contains the *.runsettings* file.| Use the command-line option `--results-directory` to determine the directory where the test results are going to be placed. If the specified directory doesn't exist, it's created. The default is `TestResults` in the directory that contains the test application. | +|**TargetFrameworkVersion**| This setting defines the framework version, or framework family to use to run tests.| This option is ignored. The `` or `` MSBuild properties determine the target framework of the application. The tests are hosted in the final application. | +|**TargetPlatform**|This setting defines the architecture to use to run tests. | `` determines the architecture of the final application that hosts the tests. | +|**TreatTestAdapterErrorsAsWarnings**|Suppresses test adapter errors to become warnings. | MSTest runner allows only one type of tests to be run from a single assembly, and failure to load the test framework or other parts of infrastructure will become an un-skippable error, because it signifies that some tests could not be discovered or run. | |**TestAdaptersPaths**| One or more paths to the directory where the TestAdapters are located| MSTest runner does not use the concept of test adapters and does not allow dynamic loading of extensions unless they are part of the build, and are registered in `Program.cs`, either automatically via build targets or manually. | -|**TestCaseFilter**| A filter to limit tests which will run. | To filter tests use `--filter` command line option. +|**TestCaseFilter**| A filter to limit tests which will run. | To filter tests use `--filter` command line option. | |**TestSessionTimeout**|Allows users to terminate a test session when it exceeds a given timeout.| There is no alternative option. | -|**DotnetHostPath**|Specify a custom path to dotnet host that is used to run the testhost. | MSTest runner is not doing any additional resolving of dotnet. It depends fully on how dotnet resolves itself, which can be controlled by environment variables such as [`DOTNET_HOST_PATH`](/dotnet/core/tools/dotnet-environment-variables#dotnet_host_path) -|**TreatNoTestsAsError**| Exit with non-zero exit code when no tests are discovered. | MSTest runner will error by default when no tests are discovered or run in a test application. You can set how many tests you expect to find in the assembly by using `--minimum-expected-tests` command line parameter, which defaults to 1. +|**DotnetHostPath**|Specify a custom path to dotnet host that is used to run the test host. | MSTest runner is not doing any additional resolving of dotnet. It depends fully on how dotnet resolves itself, which can be controlled by environment variables such as [`DOTNET_HOST_PATH`](/dotnet/core/tools/dotnet-environment-variables#dotnet_host_path). | +|**TreatNoTestsAsError**| Exit with non-zero exit code when no tests are discovered. | MSTest runner will error by default when no tests are discovered or run in a test application. You can set how many tests you expect to find in the assembly by using `--minimum-expected-tests` command line parameter, which defaults to 1. | ### DataCollectionRunSettings -MSTest runner is not using data collectors. Instead it has the concept of in-process and out-of-process extensions. Each extension is configured by its respective configuration file, or through commandline. +MSTest runner is not using data collectors. Instead it has the concept of in-process and out-of-process extensions. Each extension is configured by its respective configuration file or through the command line. Most importantly [hang](unit-testing-mstest-runner-extensions.md#hang-dump-files) and [crash](unit-testing-mstest-runner-extensions.md#crash-dump-files) extension, and [code coverage](unit-testing-mstest-runner-extensions.md#microsoft-code-coverage) extension. ### LoggerRunSettings -Loggers in MSTest runner are configured through commandline parameters, or by settings in code. +Loggers in MSTest runner are configured through command-line parameters or by settings in code. diff --git a/docs/core/tools/dotnet.md b/docs/core/tools/dotnet.md index 5a4d48805fb1f..a4f9a70231a50 100644 --- a/docs/core/tools/dotnet.md +++ b/docs/core/tools/dotnet.md @@ -180,55 +180,55 @@ The following options are available only when `dotnet` runs an application by us ### Project references -Command | Function ---- | --- -[dotnet add reference](dotnet-add-reference.md) | Adds a project reference. -[dotnet list reference](dotnet-list-reference.md) | Lists project references. -[dotnet remove reference](dotnet-remove-reference.md) | Removes a project reference. +| Command | Function | +|-------------------------------------------------------|------------------------------| +| [dotnet add reference](dotnet-add-reference.md) | Adds a project reference. | +| [dotnet list reference](dotnet-list-reference.md) | Lists project references. | +| [dotnet remove reference](dotnet-remove-reference.md) | Removes a project reference. | ### NuGet packages -Command | Function ---- | --- -[dotnet add package](dotnet-add-package.md) | Adds a NuGet package. -[dotnet remove package](dotnet-remove-package.md) | Removes a NuGet package. +| Command | Function | +|---------------------------------------------------|--------------------------| +| [dotnet add package](dotnet-add-package.md) | Adds a NuGet package. | +| [dotnet remove package](dotnet-remove-package.md) | Removes a NuGet package. | ### NuGet commands -Command | Function ---- | --- -[dotnet nuget delete](dotnet-nuget-delete.md) | Deletes or unlists a package from the server. -[dotnet nuget push](dotnet-nuget-push.md) | Pushes a package to the server and publishes it. -[dotnet nuget locals](dotnet-nuget-locals.md) | Clears or lists local NuGet resources such as http-request cache, temporary cache, or machine-wide global packages folder. -[dotnet nuget add source](dotnet-nuget-add-source.md) | Adds a NuGet source. -[dotnet nuget disable source](dotnet-nuget-disable-source.md) | Disables a NuGet source. -[dotnet nuget enable source](dotnet-nuget-enable-source.md) | Enables a NuGet source. -[dotnet nuget list source](dotnet-nuget-list-source.md) | Lists all configured NuGet sources. -[dotnet nuget remove source](dotnet-nuget-remove-source.md) | Removes a NuGet source. -[dotnet nuget update source](dotnet-nuget-update-source.md) | Updates a NuGet source. +| Command | Function | +|-----------------------------------------------|--------------------------------------------------| +| [dotnet nuget delete](dotnet-nuget-delete.md) | Deletes or unlists a package from the server. | +| [dotnet nuget push](dotnet-nuget-push.md) | Pushes a package to the server and publishes it. | +| [dotnet nuget locals](dotnet-nuget-locals.md) | Clears or lists local NuGet resources such as http-request cache, temporary cache, or machine-wide global packages folder. | +| [dotnet nuget add source](dotnet-nuget-add-source.md) | Adds a NuGet source. | +| [dotnet nuget disable source](dotnet-nuget-disable-source.md) | Disables a NuGet source. | +| [dotnet nuget enable source](dotnet-nuget-enable-source.md) | Enables a NuGet source. | +| [dotnet nuget list source](dotnet-nuget-list-source.md) | Lists all configured NuGet sources. | +| [dotnet nuget remove source](dotnet-nuget-remove-source.md) | Removes a NuGet source. | +| [dotnet nuget update source](dotnet-nuget-update-source.md) | Updates a NuGet source. | ### Workload commands -Command | Function ---- | --- -[dotnet workload install](dotnet-workload-install.md) | Installs an optional workload. -[dotnet workload list](dotnet-workload-list.md) | Lists all installed workloads. -[dotnet workload repair](dotnet-workload-repair.md) | Repairs all installed workloads. -[dotnet workload search](dotnet-workload-search.md) | List selected workloads or all available workloads. -[dotnet workload uninstall](dotnet-workload-install.md) | Uninstalls a workload. -[dotnet workload update](dotnet-workload-update.md) | Reinstalls all installed workloads. +| Command | Function | +|---------------------------------------------------------|-----------------------------------------------------| +| [dotnet workload install](dotnet-workload-install.md) | Installs an optional workload. | +| [dotnet workload list](dotnet-workload-list.md) | Lists all installed workloads. | +| [dotnet workload repair](dotnet-workload-repair.md) | Repairs all installed workloads. | +| [dotnet workload search](dotnet-workload-search.md) | List selected workloads or all available workloads. | +| [dotnet workload uninstall](dotnet-workload-install.md) | Uninstalls a workload. | +| [dotnet workload update](dotnet-workload-update.md) | Reinstalls all installed workloads. | ### Global, tool-path, and local tools commands Tools are console applications that are installed from NuGet packages and are invoked from the command prompt. You can write tools yourself or install tools written by third parties. Tools are also known as global tools, tool-path tools, and local tools. For more information, see [.NET tools overview](global-tools.md). -Command | Function ---- | --- -[dotnet tool install](dotnet-tool-install.md) | Installs a tool on your machine. -[dotnet tool list](dotnet-tool-list.md) | Lists all global, tool-path, or local tools currently installed on your machine. -[dotnet tool search](dotnet-tool-search.md) | Searches NuGet.org for tools that have the specified search term in their name or metadata. -[dotnet tool uninstall](dotnet-tool-uninstall.md) | Uninstalls a tool from your machine. -[dotnet tool update](dotnet-tool-update.md) | Updates a tool that is installed on your machine. +| Command | Function | +|-----------------------------------------------|----------------------------------| +| [dotnet tool install](dotnet-tool-install.md) | Installs a tool on your machine. | +| [dotnet tool list](dotnet-tool-list.md) | Lists all global, tool-path, or local tools currently installed on your machine. | +| [dotnet tool search](dotnet-tool-search.md) | Searches NuGet.org for tools that have the specified search term in their name or metadata. | +| [dotnet tool uninstall](dotnet-tool-uninstall.md) | Uninstalls a tool from your machine. | +| [dotnet tool update](dotnet-tool-update.md) | Updates a tool that is installed on your machine. | ### Additional tools diff --git a/docs/csharp/linq/query-a-collection-of-objects.md b/docs/csharp/linq/query-a-collection-of-objects.md index 359424e7bac96..b08c6782eb363 100644 --- a/docs/csharp/linq/query-a-collection-of-objects.md +++ b/docs/csharp/linq/query-a-collection-of-objects.md @@ -5,18 +5,16 @@ ms.date: 07/16/2023 --- # Query a collection of objects -The term "LINQ to Objects" refers to the use of LINQ queries with any or collection directly, without the use of an intermediate LINQ provider or API such as [LINQ to SQL](../../framework/data/adonet/sql/linq/index.md) or [LINQ to XML](../../standard/linq/linq-xml-overview.md). You can use LINQ to query any enumerable collections such as , , or . The collection may be user-defined or may be returned by a .NET API. In the LINQ approach, you write declarative code that describes what you want to retrieve. - - In addition, LINQ queries offer three main advantages over traditional `foreach` loops: - -- They are more concise and readable, especially when filtering multiple conditions. - -- They provide powerful filtering, ordering, and grouping capabilities with a minimum of application code. - -- They can be ported to other data sources with little or no modification. - - In general, the more complex the operation you want to perform on the data, the more benefit you'll realize by using LINQ instead of traditional iteration techniques. - +The term "LINQ to Objects" refers to the use of LINQ queries with any or collection directly, without the use of an intermediate LINQ provider or API such as [LINQ to SQL](../../framework/data/adonet/sql/linq/index.md) or [LINQ to XML](../../standard/linq/linq-xml-overview.md). You can use LINQ to query any enumerable collections such as , , or . The collection may be user-defined or may be returned by a .NET API. In the LINQ approach, you write declarative code that describes what you want to retrieve. + +In addition, LINQ queries offer three main advantages over traditional `foreach` loops: + +- They are more concise and readable, especially when filtering multiple conditions. +- They provide powerful filtering, ordering, and grouping capabilities with a minimum of application code. +- They can be ported to other data sources with little or no modification. + +In general, the more complex the operation you want to perform on the data, the more benefit you'll realize by using LINQ instead of traditional iteration techniques. + This example shows how to perform a simple query over a list of `Student` objects. Each `Student` object contains some basic information about the student, and a list that represents the student's scores on four examinations. > [!NOTE] @@ -29,91 +27,91 @@ This example shows how to perform a simple query over a list of `Student` object The following query returns the students who received a score of 90 or greater on their first exam. :::code language="csharp" source="../../../samples/snippets/csharp/concepts/linq/LinqSamples/QueryCollectionOfObjects.cs" id="query_a_collection_of_objects_2"::: - + This query is intentionally simple to enable you to experiment. For example, you can try more conditions in the `where` clause, or use an `orderby` clause to sort the results. - + ## Classification of standard query operators by manner of execution -The LINQ to Objects implementations of the standard query operator methods execute in one of two main ways: immediate or deferred. The query operators that use deferred execution can be additionally divided into two categories: streaming and non-streaming. If you know how the different query operators execute, it may help you understand the results that you get from a given query. This is especially true if the data source is changing or if you are building a query on top of another query. This topic classifies the standard query operators according to their manner of execution. - -### Immediate +The LINQ to Objects implementations of the standard query operator methods execute in one of two main ways: immediate or deferred. The query operators that use deferred execution can be additionally divided into two categories: streaming and non-streaming. If you know how the different query operators execute, it may help you understand the results that you get from a given query. This is especially true if the data source is changing or if you are building a query on top of another query. This topic classifies the standard query operators according to their manner of execution. + +### Immediate Immediate execution means that the data source is read and the operation is performed once. All the standard query operators that return a scalar result execute immediately. You can force a query to execute immediately using the or methods. Immediate execution provides reuse of query results, not query declaration. The results are retrieved once, then stored for future use. - -### Deferred + +### Deferred Deferred execution means that the operation is not performed at the point in the code where the query is declared. The operation is performed only when the query variable is enumerated, for example by using a `foreach` statement. This means that the results of executing the query depend on the contents of the data source when the query is executed rather than when the query is defined. If the query variable is enumerated multiple times, the results might differ every time. Almost all the standard query operators whose return type is or execute in a deferred manner. Deferred execution provides the facility of query reuse since the query fetches the updated data from the data source each time query results are iterated. - - Query operators that use deferred execution can be additionally classified as streaming or non-streaming. - -#### Streaming - Streaming operators do not have to read all the source data before they yield elements. At the time of execution, a streaming operator performs its operation on each source element as it is read and yields the element if appropriate. A streaming operator continues to read source elements until a result element can be produced. This means that more than one source element might be read to produce one result element. - + Query operators that use deferred execution can be additionally classified as streaming or non-streaming. + +#### Streaming + + Streaming operators do not have to read all the source data before they yield elements. At the time of execution, a streaming operator performs its operation on each source element as it is read and yields the element if appropriate. A streaming operator continues to read source elements until a result element can be produced. This means that more than one source element might be read to produce one result element. + #### Non-streaming - Non-streaming operators must read all the source data before they can yield a result element. Operations such as sorting or grouping fall into this category. At the time of execution, non-streaming query operators read all the source data, put it into a data structure, perform the operation, and yield the resulting elements. - + Non-streaming operators must read all the source data before they can yield a result element. Operations such as sorting or grouping fall into this category. At the time of execution, non-streaming query operators read all the source data, put it into a data structure, perform the operation, and yield the resulting elements. + ## Classification table - The following table classifies each standard query operator method according to its method of execution. - + The following table classifies each standard query operator method according to its method of execution. + > [!NOTE] -> If an operator is marked in two columns, two input sequences are involved in the operation, and each sequence is evaluated differently. In these cases, it is always the first sequence in the parameter list that is evaluated in a deferred, streaming manner. - +> If an operator is marked in two columns, two input sequences are involved in the operation, and each sequence is evaluated differently. In these cases, it is always the first sequence in the parameter list that is evaluated in a deferred, streaming manner. + |Standard query operator | Return type | Immediate execution | Deferred streaming execution | Deferred Non-streaming execution | -|-----------------------------|-----------------|-------------------------|----------------------------------|---------------------------------------| -||`TSource`|X||| -|||X||| -|||X||| -||||X|| -||Single numeric value|X||| -||||X|| -||||X|| -|||X||| -|||X||| -||||X|| -||||X|| -||`TSource`|X||| -||`TSource?`|X||| -|||X||| -||||X|X| -||`TSource`|X||| -||`TSource?`|X||| -|||||X| -||||X|X| -|||X|X| -||||X|X| -||`TSource`|X||| -||`TSource?`|X||| -|||X||| -||Single numeric value, `TSource`, or `TResult?`|X||| -||Single numeric value, `TSource`, or `TResult?`|X||| -||||X|| -|||||X| -|||||X| -||||X|| -||||X|| -|||||X| -||||X|| -||||X|| -|||X||| -||`TSource`|X||| -||`TSource?`|X||| -||||X|| -||||X|| -||Single numeric value|X||| -||||X|| -|||X|| -|||||X| -|||||X| -||`TSource[]` array|X||| -|||X||| -|||X||| -|||X||| -||||X|| -||||X|| - +|-----------------------------|-----------------|-------------------------|----------------------------------|---------------------------------------| +||`TSource`|X||| +|||X||| +|||X||| +||||X|| +||Single numeric value|X||| +||||X|| +||||X|| +|||X||| +|||X||| +||||X|| +||||X|| +||`TSource`|X||| +||`TSource?`|X||| +|||X||| +||||X|X| +||`TSource`|X||| +||`TSource?`|X||| +|||||X| +||||X|X| +||||X|X| +||||X|X| +||`TSource`|X||| +||`TSource?`|X||| +|||X||| +||Single numeric value, `TSource`, or `TResult?`|X||| +||Single numeric value, `TSource`, or `TResult?`|X||| +||||X|| +|||||X| +|||||X| +||||X|| +||||X|| +|||||X| +||||X|| +||||X|| +|||X||| +||`TSource`|X||| +||`TSource?`|X||| +||||X|| +||||X|| +||Single numeric value|X||| +||||X|| +||||X|| +|||||X| +|||||X| +||`TSource[]` array|X||| +|||X||| +|||X||| +|||X||| +||||X|| +||||X|| + ## See also - [Language Integrated Query (LINQ)](index.md) diff --git a/docs/csharp/programming-guide/concepts/index.md b/docs/csharp/programming-guide/concepts/index.md index 04eb4f5740d91..c06ed69bd96ad 100644 --- a/docs/csharp/programming-guide/concepts/index.md +++ b/docs/csharp/programming-guide/concepts/index.md @@ -3,21 +3,20 @@ title: "Programming Concepts (C#)" description: Use the resources in this section to understand programming concepts in the C# language, including object-oriented programming. ms.date: 03/24/2022 --- -# Programming Concepts (C#) +# Programming concepts (C#) + +This section explains programming concepts in the C# language. + +## In this section + +| Title | Description | +|-------|-------------| +|[Covariance and Contravariance (C#)](./covariance-contravariance/index.md)|Shows how to enable implicit conversion of generic type parameters in interfaces and delegates.| +|[Iterators (C#)](./iterators.md)|Describes iterators, which are used to step through collections and return elements one at a time.| +|[Language-Integrated Query (LINQ) (C#)](/dotnet/csharp/linq/)|Discusses the powerful query capabilities in the language syntax of C#, and the model for querying relational databases, XML documents, datasets, and in-memory collections.| + +## Related sections -This section explains programming concepts in the C# language. - -## In This Section - -|Title|Description| -|-----------|-----------------| -methods, and properties by using attributes.| -|[Covariance and Contravariance (C#)](./covariance-contravariance/index.md)|Shows how to enable implicit conversion of generic type parameters in interfaces and delegates.| -|[Iterators (C#)](./iterators.md)|Describes iterators, which are used to step through collections and return elements one at a time.| -|[Language-Integrated Query (LINQ) (C#)](/dotnet/csharp/linq/)|Discusses the powerful query capabilities in the language syntax of C#, and the model for querying relational databases, XML documents, datasets, and in-memory collections.| - -## Related Sections - - [Performance Tips](../../../framework/performance/performance-tips.md) Discusses several basic rules that may help you increase the performance of your application. diff --git a/docs/csharp/programming-guide/strings/index.md b/docs/csharp/programming-guide/strings/index.md index 6794c6fbe553b..a3233d6686eac 100644 --- a/docs/csharp/programming-guide/strings/index.md +++ b/docs/csharp/programming-guide/strings/index.md @@ -78,22 +78,22 @@ Compare that text with the equivalent text in the sample on [JSON deserializatio ### String escape sequences -Escape sequence|Character name|Unicode encoding| -|---------------------|--------------------|----------------------| -|\\'|Single quote|0x0027| -|\\"|Double quote|0x0022| -|\\\\ |Backslash|0x005C| -|\0|Null|0x0000| -|\a|Alert|0x0007| -|\b|Backspace|0x0008| -|\f|Form feed|0x000C| -|\n|New line|0x000A| -|\r|Carriage return|0x000D| -|\t|Horizontal tab|0x0009| -|\v|Vertical tab|0x000B| -|\u|Unicode escape sequence (UTF-16)|`\uHHHH` (range: 0000 - FFFF; example: `\u00E7` = "ç")| -|\U|Unicode escape sequence (UTF-32)|`\U00HHHHHH` (range: 000000 - 10FFFF; example: `\U0001F47D` = "👽")| -|\x|Unicode escape sequence similar to "\u" except with variable length|`\xH[H][H][H]` (range: 0 - FFFF; example: `\x00E7` or `\x0E7` or `\xE7` = "ç")| +| Escape sequence | Character name | Unicode encoding | +|-----------------|----------------------------------|--------------------------------------------------------| +| \\' | Single quote | 0x0027 | +| \\" | Double quote | 0x0022 | +| \\\\ | Backslash | 0x005C | +| \0 | Null | 0x0000 | +| \a | Alert | 0x0007 | +| \b | Backspace | 0x0008 | +| \f | Form feed | 0x000C | +| \n | New line | 0x000A | +| \r | Carriage return | 0x000D | +| \t | Horizontal tab | 0x0009 | +| \v | Vertical tab | 0x000B | +| \u | Unicode escape sequence (UTF-16) | `\uHHHH` (range: 0000 - FFFF; example: `\u00E7` = "ç") | +| \U |Unicode escape sequence (UTF-32) |`\U00HHHHHH` (range: 000000 - 10FFFF; example: `\U0001F47D` = "👽")| +| \x |Unicode escape sequence similar to "\u" except with variable length|`\xH[H][H][H]` (range: 0 - FFFF; example: `\x00E7` or `\x0E7` or `\xE7` = "ç")| > [!WARNING] > When using the `\x` escape sequence and specifying less than 4 hex digits, if the characters that immediately follow the escape sequence are valid hex digits (i.e. 0-9, A-F, and a-f), they will be interpreted as being part of the escape sequence. For example, `\xA1` produces "¡", which is code point U+00A1. However, if the next character is "A" or "a", then the escape sequence will instead be interpreted as being `\xA1A` and produce "ਚ", which is code point U+0A1A. In such cases, specifying all 4 hex digits (for example, `\x00A1`) prevents any possible misinterpretation. diff --git a/docs/framework/additional-apis/pos-for-net/poscommon-class.md b/docs/framework/additional-apis/pos-for-net/poscommon-class.md index bca6a80536cc9..c6d305e7034a3 100644 --- a/docs/framework/additional-apis/pos-for-net/poscommon-class.md +++ b/docs/framework/additional-apis/pos-for-net/poscommon-class.md @@ -14,57 +14,52 @@ ms.custom: "pos-restored-from-archive,UpdateFrequency5" The following table describes the properties of the **PosCommon** class available to POS applications. -| Property | Type | Description | -|---------------------------|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| CapCompareFirmwareVersion | bool | Indicates whether the Service Object and device supports comparing the firmware version in the physical device against that of a firmware file. | -| CapPowerReporting | PowerReporting enum | Indicates the power reporting capabilities of the device. | -| CapStatisticsReporting | bool | Indicates whether the device can accumulate and can provide various statistics regarding usage. | -| CapUpdateStatistics | bool | If set to true, some or all of the device statistics can be reset to 0 (zero) using the ResetStatistic method for one update and ResetStatistics method for a list of updates, or updated using the UpdateStatistic method for one update and the UpdateStatistics method for a list of updates with the corresponding specified values. | -| CapUpdateFirmware | bool | Indicates whether the device's firmware can be updated via the UpdateFirmware method. | -| CheckHealthText | string | Indicates the health of the device. | -| Claimed | bool | Indicates whether the device is claimed for exclusive access. | -| DeviceDescription | string | Holds a string identifying the device and the company that manufactured it. | -| DeviceEnabled | bool | Indicates whether the device is in an operational state. | -| DeviceName | string | UnifiedPOS calls it PhysicalDeviceName; OLE for Retail POS (OPOS) calls it DeviceName. | -| DevicePath | string | Set by POS for .NET for Plug and Play devices. For non-Plug and Play devices, DevicePath can be assigned using a configuration file. | -| FreezeEvents | bool | When set to true, the application has requested that the Service Object not deliver events. | -| PowerNotify | PowerNotification enum | Holds the type of power notification selection made by the application. | -| PowerState | PowerState enum | Holds the current power condition. | -| ServiceObjectDescription | string | Identifies the Service Object supporting the device and the company that produced it. This property is listed as DeviceServiceDescription in the UnifiedPOS specification. | -| ServiceObjectVersion | System.Version | Holds the Service Object version number. This property is listed as DeviceServiceVersion in the UnifiedPOS specification. | -| State | ControlState enum | Holds the current state of the device. | -| SynchronizingObject | ISynchronizeInvoke | Gets or sets the marshalling object for event handler calls from a POS event. | +| Property | Type | Description | +|----------|------|-------------| +| CapCompareFirmwareVersion | bool | Indicates whether the Service Object and device supports comparing the firmware version in the physical device against that of a firmware file. | +| CapPowerReporting | PowerReporting enum | Indicates the power reporting capabilities of the device. | +| CapStatisticsReporting | bool | Indicates whether the device can accumulate and can provide various statistics regarding usage. | +| CapUpdateStatistics | bool | If set to true, some or all of the device statistics can be reset to 0 (zero) using the ResetStatistic method for one update and ResetStatistics method for a list of updates, or updated using the UpdateStatistic method for one update and the UpdateStatistics method for a list of updates with the corresponding specified values. | +| CapUpdateFirmware | bool | Indicates whether the device's firmware can be updated via the UpdateFirmware method. | +| CheckHealthText | string | Indicates the health of the device. | +| Claimed | bool | Indicates whether the device is claimed for exclusive access. | +| DeviceDescription | string | Holds a string identifying the device and the company that manufactured it. | +| DeviceEnabled | bool | Indicates whether the device is in an operational state. | +| DeviceName | string | UnifiedPOS calls it PhysicalDeviceName; OLE for Retail POS (OPOS) calls it DeviceName. | +| DevicePath | string | Set by POS for .NET for Plug and Play devices. For non-Plug and Play devices, DevicePath can be assigned using a configuration file. | +| FreezeEvents | bool | When set to true, the application has requested that the Service Object not deliver events. | +| PowerNotify | PowerNotification enum | Holds the type of power notification selection made by the application. | +| PowerState | PowerState enum | Holds the current power condition. | +| ServiceObjectDescription | string | Identifies the Service Object supporting the device and the company that produced it. This property is listed as DeviceServiceDescription in the UnifiedPOS specification. | +| ServiceObjectVersion | System.Version | Holds the Service Object version number. This property is listed as DeviceServiceVersion in the UnifiedPOS specification. | +| State | ControlState enum | Holds the current state of the device. | +| SynchronizingObject | ISynchronizeInvoke | Gets or sets the marshalling object for event handler calls from a POS event. | ## PosCommon Methods The following table describes the methods of the **PosCommon** class available to applications. -| Method | Return Type | Description | -|------------------------|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| CheckHealth | string | Performs a health check on the device. The type of check to be performed is indicated by the HealthCheckLevel parameter. The method also updates the CheckHealthText property. | -| Claim | void | Requests exclusive access to the device. -Service Object writers are advised to only throw exceptions in unexpected conditions; for example, OutOfMemory. Otherwise, Service Objects should return True if the device was claimed and False if a time-out occurred. | -| Close | void | Releases the device and its resources. | -| CompareFirmwareVersion | CompareFirmwareResult | Determines whether the version of the specified firmware is newer than, older than, or the same as the version of firmware in the physical device. | -| DirectIO | DirectIOData | Used to communicate directly with the Service Object. -In the UnifiedPOS specification, it has two in/out parameters. As used by POS for .NET, this method returns a structure and no in/out parameters. | -| Open | void | Opens a device for subsequent input/output processing. | -| Release | void | Releases exclusive access to the device. | -| ResetStatistic | void | Resets the specified statistic to zero. -Used in POS for .NET for operations on a single statistic. | -| ResetStatistics | void | Resets all statistics for a specified category to 0 (zero). | -| ResetStatistics | void | Resets the specified statistics to 0 (zero). | -| ResetStatistics | void | Resets all statistics associated with a device to 0 (zero). | -| RetrieveStatistic | string | Retrieves the specified device statistic. -Used in POS for .NET for operations on a single statistic. | -| RetrieveStatistics | string | Retrieves all device statistics. | -| RetrieveStatistics | void | Retrieves the statistics for the specified category. | -| RetrieveStatistics | void | Retrieves the specified statistics. | -| UpdateFirmware | void | Updates the firmware of a device with the version of the firmware contained in the specified filename. | -| UpdateStatistic | void | Updates a statistic. -Added to POS for .NET for operations on a single statistic. | -| UpdateStatistics | void | Updates a list of statistics with the corresponding specified values. | -| UpdateStatistics | void | Updates the specified category of statistics with the specified value. | +| Method | Return Type | Description | +|--------|-------------|-------------| +| CheckHealth | string | Performs a health check on the device. The type of check to be performed is indicated by the HealthCheckLevel parameter. The method also updates the CheckHealthText property. | +| Claim | void | Requests exclusive access to the device. Service Object writers are advised to only throw exceptions in unexpected conditions; for example, OutOfMemory. Otherwise, Service Objects should return True if the device was claimed and False if a time-out occurred. | +| Close | void | Releases the device and its resources. | +| CompareFirmwareVersion | CompareFirmwareResult | Determines whether the version of the specified firmware is newer than, older than, or the same as the version of firmware in the physical device. | +| DirectIO | DirectIOData | Used to communicate directly with the Service Object. In the UnifiedPOS specification, it has two in/out parameters. As used by POS for .NET, this method returns a structure and no in/out parameters. | +| Open | void | Opens a device for subsequent input/output processing. | +| Release | void | Releases exclusive access to the device. | +| ResetStatistic | void | Resets the specified statistic to zero. Used in POS for .NET for operations on a single statistic. | +| ResetStatistics | void | Resets all statistics for a specified category to 0 (zero). | +| ResetStatistics | void | Resets the specified statistics to 0 (zero). | +| ResetStatistics | void | Resets all statistics associated with a device to 0 (zero). | +| RetrieveStatistic | string | Retrieves the specified device statistic. Used in POS for .NET for operations on a single statistic. | +| RetrieveStatistics | string | Retrieves all device statistics. | +| RetrieveStatistics | void | Retrieves the statistics for the specified category. | +| RetrieveStatistics | void | Retrieves the specified statistics. | +| UpdateFirmware | void | Updates the firmware of a device with the version of the firmware contained in the specified filename. | +| UpdateStatistic | void | Updates a statistic. Added to POS for .NET for operations on a single statistic. | +| UpdateStatistics | void | Updates a list of statistics with the corresponding specified values. | +| UpdateStatistics | void | Updates the specified category of statistics with the specified value. | ## PosCommon Events diff --git a/docs/framework/additional-apis/pos-for-net/supported-device-classes.md b/docs/framework/additional-apis/pos-for-net/supported-device-classes.md index eee0986cfff49..e07f39b94dce5 100644 --- a/docs/framework/additional-apis/pos-for-net/supported-device-classes.md +++ b/docs/framework/additional-apis/pos-for-net/supported-device-classes.md @@ -30,42 +30,42 @@ The following table lists the UnifiedPOS devices with their equivalent POS for . | UnifiedPOS Device | Interface Class | Basic Class | Base Class | |-------------------------------------------|--------------------|-------------------------|------------------| -| Belt | Belt | BeltBasic | -| Biometrics | Biometrics | BiometricsBasic | -| Bill Acceptor | BillAcceptor | BillAcceptorBasic | -| Bill Dispenser | BillDispenser | BillDispenserBasic | -| Bump Bar | BumpBar | BumpBarBasic | -| Cash Changer | CashChanger | CashChangerBasic | +| Belt | Belt | BeltBasic | | +| Biometrics | Biometrics | BiometricsBasic | | +| Bill Acceptor | BillAcceptor | BillAcceptorBasic | | +| Bill Dispenser | BillDispenser | BillDispenserBasic | | +| Bump Bar | BumpBar | BumpBarBasic | | +| Cash Changer | CashChanger | CashChangerBasic | | | Cash Drawer | CashDrawer | CashDrawerBasic | CashDrawerBase | -| CAT - Credit Authorization Terminal | Cat | CatBasic | +| CAT - Credit Authorization Terminal | Cat | CatBasic | | | Check Scanner | CheckScanner | CheckScannerBasic | CheckScannerBase | -| Coin Acceptor | CoinAcceptor | CoinAcceptorBasic | -| Coin Dispenser | CoinDispenser | CoinDispenserBasic | -| Electronic Journal | ElectronicJournal | ElectronicJournalBasic | -| Electronic Value Reader / Writer | ElectronicValueRW | ElectronicValueRWBasic | -| Fiscal Printer | FiscalPrinter | FiscalPrinterBasic | -| Gate | Gate | GateBasic | -| Hard Totals | HardTotals | HardTotalsBasic | -| Image Scanner | ImageScanner | ImageScannerBasic | -| Item Dispenser | ItemDispenser | ItemDispenserBasic | -| Keylock | Keylock | KeylockBasic | -| Lights | Lights | LightsBasic | +| Coin Acceptor | CoinAcceptor | CoinAcceptorBasic | | +| Coin Dispenser | CoinDispenser | CoinDispenserBasic | | +| Electronic Journal | ElectronicJournal | ElectronicJournalBasic | | +| Electronic Value Reader / Writer | ElectronicValueRW | ElectronicValueRWBasic | | +| Fiscal Printer | FiscalPrinter | FiscalPrinterBasic | | +| Gate | Gate | GateBasic | | +| Hard Totals | HardTotals | HardTotalsBasic | | +| Image Scanner | ImageScanner | ImageScannerBasic | | +| Item Dispenser | ItemDispenser | ItemDispenserBasic | | +| Keylock | Keylock | KeylockBasic | | +| Lights | Lights | LightsBasic | | | Line Display | LineDisplay | LineDisplayBasic | LineDisplayBase | -| MICR - Magnetic Ink Character Recognition | Micr | MicrBasic | -| Motion Sensor | MotionSensor | MotionSensorBasic | +| MICR - Magnetic Ink Character Recognition | Micr | MicrBasic | | +| Motion Sensor | MotionSensor | MotionSensorBasic | | | MSR - Magnetic Stripe Reader | Msr | MsrBasic | MsrBase | | PIN Pad | PinPad | PinPadBasic | PinPadBase | -| Point Card Reader / Writer | PointCardRW | PointCardRWBasic | +| Point Card Reader / Writer | PointCardRW | PointCardRWBasic | | | POS Keyboard | PosKeyboard | PosKeyboardBasic | PosKeyboardBase | -| POS Power | PosPower | PosPowerBasic | +| POS Power | PosPower | PosPowerBasic | | | POS Printer | PosPrinter | PosPrinterBasic | PosPrinterBase | -| Remote Order Display | RemoteOrderDisplay | RemoteOrderDisplayBasic | +| Remote Order Display | RemoteOrderDisplay | RemoteOrderDisplayBasic | | | RFID Scanner | RFIDScanner | RFIDScannerBasic | RFIDScannerBase | -| Scale | Scale | ScaleBasic | +| Scale | Scale | ScaleBasic | | | Scanner (Bar Code Reader) | Scanner | ScannerBasic | ScannerBase | -| Signature Capture | SignatureCapture | SignatureCaptureBasic | -| Smart Card Reader / Writer | SmartCardRW | SmartCardRWBasic | -| Tone Indicator | ToneIndicator | ToneIndicatorBasic | +| Signature Capture | SignatureCapture | SignatureCaptureBasic | | +| Smart Card Reader / Writer | SmartCardRW | SmartCardRWBasic | | +| Tone Indicator | ToneIndicator | ToneIndicatorBasic | | ## See Also diff --git a/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md b/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md index 5a3853be6ed00..5e33717fac2ff 100644 --- a/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md +++ b/docs/framework/configure-apps/file-schema/runtime/appcontextswitchoverrides-element.md @@ -29,14 +29,14 @@ Defines one or more switches used by the class to provi ### Attributes -|Attribute|Description| -|---------------|-----------------| -|`value`|Required attribute.

Defines one or more switch names and their associated Boolean values.| +| Attribute | Description | +|-----------|---------------------------------------------------------------------------------| +| `value` | Required. Defines one or more switch names and their associated Boolean values. | ### value Attribute -|Value|Description| -|-----------|-----------------| +| Value | Description | +|-------|-------------| |"name=value"|A predefined switch name along with its value (`true` or `false`). Multiple switch name/value pairs are separated by semicolons (";"). For a list of predefined switch names supported by the .NET Framework, see the Remarks section.| ### Child Elements @@ -45,8 +45,8 @@ Defines one or more switches used by the class to provi ### Parent Elements -|Element|Description| -|-------------|-----------------| +| Element | Description | +|---------|-------------| |`configuration`|The root element in every configuration file used by the common language runtime and .NET Framework applications.| |`runtime`|Contains information about runtime initialization options.| @@ -58,8 +58,8 @@ Defines one or more switches used by the class to provi .NET Framework supports the following switches: -|Switch name|Description|Introduced| -|-----------------|-----------------|----------------| +| Switch name | Description | Introduced | +|-------------|-------------|------------| |`Switch.MS.Internal.`
`DoNotApplyLayoutRoundingToMarginsAndBorderThickness`|Controls whether Windows Presentation Foundation uses legacy a algorithm for control layout. For more information, see [Mitigation: WPF Layout](../../../migration-guide/mitigation-wpf-layout.md).|.NET Framework 4.6| |`Switch.MS.Internal.`
`UseSha1AsDefaultHashAlgorithmForDigitalSignatures`|Controls whether the default algorithm used for signing parts of a package by PackageDigitalSignatureManager is SHA1 or SHA256.
Due to collision problems with SHA1, Microsoft recommends SHA256.|.NET Framework 4.7.1| |`Switch.System.Activities.`
`UseMD5CryptoServiceProviderForWFDebugger`|When set to `false`, allows debugging of XAML-based workflow projects with Visual Studio when FIPS is enabled. Without it, a is thrown in calls to methods in the System.Activities assembly.|.NET Framework 4.7| @@ -81,7 +81,7 @@ Defines one or more switches used by the class to provi |`Switch.System.IO.Ports.`
`DoNotCatchSerialStreamThreadExceptions`|Controls whether operating system exceptions that are thrown on background threads created with streams terminate the process.|.NET Framework 4.7.1| |`Switch.System.IO.`
`UseLegacyPathHandling`|Controls whether legacy path normalization is used and URI paths are supported by the and methods. For more information, see [Mitigation: Path Normalization](../../../migration-guide/mitigation-path-normalization.md) and [Mitigation: Path Colon Checks](../../../migration-guide/mitigation-path-colon-checks.md).|.NET Framework 4.6.2| |`Switch.System.`
`MemberDescriptorEqualsReturnsFalseIfEquivalent`|Controls whether a test for equality compares the property of one object with the property of the second object. For more information, see [Incorrect implementation of MemberDescriptor.Equals](../../../migration-guide/retargeting/4.6.x.md#incorrect-implementation-of-memberdescriptorequals).|.NET Framework 4.6.2| - `Switch.System.Net.`
`DontCheckCertificateEKUs`|Disables certificate enhanced key usage (EKU) object identifier (OID) validation. An enhanced key usage (EKU) extension is a collection of object identifiers (OIDs) that indicate the applications that use the key.|.NET Framework 4.6| +| `Switch.System.Net.`
`DontCheckCertificateEKUs`|Disables certificate enhanced key usage (EKU) object identifier (OID) validation. An enhanced key usage (EKU) extension is a collection of object identifiers (OIDs) that indicate the applications that use the key.|.NET Framework 4.6| |`Switch.System.Net.`
`DontEnableSchSendAuxRecord`|Disables TLS1.0 Browser Exploit Against SSL/TLS (BEAST) mitigation by disabling the use of SCH_SEND_AUX_RECORD.|.NET Framework 4.6| |`Switch.System.Net.`
`DontEnableSchUseStrongCrypto`|Controls whether the and classes can use the SSL 3.0 protocol. For more information, see [Mitigation: TLS Protocols](../../../migration-guide/mitigation-tls-protocols.md).|.NET Framework 4.6| |`Switch.System.Net.`
`DontEnableSystemDefaultTlsVersions`|Disables SystemDefault TLS versions reverting back to a default of Tls12, Tls11, Tls.|.NET Framework 4.7| diff --git a/docs/framework/data/adonet/ef/language-reference/supported-and-unsupported-linq-methods-linq-to-entities.md b/docs/framework/data/adonet/ef/language-reference/supported-and-unsupported-linq-methods-linq-to-entities.md index eabcd01f94c2a..e920909752a5a 100644 --- a/docs/framework/data/adonet/ef/language-reference/supported-and-unsupported-linq-methods-linq-to-entities.md +++ b/docs/framework/data/adonet/ef/language-reference/supported-and-unsupported-linq-methods-linq-to-entities.md @@ -4,184 +4,184 @@ description: This article summarizes the standard query operators that are suppo ms.date: "03/30/2017" ms.assetid: 7f3ffa5f-f819-4730-bcdb-09b23de3b6d0 --- -# Supported and Unsupported LINQ Methods (LINQ to Entities) - -This section provides information about the Language-Integrated Query (LINQ) standard query operators that are supported or unsupported in LINQ to Entities queries. Many of the LINQ standard query operators have an overloaded version that accepts an integer argument. The integer argument corresponds to a zero-based index in the sequence that is being operated on, an , or . Unless otherwise specified, these overloaded versions of the LINQ standard query operators are not supported, and attempting to use them will throw an exception. - -## Projection and Restriction Methods - - Most of the LINQ projection and restriction methods are supported in LINQ to Entities queries, with the exception of those that accept a positional argument. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported projection and restriction methods. - -|Method|Support|Visual Basic function signature|C# method signature| -|------------|-------------|-------------------------------------|--------------------------| -||Supported|`Function Select(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable Select( this IQueryable source, Expression> selector )`| -||Not supported|`Function Select(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Integer, TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable Select( this IQueryable source, Expression> selector )`| -||Supported|`Function SelectMany(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, IEnumerable(Of TResult))) _ ) As IQueryable(Of TResult)`|`IQueryable SelectMany( this IQueryable source, Expression>> selector )`| -||Not supported|`Function SelectMany(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Integer, IEnumerable(Of TResult))) _ ) As IQueryable(Of TResult)`|`IQueryable SelectMany( this IQueryable source, Expression>> selector )`| -||Supported|`Function SelectMany(Of TSource, TCollection, TResult) ( _ source As IQueryable(Of TSource), _ collectionSelector As Expression(Of Func(Of TSource, IEnumerable(Of TCollection))), _ resultSelector As Expression(Of Func(Of TSource, TCollection, TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable SelectMany\( this IQueryable source, Expression>> collectionSelector, Expression> resultSelector )`| -||Not supported|`Function SelectMany(Of TSource, TCollection, TResult) ( _ source As IQueryable(Of TSource), _ collectionSelector As Expression(Of Func(Of TSource, Integer, IEnumerable(Of TCollection))), _ resultSelector As Expression(Of Func(Of TSource, TCollection, TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable SelectMany\( this IQueryable source, Expression>> collectionSelector, Expression> resultSelector )`| -||Supported|`Function Where(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable Where( this IQueryable source, Expression> predicate )`| -||Not supported|`Function Where(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable Where( this IQueryable source, Expression> predicate )`| - -## Join Methods - - The LINQ join methods are supported in LINQ to Entities, with the exception of those that accept an `IEqualityComparer` because the comparer cannot be translated to the data source. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported join methods. - -|Method|Support|Visual Basic function signature|C# method signature| -|------------|-------------|-------------------------------------|--------------------------| -||Supported|`Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _ outer As IQueryable(Of TOuter), _ inner As IEnumerable(Of TInner), _ outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _ innerKeySelector As Expression(Of Func(Of TInner, TKey)), _ resultSelector As Expression(Of Func(Of TOuter, IEnumerable(Of TInner), TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable GroupJoin( this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression, TResult>> resultSelector )`| -||Not Supported|`Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _ outer As IQueryable(Of TOuter), _ inner As IEnumerable(Of TInner), _ outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _ innerKeySelector As Expression(Of Func(Of TInner, TKey)), _ resultSelector As Expression(Of Func(Of TOuter, IEnumerable(Of TInner), TResult)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of TResult)`|`IQueryable GroupJoin\( this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression, TResult>> resultSelector, IEqualityComparer comparer )`| -||Supported|`Function Join(Of TOuter, TInner, TKey, TResult) ( _ outer As IQueryable(Of TOuter), _ inner As IEnumerable(Of TInner), _ outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _ innerKeySelector As Expression(Of Func(Of TInner, TKey)), _ resultSelector As Expression(Of Func(Of TOuter, TInner, TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable Join( this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector )`| -||Not Supported|`Function Join(Of TOuter, TInner, TKey, TResult) ( _ outer As IQueryable(Of TOuter), _ inner As IEnumerable(Of TInner), _ outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _ innerKeySelector As Expression(Of Func(Of TInner, TKey)), _ resultSelector As Expression(Of Func(Of TOuter, TInner, TResult)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of TResult)`|`IQueryable Join\( this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector, IEqualityComparer comparer )`| - -## Set Methods - - Most of the LINQ set methods are supported in LINQ to Entities queries, with the exception of those that use an . For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported set methods. - -|Method|Support|Visual Basic function signature|C# method signature| -|------------|-------------|-------------------------------------|--------------------------| -||Supported|`Function All(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As Boolean`|`bool All( this IQueryable source, Expression> predicate )`| -||Supported|`Function Any(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As Boolean`|`bool Any( this IQueryable source )`| -||Supported|`Function Any(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As Boolean`|`bool Any( this IQueryable source, Expression> predicate )`| -||Supported|`Function Contains(Of TSource) ( _ source As IQueryable(Of TSource), _ item As TSource _ ) As Boolean`|`bool Contains( this IQueryable source, TSource item )`| -||Not supported|`Function Contains(Of TSource) ( _ source As IQueryable(Of TSource), _ item As TSource, _ comparer As IEqualityComparer(Of TSource) _ ) As Boolean`|`bool Contains( this IQueryable source, TSource item, IEqualityComparer comparer )`| -||Supported, but there is no

guarantee of order being preserved|`Function Concat(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Concat( this IQueryable source1, IEnumerable source2 )`| -||Supported|`Function DefaultIfEmpty(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable DefaultIfEmpty( this IQueryable source )`| -||Supported|`Function DefaultIfEmpty(Of TSource) ( _ source As IQueryable(Of TSource), _ defaultValue As TSource _ ) As IQueryable(Of TSource)`|`IQueryable DefaultIfEmpty( this IQueryable source, TSource defaultValue )`| -||Supported|`Function Distinct(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Distinct( this IQueryable source )`| -||Not supported|`Function Distinct(Of TSource) ( _ source As IQueryable(Of TSource), _ comparer As IEqualityComparer(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Distinct( this IQueryable source, IEqualityComparer comparer )`| -||Supported|`Function Except(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Except( this IQueryable source1, IEnumerable source2 )`| -||Not supported|`Function Except(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource), _ comparer As IEqualityComparer(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Except( this IQueryable source1, IEnumerable source2, IEqualityComparer comparer )`| -||Supported|`Function Intersect(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Intersect( this IQueryable source1, IEnumerable source2 )`| -||Not supported|`Function Intersect(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource), _ comparer As IEqualityComparer(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Intersect( this IQueryable source1, IEnumerable source2, IEqualityComparer comparer )`| -||Supported|`Function Union(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Union( this IQueryable source1, IEnumerable source2 )`| -||Not supported|`Function Union(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource), _ comparer As IEqualityComparer(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Union( this IQueryable source1, IEnumerable source2, IEqualityComparer comparer )`| - -## Ordering Methods - - Most of the LINQ ordering methods are supported in LINQ to Entities, with the exception of those that accept an , because the comparer cannot be translated to the data source. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported ordering methods. - -|Method|Support|Visual Basic function signature|C# method signature| -|------------|-------------|-------------------------------------|--------------------------| -||Supported|`Function OrderBy(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable OrderBy( this IQueryable source, Expression> keySelector )`| -||Not supported|`Function OrderBy(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ comparer As IComparer(Of TKey) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable OrderBy\( this IQueryable source, Expression> keySelector, IComparer comparer )`| -||Supported|`Function OrderByDescending(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable OrderByDescending( this IQueryable source, Expression> keySelector )`| -||Not supported|`Function OrderByDescending(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ comparer As IComparer(Of TKey) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable OrderByDescending\( this IQueryable source, Expression> keySelector, IComparer comparer )`| -||Supported|`Function ThenBy(Of TSource, TKey) ( _ source As IOrderedQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable ThenBy( this IOrderedQueryable source, Expression> keySelector )`| -||Not supported|`Function ThenBy(Of TSource, TKey) ( _ source As IOrderedQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ comparer As IComparer(Of TKey) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable ThenBy\( this IOrderedQueryable source, Expression> keySelector, IComparer comparer )`| -||Supported|`Function ThenByDescending(Of TSource, TKey) ( _ source As IOrderedQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable ThenByDescending( this IOrderedQueryable source, Expression> keySelector )`| -||Not supported|`Function ThenByDescending(Of TSource, TKey) ( _ source As IOrderedQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ comparer As IComparer(Of TKey) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable ThenByDescending\( this IOrderedQueryable source, Expression> keySelector, IComparer comparer )`| -||Not supported|`Function Reverse(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Reverse( this IQueryable source )`| - -## Grouping Methods - - Most of the LINQ grouping methods are supported in LINQ to Entities, with the exception of those that accept an , because the comparer cannot be translated to the data source. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported grouping methods. - -|Method|Support|Visual Basic function signature|C# method signature| -|------------|-------------|-------------------------------------|--------------------------| -||Supported|`Function GroupBy(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)) _ ) As IQueryable(Of IGrouping(Of TKey, TSource))`|`IQueryable> GroupBy( this IQueryable source, Expression> keySelector )`| -||Not supported|`Function GroupBy(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of IGrouping(Of TKey, TSource))`|`IQueryable> GroupBy\( this IQueryable source, Expression> keySelector, IEqualityComparer comparer )`| -||Supported|`Function GroupBy(Of TSource, TKey, TElement) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ elementSelector As Expression(Of Func(Of TSource, TElement)) _ ) As IQueryable(Of IGrouping(Of TKey, TElement))`|`IQueryable> GroupBy( this IQueryable source, Expression> keySelector, Expression> elementSelector )`| -||Supported|`Function GroupBy(Of TSource, TKey, TResult) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable GroupBy\( this IQueryable source, Expression> keySelector, Expression, TResult>> resultSelector )`| -||Not supported|`Function GroupBy(Of TSource, TKey, TElement) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ elementSelector As Expression(Of Func(Of TSource, TElement)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of IGrouping(Of TKey, TElement))`|`IQueryable> GroupBy\( this IQueryable source, Expression> keySelector, Expression> elementSelector, IEqualityComparer comparer`| -||Supported|`Function GroupBy(Of TSource, TKey, TElement, TResult) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ elementSelector As Expression(Of Func(Of TSource, TElement)), _ resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable GroupBy( this IQueryable source, Expression> keySelector, Expression> elementSelector, Expression, TResult>> resultSelector )`| -||Not supported|`Function GroupBy(Of TSource, TKey, TResult) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of TResult)`|`IQueryable GroupBy\( this IQueryable source, Expression> keySelector, Expression, TResult>> resultSelector, IEqualityComparer comparer )`| -||Not supported|`Function GroupBy(Of TSource, TKey, TElement, TResult) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ elementSelector As Expression(Of Func(Of TSource, TElement)), _ resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of TResult)`|`IQueryable GroupBy( this IQueryable source, Expression> keySelector, Expression> elementSelector, Expression, TResult>> resultSelector, IEqualityComparer comparer )`| - -## Aggregate Methods - - Most of the aggregate methods that accept primitive data types are supported in LINQ to Entities. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported aggregate methods. - -|Method|Support|Visual Basic function signature|C# method signature| -|------------|-------------|-------------------------------------|--------------------------| -||Not supported|`Function Aggregate(Of TSource) ( _ source As IQueryable(Of TSource), _ func As Expression(Of Func(Of TSource, TSource, TSource)) _ ) As TSource`|`TSource Aggregate( this IQueryable source, Expression> func )`| -||Not supported|`Function Aggregate(Of TSource, TAccumulate) ( _ source As IQueryable(Of TSource), _ seed As TAccumulate, _ func As Expression(Of Func(Of TAccumulate, TSource, TAccumulate)) _ ) As TAccumulate`|`TAccumulate Aggregate( this IQueryable source, TAccumulate seed, Expression> func )`| -||Not supported|`Function Aggregate(Of TSource, TAccumulate, TResult) ( _ source As IQueryable(Of TSource), _ seed As TAccumulate, _ func As Expression(Of Func(Of TAccumulate, TSource, TAccumulate)), _ selector As Expression(Of Func(Of TAccumulate, TResult)) _ ) As TResult`|`TResult Aggregate( this IQueryable source, TAccumulate seed, Expression> func, Expression> selector )`| -||Supported|`Function Average ( _ source As IQueryable(Of Decimal) _ ) As Decimal`|`decimal Average( this IQueryable source )`| -||Supported|`Function Average ( _ source As IQueryable(Of Double) _ ) As Double`|`double Average( this IQueryable source )`| -||Supported|`Function Average ( _ source As IQueryable(Of Integer) _ ) As Double`|`double Average( this IQueryable source )`| -||Supported|`Function Average ( _ source As IQueryable(Of Long) _ ) As Double`|`double Average( this IQueryable source )`| -||Supported|`Function Average ( _ source As IQueryable(Of Nullable(Of Decimal)) _ ) As Nullable(Of Decimal)`|`Nullable Average( this IQueryable> source )`| -||Supported|`Function Average ( _ source As IQueryable(Of Nullable(Of Double)) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable> source )`| -||Supported|`Function Average ( _ source As IQueryable(Of Nullable(Of Integer)) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable> source )`| -||Supported|`Function Average ( _ source As IQueryable(Of Nullable(Of Long)) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable> source )`| -||Supported|`Function Average ( _ source As IQueryable(Of Nullable(Of Single)) _ ) As Nullable(Of Single)`|`Nullable Average( this IQueryable> source )`| -||Supported|`Function Average ( _ source As IQueryable(Of Single) _ ) As Single`|`float Average( this IQueryable source )`| -||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Integer)) _ ) As Double`|`double Average( this IQueryable source, Expression> selector )`| -||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Integer))) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable source, Expression>> selector )`| -||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Long)) _ ) As Double`|`double Average( this IQueryable source, Expression> selector )`| -||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Long))) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable source, Expression>> selector )`| -||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Single)) _ ) As Single`|`float Average( this IQueryable source, Expression> selector )`| -||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Single))) _ ) As Nullable(Of Single)`|`Nullable Average( this IQueryable source, Expression>> selector )`| -||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Double)) _ ) As Double`|`double Average( this IQueryable source, Expression> selector )`| -||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Double))) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable source, Expression>> selector )`| -||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Decimal)) _ ) As Decimal`|`decimal Average( this IQueryable source, Expression> selector )`| -||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Decimal))) _ ) As Nullable(Of Decimal)`|`Nullable Average( this IQueryable source, Expression>> selector )`| -||Supported|`Function Count(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As Integer`|`int Count( this IQueryable source )`| -||Not supported|`Function Count(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As Integer`|`int Count( this IQueryable source, Expression> predicate )`| -||Supported|`Function LongCount(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As Long`|`long LongCount( this IQueryable source )`| -||Not supported|`Function LongCount(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As Long`|`long LongCount( this IQueryable source, Expression> predicate )`| -||Supported|`Function Max(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource Max( this IQueryable source )`| -||Not supported|`Function Max(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, TResult)) _ ) As TResult`|`TResult Max( this IQueryable source, Expression> selector )`| -||Supported|`Function Min(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource Min( this IQueryable source )`| -||Not supported|`Function Min(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, TResult)) _ ) As TResult`|`TResult Min( this IQueryable source, Expression> selector )`| -||Supported|`Function Sum ( _ source As IQueryable(Of Decimal) _ ) As Decimal`|`decimal Sum( this IQueryable source )`| -||Supported|`Function Sum ( _ source As IQueryable(Of Double) _ ) As Double`|`double Sum( this IQueryable source`| -||Supported|`Function Sum ( _ source As IQueryable(Of Integer) _ ) As Integer`|`int Sum( this IQueryable source )`| -||Supported|`Function Sum ( _ source As IQueryable(Of Long) _ ) As Long`|`long Sum( this IQueryable source )`| -||Supported|`Function Sum ( _ source As IQueryable(Of Nullable(Of Decimal)) _ ) As Nullable(Of Decimal)`|`Nullable Sum( this IQueryable> source )`| -||Supported|`Function Sum ( _ source As IQueryable(Of Nullable(Of Double)) _ ) As Nullable(Of Double)`|`Function Sum ( _ source As IQueryable(Of Nullable(Of Double)) _ ) As Nullable(Of Double)Nullable Sum( this IQueryable> source )`| -||Supported|`Function Sum ( _ source As IQueryable(Of Nullable(Of Integer)) _ ) As Nullable(Of Integer)`|`Nullable Sum( this IQueryable> source )`| -||Supported|`Function Sum ( _ source As IQueryable(Of Nullable(Of Long)) _ ) As Nullable(Of Long)`|`Nullable Sum( this IQueryable> source )`| -||Supported|`Function Sum ( _ source As IQueryable(Of Nullable(Of Single)) _ ) As Nullable(Of Single)`|`Nullable Sum( this IQueryable> source )`| -||Supported|`Function Sum ( _ source As IQueryable(Of Single) _ ) As Single`|`float Sum( this IQueryable source )`| -||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Integer)) _ ) As Integer`|`int Sum( this IQueryable source, Expression> selector )`| -|Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Integer))) _ ) As Nullable(Of Integer)`|`Nullable Sum( this IQueryable source, Expression>> selector )`| -||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Long)) _ ) As Long`|`long Sum( this IQueryable source, Expression> selector )`| -||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Long))) _ ) As Nullable(Of Long)`|`Nullable Sum( this IQueryable source, Expression>> selector )`| -||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Single))) _ ) As Nullable(Of Single)`|`Nullable Sum( this IQueryable source, Expression>> selector )`| -||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Single)) _ ) As Single`|`float Sum( this IQueryable source, Expression> selector )`| -||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Double)) _ ) As Double`|`double Sum( this IQueryable source, Expression> selector )`| -||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Double))) _ ) As Nullable(Of Double)`|`Nullable Sum( this IQueryable source, Expression>> selector )`| -||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Decimal)) _ ) As Decimal`|`decimal Sum( this IQueryable source, Expression> selector )`| -||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Decimal))) _ ) As Nullable(Of Decimal)`|`Nullable Sum( this IQueryable source, Expression>> selector )`| - -## Type Methods - - The LINQ standard query operators that deal with CLR type conversion and testing are supported in the Entity Framework. Only CLR types that map to conceptual model types are supported in LINQ to Entities. For a list of conceptual model types, see [Conceptual Model Types (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#conceptual-model-types-csdl). The following table lists the supported and unsupported type methods. - -|Method|Support|Visual Basic function signature|C# method signature| -|------------|-------------|-------------------------------------|--------------------------| -||Supported for EDM primitive types|`Function Cast(Of TResult) ( _ source As IQueryable _ ) As IQueryable(Of TResult)`|`IQueryable Cast( this IQueryable source )`| -||Supported for |`Function OfType(Of TResult) ( _ source As IQueryable _ ) As IQueryable(Of TResult)`|`IQueryable OfType( this IQueryable source )`| - -## Paging Methods - - A number of the LINQ paging methods are not supported in LINQ to Entities queries. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported paging methods. - -|Method|Support|Visual Basic function signature|C# method signature| -|------------|-------------|-------------------------------------|--------------------------| -||Not supported|`Function ElementAt(Of TSource) ( _ source As IQueryable(Of TSource), _ index As Integer _ ) As TSource`|`TSource ElementAt( this IQueryable source, int index )`| -||Not supported|`Function ElementAtOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ index As Integer _ ) As TSource`|`TSource ElementAtOrDefault( this IQueryable source, int index )`| -||Supported|`Function First(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource First( this IQueryable source )`| -||Supported|`Function First(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource First( this IQueryable source, Expression> predicate )`| -||Supported|`Function FirstOrDefault(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource FirstOrDefault( this IQueryable source )`| -||Supported|`Function FirstOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource FirstOrDefault( this IQueryable source, Expression> predicate )`| -||Not supported|`Function Last(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource Last( this IQueryable source )`| -||Not supported|`Function Last(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource Last( this IQueryable source, Expression> predicate )`| -||Not supported|`Function LastOrDefault(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource LastOrDefault( this IQueryable source )`| -||Not supported|`Function LastOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource LastOrDefault( this IQueryable source, Expression> predicate )`| -||Supported|`Function Single(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource Single( this IQueryable source )`| -||Supported|`Function Single(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource Single( this IQueryable source, Expression> predicate )`| -||Supported|`Function SingleOrDefault(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource SingleOrDefault( this IQueryable source )`| -||Supported|`Function SingleOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource SingleOrDefault( this IQueryable source, Expression> predicate )`| -||Supported|`Function Skip(Of TSource) ( _ source As IQueryable(Of TSource), _ count As Integer _ ) As IQueryable(Of TSource)`|`IQueryable Skip( this IQueryable source, int count )`| -||Not supported|`Function SkipWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable SkipWhile( this IQueryable source, Expression> predicate )`| -||Not supported|`Function SkipWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable SkipWhile( this IQueryable source, Expression> predicate )`| -||Supported|`Function Take(Of TSource) ( _ source As IQueryable(Of TSource), _ count As Integer _ ) As IQueryable(Of TSource)`|`IQueryable Take( this IQueryable source, int count )`| -||Not supported|`Function TakeWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable TakeWhile( this IQueryable source, Expression> predicate )`| -||Not supported|`Function TakeWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable TakeWhile( this IQueryable source, Expression> predicate )`| - +# Supported and unsupported LINQ methods (LINQ to Entities) + +This section provides information about the Language-Integrated Query (LINQ) standard query operators that are supported or unsupported in LINQ to Entities queries. Many of the LINQ standard query operators have an overloaded version that accepts an integer argument. The integer argument corresponds to a zero-based index in the sequence that is being operated on, an , or . Unless otherwise specified, these overloaded versions of the LINQ standard query operators are not supported, and attempting to use them will throw an exception. + +## Projection and restriction methods + + Most of the LINQ projection and restriction methods are supported in LINQ to Entities queries, with the exception of those that accept a positional argument. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported projection and restriction methods. + +| Method | Support | Visual Basic function signature | C# method signature | +|--------|---------|---------------------------------|---------------------| +||Supported|`Function Select(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable Select( this IQueryable source, Expression> selector )`| +||Not supported|`Function Select(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Integer, TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable Select( this IQueryable source, Expression> selector )`| +||Supported|`Function SelectMany(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, IEnumerable(Of TResult))) _ ) As IQueryable(Of TResult)`|`IQueryable SelectMany( this IQueryable source, Expression>> selector )`| +||Not supported|`Function SelectMany(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Integer, IEnumerable(Of TResult))) _ ) As IQueryable(Of TResult)`|`IQueryable SelectMany( this IQueryable source, Expression>> selector )`| +||Supported|`Function SelectMany(Of TSource, TCollection, TResult) ( _ source As IQueryable(Of TSource), _ collectionSelector As Expression(Of Func(Of TSource, IEnumerable(Of TCollection))), _ resultSelector As Expression(Of Func(Of TSource, TCollection, TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable SelectMany\( this IQueryable source, Expression>> collectionSelector, Expression> resultSelector )`| +||Not supported|`Function SelectMany(Of TSource, TCollection, TResult) ( _ source As IQueryable(Of TSource), _ collectionSelector As Expression(Of Func(Of TSource, Integer, IEnumerable(Of TCollection))), _ resultSelector As Expression(Of Func(Of TSource, TCollection, TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable SelectMany\( this IQueryable source, Expression>> collectionSelector, Expression> resultSelector )`| +||Supported|`Function Where(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable Where( this IQueryable source, Expression> predicate )`| +||Not supported|`Function Where(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable Where( this IQueryable source, Expression> predicate )`| + +## Join Methods + + The LINQ join methods are supported in LINQ to Entities, with the exception of those that accept an `IEqualityComparer` because the comparer cannot be translated to the data source. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported join methods. + +| Method | Support | Visual Basic function signature | C# method signature | +|--------|---------|---------------------------------|---------------------| +||Supported|`Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _ outer As IQueryable(Of TOuter), _ inner As IEnumerable(Of TInner), _ outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _ innerKeySelector As Expression(Of Func(Of TInner, TKey)), _ resultSelector As Expression(Of Func(Of TOuter, IEnumerable(Of TInner), TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable GroupJoin( this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression, TResult>> resultSelector )`| +||Not Supported|`Function GroupJoin(Of TOuter, TInner, TKey, TResult) ( _ outer As IQueryable(Of TOuter), _ inner As IEnumerable(Of TInner), _ outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _ innerKeySelector As Expression(Of Func(Of TInner, TKey)), _ resultSelector As Expression(Of Func(Of TOuter, IEnumerable(Of TInner), TResult)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of TResult)`|`IQueryable GroupJoin\( this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression, TResult>> resultSelector, IEqualityComparer comparer )`| +||Supported|`Function Join(Of TOuter, TInner, TKey, TResult) ( _ outer As IQueryable(Of TOuter), _ inner As IEnumerable(Of TInner), _ outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _ innerKeySelector As Expression(Of Func(Of TInner, TKey)), _ resultSelector As Expression(Of Func(Of TOuter, TInner, TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable Join( this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector )`| +||Not Supported|`Function Join(Of TOuter, TInner, TKey, TResult) ( _ outer As IQueryable(Of TOuter), _ inner As IEnumerable(Of TInner), _ outerKeySelector As Expression(Of Func(Of TOuter, TKey)), _ innerKeySelector As Expression(Of Func(Of TInner, TKey)), _ resultSelector As Expression(Of Func(Of TOuter, TInner, TResult)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of TResult)`|`IQueryable Join\( this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector, IEqualityComparer comparer )`| + +## Set Methods + + Most of the LINQ set methods are supported in LINQ to Entities queries, with the exception of those that use an . For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported set methods. + +| Method | Support | Visual Basic function signature | C# method signature | +|--------|---------|---------------------------------|---------------------| +||Supported|`Function All(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As Boolean`|`bool All( this IQueryable source, Expression> predicate )`| +||Supported|`Function Any(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As Boolean`|`bool Any( this IQueryable source )`| +||Supported|`Function Any(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As Boolean`|`bool Any( this IQueryable source, Expression> predicate )`| +||Supported|`Function Contains(Of TSource) ( _ source As IQueryable(Of TSource), _ item As TSource _ ) As Boolean`|`bool Contains( this IQueryable source, TSource item )`| +||Not supported|`Function Contains(Of TSource) ( _ source As IQueryable(Of TSource), _ item As TSource, _ comparer As IEqualityComparer(Of TSource) _ ) As Boolean`|`bool Contains( this IQueryable source, TSource item, IEqualityComparer comparer )`| +||Supported, but there is no

guarantee of order being preserved|`Function Concat(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Concat( this IQueryable source1, IEnumerable source2 )`| +||Supported|`Function DefaultIfEmpty(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable DefaultIfEmpty( this IQueryable source )`| +||Supported|`Function DefaultIfEmpty(Of TSource) ( _ source As IQueryable(Of TSource), _ defaultValue As TSource _ ) As IQueryable(Of TSource)`|`IQueryable DefaultIfEmpty( this IQueryable source, TSource defaultValue )`| +||Supported|`Function Distinct(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Distinct( this IQueryable source )`| +||Not supported|`Function Distinct(Of TSource) ( _ source As IQueryable(Of TSource), _ comparer As IEqualityComparer(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Distinct( this IQueryable source, IEqualityComparer comparer )`| +||Supported|`Function Except(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Except( this IQueryable source1, IEnumerable source2 )`| +||Not supported|`Function Except(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource), _ comparer As IEqualityComparer(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Except( this IQueryable source1, IEnumerable source2, IEqualityComparer comparer )`| +||Supported|`Function Intersect(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Intersect( this IQueryable source1, IEnumerable source2 )`| +||Not supported|`Function Intersect(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource), _ comparer As IEqualityComparer(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Intersect( this IQueryable source1, IEnumerable source2, IEqualityComparer comparer )`| +||Supported|`Function Union(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Union( this IQueryable source1, IEnumerable source2 )`| +||Not supported|`Function Union(Of TSource) ( _ source1 As IQueryable(Of TSource), _ source2 As IEnumerable(Of TSource), _ comparer As IEqualityComparer(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Union( this IQueryable source1, IEnumerable source2, IEqualityComparer comparer )`| + +## Ordering Methods + + Most of the LINQ ordering methods are supported in LINQ to Entities, with the exception of those that accept an , because the comparer cannot be translated to the data source. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported ordering methods. + +| Method | Support | Visual Basic function signature | C# method signature | +|--------|---------|---------------------------------|---------------------| +||Supported|`Function OrderBy(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable OrderBy( this IQueryable source, Expression> keySelector )`| +||Not supported|`Function OrderBy(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ comparer As IComparer(Of TKey) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable OrderBy\( this IQueryable source, Expression> keySelector, IComparer comparer )`| +||Supported|`Function OrderByDescending(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable OrderByDescending( this IQueryable source, Expression> keySelector )`| +||Not supported|`Function OrderByDescending(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ comparer As IComparer(Of TKey) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable OrderByDescending\( this IQueryable source, Expression> keySelector, IComparer comparer )`| +||Supported|`Function ThenBy(Of TSource, TKey) ( _ source As IOrderedQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable ThenBy( this IOrderedQueryable source, Expression> keySelector )`| +||Not supported|`Function ThenBy(Of TSource, TKey) ( _ source As IOrderedQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ comparer As IComparer(Of TKey) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable ThenBy\( this IOrderedQueryable source, Expression> keySelector, IComparer comparer )`| +||Supported|`Function ThenByDescending(Of TSource, TKey) ( _ source As IOrderedQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable ThenByDescending( this IOrderedQueryable source, Expression> keySelector )`| +||Not supported|`Function ThenByDescending(Of TSource, TKey) ( _ source As IOrderedQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ comparer As IComparer(Of TKey) _ ) As IOrderedQueryable(Of TSource)`|`IOrderedQueryable ThenByDescending\( this IOrderedQueryable source, Expression> keySelector, IComparer comparer )`| +||Not supported|`Function Reverse(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As IQueryable(Of TSource)`|`IQueryable Reverse( this IQueryable source )`| + +## Grouping Methods + + Most of the LINQ grouping methods are supported in LINQ to Entities, with the exception of those that accept an , because the comparer cannot be translated to the data source. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported grouping methods. + +| Method | Support | Visual Basic function signature | C# method signature | +|--------|---------|---------------------------------|---------------------| +||Supported|`Function GroupBy(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)) _ ) As IQueryable(Of IGrouping(Of TKey, TSource))`|`IQueryable> GroupBy( this IQueryable source, Expression> keySelector )`| +||Not supported|`Function GroupBy(Of TSource, TKey) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of IGrouping(Of TKey, TSource))`|`IQueryable> GroupBy\( this IQueryable source, Expression> keySelector, IEqualityComparer comparer )`| +||Supported|`Function GroupBy(Of TSource, TKey, TElement) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ elementSelector As Expression(Of Func(Of TSource, TElement)) _ ) As IQueryable(Of IGrouping(Of TKey, TElement))`|`IQueryable> GroupBy( this IQueryable source, Expression> keySelector, Expression> elementSelector )`| +||Supported|`Function GroupBy(Of TSource, TKey, TResult) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable GroupBy\( this IQueryable source, Expression> keySelector, Expression, TResult>> resultSelector )`| +||Not supported|`Function GroupBy(Of TSource, TKey, TElement) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ elementSelector As Expression(Of Func(Of TSource, TElement)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of IGrouping(Of TKey, TElement))`|`IQueryable> GroupBy\( this IQueryable source, Expression> keySelector, Expression> elementSelector, IEqualityComparer comparer`| +||Supported|`Function GroupBy(Of TSource, TKey, TElement, TResult) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ elementSelector As Expression(Of Func(Of TSource, TElement)), _ resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult)) _ ) As IQueryable(Of TResult)`|`IQueryable GroupBy( this IQueryable source, Expression> keySelector, Expression> elementSelector, Expression, TResult>> resultSelector )`| +||Not supported|`Function GroupBy(Of TSource, TKey, TResult) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of TResult)`|`IQueryable GroupBy\( this IQueryable source, Expression> keySelector, Expression, TResult>> resultSelector, IEqualityComparer comparer )`| +||Not supported|`Function GroupBy(Of TSource, TKey, TElement, TResult) ( _ source As IQueryable(Of TSource), _ keySelector As Expression(Of Func(Of TSource, TKey)), _ elementSelector As Expression(Of Func(Of TSource, TElement)), _ resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult)), _ comparer As IEqualityComparer(Of TKey) _ ) As IQueryable(Of TResult)`|`IQueryable GroupBy( this IQueryable source, Expression> keySelector, Expression> elementSelector, Expression, TResult>> resultSelector, IEqualityComparer comparer )`| + +## Aggregate Methods + + Most of the aggregate methods that accept primitive data types are supported in LINQ to Entities. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported aggregate methods. + +| Method | Support | Visual Basic function signature | C# method signature | +|--------|---------|---------------------------------|---------------------| +||Not supported|`Function Aggregate(Of TSource) ( _ source As IQueryable(Of TSource), _ func As Expression(Of Func(Of TSource, TSource, TSource)) _ ) As TSource`|`TSource Aggregate( this IQueryable source, Expression> func )`| +||Not supported|`Function Aggregate(Of TSource, TAccumulate) ( _ source As IQueryable(Of TSource), _ seed As TAccumulate, _ func As Expression(Of Func(Of TAccumulate, TSource, TAccumulate)) _ ) As TAccumulate`|`TAccumulate Aggregate( this IQueryable source, TAccumulate seed, Expression> func )`| +||Not supported|`Function Aggregate(Of TSource, TAccumulate, TResult) ( _ source As IQueryable(Of TSource), _ seed As TAccumulate, _ func As Expression(Of Func(Of TAccumulate, TSource, TAccumulate)), _ selector As Expression(Of Func(Of TAccumulate, TResult)) _ ) As TResult`|`TResult Aggregate( this IQueryable source, TAccumulate seed, Expression> func, Expression> selector )`| +||Supported|`Function Average ( _ source As IQueryable(Of Decimal) _ ) As Decimal`|`decimal Average( this IQueryable source )`| +||Supported|`Function Average ( _ source As IQueryable(Of Double) _ ) As Double`|`double Average( this IQueryable source )`| +||Supported|`Function Average ( _ source As IQueryable(Of Integer) _ ) As Double`|`double Average( this IQueryable source )`| +||Supported|`Function Average ( _ source As IQueryable(Of Long) _ ) As Double`|`double Average( this IQueryable source )`| +||Supported|`Function Average ( _ source As IQueryable(Of Nullable(Of Decimal)) _ ) As Nullable(Of Decimal)`|`Nullable Average( this IQueryable> source )`| +||Supported|`Function Average ( _ source As IQueryable(Of Nullable(Of Double)) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable> source )`| +||Supported|`Function Average ( _ source As IQueryable(Of Nullable(Of Integer)) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable> source )`| +||Supported|`Function Average ( _ source As IQueryable(Of Nullable(Of Long)) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable> source )`| +||Supported|`Function Average ( _ source As IQueryable(Of Nullable(Of Single)) _ ) As Nullable(Of Single)`|`Nullable Average( this IQueryable> source )`| +||Supported|`Function Average ( _ source As IQueryable(Of Single) _ ) As Single`|`float Average( this IQueryable source )`| +||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Integer)) _ ) As Double`|`double Average( this IQueryable source, Expression> selector )`| +||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Integer))) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable source, Expression>> selector )`| +||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Long)) _ ) As Double`|`double Average( this IQueryable source, Expression> selector )`| +||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Long))) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable source, Expression>> selector )`| +||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Single)) _ ) As Single`|`float Average( this IQueryable source, Expression> selector )`| +||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Single))) _ ) As Nullable(Of Single)`|`Nullable Average( this IQueryable source, Expression>> selector )`| +||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Double)) _ ) As Double`|`double Average( this IQueryable source, Expression> selector )`| +||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Double))) _ ) As Nullable(Of Double)`|`Nullable Average( this IQueryable source, Expression>> selector )`| +||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Decimal)) _ ) As Decimal`|`decimal Average( this IQueryable source, Expression> selector )`| +||Not supported|`Function Average(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Decimal))) _ ) As Nullable(Of Decimal)`|`Nullable Average( this IQueryable source, Expression>> selector )`| +||Supported|`Function Count(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As Integer`|`int Count( this IQueryable source )`| +||Not supported|`Function Count(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As Integer`|`int Count( this IQueryable source, Expression> predicate )`| +||Supported|`Function LongCount(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As Long`|`long LongCount( this IQueryable source )`| +||Not supported|`Function LongCount(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As Long`|`long LongCount( this IQueryable source, Expression> predicate )`| +||Supported|`Function Max(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource Max( this IQueryable source )`| +||Not supported|`Function Max(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, TResult)) _ ) As TResult`|`TResult Max( this IQueryable source, Expression> selector )`| +||Supported|`Function Min(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource Min( this IQueryable source )`| +||Not supported|`Function Min(Of TSource, TResult) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, TResult)) _ ) As TResult`|`TResult Min( this IQueryable source, Expression> selector )`| +||Supported|`Function Sum ( _ source As IQueryable(Of Decimal) _ ) As Decimal`|`decimal Sum( this IQueryable source )`| +||Supported|`Function Sum ( _ source As IQueryable(Of Double) _ ) As Double`|`double Sum( this IQueryable source`| +||Supported|`Function Sum ( _ source As IQueryable(Of Integer) _ ) As Integer`|`int Sum( this IQueryable source )`| +||Supported|`Function Sum ( _ source As IQueryable(Of Long) _ ) As Long`|`long Sum( this IQueryable source )`| +||Supported|`Function Sum ( _ source As IQueryable(Of Nullable(Of Decimal)) _ ) As Nullable(Of Decimal)`|`Nullable Sum( this IQueryable> source )`| +||Supported|`Function Sum ( _ source As IQueryable(Of Nullable(Of Double)) _ ) As Nullable(Of Double)`|`Function Sum ( _ source As IQueryable(Of Nullable(Of Double)) _ ) As Nullable(Of Double)Nullable Sum( this IQueryable> source )`| +||Supported|`Function Sum ( _ source As IQueryable(Of Nullable(Of Integer)) _ ) As Nullable(Of Integer)`|`Nullable Sum( this IQueryable> source )`| +||Supported|`Function Sum ( _ source As IQueryable(Of Nullable(Of Long)) _ ) As Nullable(Of Long)`|`Nullable Sum( this IQueryable> source )`| +||Supported|`Function Sum ( _ source As IQueryable(Of Nullable(Of Single)) _ ) As Nullable(Of Single)`|`Nullable Sum( this IQueryable> source )`| +||Supported|`Function Sum ( _ source As IQueryable(Of Single) _ ) As Single`|`float Sum( this IQueryable source )`| +||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Integer)) _ ) As Integer`|`int Sum( this IQueryable source, Expression> selector )`| +||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Integer))) _ ) As Nullable(Of Integer)`|`Nullable Sum( this IQueryable source, Expression>> selector )`| +||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Long)) _ ) As Long`|`long Sum( this IQueryable source, Expression> selector )`| +||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Long))) _ ) As Nullable(Of Long)`|`Nullable Sum( this IQueryable source, Expression>> selector )`| +||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Single))) _ ) As Nullable(Of Single)`|`Nullable Sum( this IQueryable source, Expression>> selector )`| +||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Single)) _ ) As Single`|`float Sum( this IQueryable source, Expression> selector )`| +||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Double)) _ ) As Double`|`double Sum( this IQueryable source, Expression> selector )`| +||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Double))) _ ) As Nullable(Of Double)`|`Nullable Sum( this IQueryable source, Expression>> selector )`| +||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Decimal)) _ ) As Decimal`|`decimal Sum( this IQueryable source, Expression> selector )`| +||Not supported|`Function Sum(Of TSource) ( _ source As IQueryable(Of TSource), _ selector As Expression(Of Func(Of TSource, Nullable(Of Decimal))) _ ) As Nullable(Of Decimal)`|`Nullable Sum( this IQueryable source, Expression>> selector )`| + +## Type Methods + + The LINQ standard query operators that deal with CLR type conversion and testing are supported in the Entity Framework. Only CLR types that map to conceptual model types are supported in LINQ to Entities. For a list of conceptual model types, see [Conceptual Model Types (CSDL)](/ef/ef6/modeling/designer/advanced/edmx/csdl-spec#conceptual-model-types-csdl). The following table lists the supported and unsupported type methods. + +| Method | Support | Visual Basic function signature | C# method signature | +|--------|---------|---------------------------------|---------------------| +||Supported for EDM primitive types|`Function Cast(Of TResult) ( _ source As IQueryable _ ) As IQueryable(Of TResult)`|`IQueryable Cast( this IQueryable source )`| +||Supported for |`Function OfType(Of TResult) ( _ source As IQueryable _ ) As IQueryable(Of TResult)`|`IQueryable OfType( this IQueryable source )`| + +## Paging Methods + + A number of the LINQ paging methods are not supported in LINQ to Entities queries. For more information, see [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md). The following table lists the supported and unsupported paging methods. + +| Method | Support | Visual Basic function signature | C# method signature | +|--------|---------|---------------------------------|---------------------| +||Not supported|`Function ElementAt(Of TSource) ( _ source As IQueryable(Of TSource), _ index As Integer _ ) As TSource`|`TSource ElementAt( this IQueryable source, int index )`| +||Not supported|`Function ElementAtOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ index As Integer _ ) As TSource`|`TSource ElementAtOrDefault( this IQueryable source, int index )`| +||Supported|`Function First(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource First( this IQueryable source )`| +||Supported|`Function First(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource First( this IQueryable source, Expression> predicate )`| +||Supported|`Function FirstOrDefault(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource FirstOrDefault( this IQueryable source )`| +||Supported|`Function FirstOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource FirstOrDefault( this IQueryable source, Expression> predicate )`| +||Not supported|`Function Last(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource Last( this IQueryable source )`| +||Not supported|`Function Last(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource Last( this IQueryable source, Expression> predicate )`| +||Not supported|`Function LastOrDefault(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource LastOrDefault( this IQueryable source )`| +||Not supported|`Function LastOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource LastOrDefault( this IQueryable source, Expression> predicate )`| +||Supported|`Function Single(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource Single( this IQueryable source )`| +||Supported|`Function Single(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource Single( this IQueryable source, Expression> predicate )`| +||Supported|`Function SingleOrDefault(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource`|`TSource SingleOrDefault( this IQueryable source )`| +||Supported|`Function SingleOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource`|`TSource SingleOrDefault( this IQueryable source, Expression> predicate )`| +||Supported|`Function Skip(Of TSource) ( _ source As IQueryable(Of TSource), _ count As Integer _ ) As IQueryable(Of TSource)`|`IQueryable Skip( this IQueryable source, int count )`| +||Not supported|`Function SkipWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable SkipWhile( this IQueryable source, Expression> predicate )`| +||Not supported|`Function SkipWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable SkipWhile( this IQueryable source, Expression> predicate )`| +||Supported|`Function Take(Of TSource) ( _ source As IQueryable(Of TSource), _ count As Integer _ ) As IQueryable(Of TSource)`|`IQueryable Take( this IQueryable source, int count )`| +||Not supported|`Function TakeWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable TakeWhile( this IQueryable source, Expression> predicate )`| +||Not supported|`Function TakeWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _ ) As IQueryable(Of TSource)`|`IQueryable TakeWhile( this IQueryable source, Expression> predicate )`| + ## See also - [Standard Query Operators in LINQ to Entities Queries](standard-query-operators-in-linq-to-entities-queries.md) diff --git a/docs/framework/get-started/index.md b/docs/framework/get-started/index.md index 3b778975b6050..00281d566178c 100644 --- a/docs/framework/get-started/index.md +++ b/docs/framework/get-started/index.md @@ -67,14 +67,14 @@ For more information on developing apps that target .NET Framework, see the [Dev ## Related articles -| Title | Description | -| ----- |------------ | -| [Overview](overview.md) | Provides detailed information for developers who build apps that target .NET Framework. | -| [Installation guide](../install/index.md) | Provides information about installing .NET Framework. | +| Title | Description | +|-------------------------------------------|-----------------------------------------------------------------------------------------| +| [Overview](overview.md) | Provides detailed information for developers who build apps that target .NET Framework. | +| [Installation guide](../install/index.md) | Provides information about installing .NET Framework. | | [.NET Framework and Out-of-Band Releases](the-net-framework-and-out-of-band-releases.md) | Describes the .NET Framework out-of-band releases and how to use them in your app. | | [System Requirements](system-requirements.md) | Lists the hardware and software requirements for running .NET Framework. | | [.NET Core documentation](../../core/introduction.md) | Provides the conceptual and API reference documentation for .NET Core. | -| [.NET Standard](../../standard/net-standard.md) | Discusses .NET Standard, a versioned specification that individual .NET implementations support to guarantee that a consistent set of APIs is available on multiple platforms. +| [.NET Standard](../../standard/net-standard.md) | Discusses .NET Standard, a versioned specification that individual .NET implementations support to guarantee that a consistent set of APIs is available on multiple platforms. | ## See also diff --git a/docs/framework/tools/al-exe-assembly-linker.md b/docs/framework/tools/al-exe-assembly-linker.md index ded1504d6a730..70f1f6095ac8b 100644 --- a/docs/framework/tools/al-exe-assembly-linker.md +++ b/docs/framework/tools/al-exe-assembly-linker.md @@ -47,7 +47,7 @@ You can specify the following `options`; you must specify **/out**. |**/config[uration]:** `text`|Specifies a string for the Configuration field in the assembly. Place the string in double quotation marks (" ") if `text` contains a space. This string is a custom attribute on the assembly and is available for viewing with reflection.

If text is an empty string, the Win32 Configuration resource appears as a single space.

You can also specify this option as a custom attribute () in the source code for any MSIL module.| |**/copy[right]:** `text`|Specifies a string for the Copyright field in the assembly. Place the string in double quotation marks (" ") if `text` contains a space. This string is a custom attribute on the assembly and is available for viewing with reflection.

If you do not specify **/win32res**, **/copyright** appears in File Explorer as the Win32 Copyright resource.

If text is an empty string, the Win32 Copyright resource appears as a single space.

If you specify **/win32res**, **/copyright** will not affect the Win32 resource information.

You can also specify this option as a custom attribute () in the source code for any MSIL module.| |**/c[ulture]:** `text`|Specifies the culture string to associate with the assembly. Valid values for cultures are those defined by the Internet Requests for Comments (RFC) document 1766 titled "Tags for the Identification of Languages."

Place the string in double quotation marks (" ") if `text` contains a space. There is no default culture string. This string is available for viewing with reflection.

For information about valid `text` strings, see the .

You can also specify this option as a custom attribute () in the source code for any MSIL module.| -|`/delay[sign][+|-]`|Specifies whether the assembly will be fully or partially signed. Use **/delaysign-** if you want a fully signed assembly. Use **/delaysign+** if you only want to include the public key in the assembly.

When you request a fully signed assembly, *Al.exe* hashes the file that contains the manifest (assembly metadata) and signs that hash with the private key. The resulting digital signature is stored in the file that contains the manifest. When an assembly is delay signed, *Al.exe* does not compute and store the signature, but just reserves space in the file so the signature can be added later.

The default is **/delaysign-**.

The **/delaysign** option has no effect unless used with **/keyfile** or **/keyname**.

For example, using **/delaysign+** enables a tester to put the assembly in the global cache. After testing, you can fully sign the assembly by including the private key in the assembly.

Note: Before using the [*Gacutil.exe* (Global Assembly Cache Tool)](gacutil-exe-gac-tool.md) to put a delay-signed assembly into the global cache, use the [*Sn.exe* (Strong Name Tool)](sn-exe-strong-name-tool.md) to register the assembly for verification skipping. For example, `Sn.exe –Vr delaySignedAssembly`. Use this only for development.

You can also specify this option as a custom attribute () in the source code for any MSIL module.| +|`/delay[sign][+ or -]`|Specifies whether the assembly will be fully or partially signed. Use **/delaysign-** if you want a fully signed assembly. Use **/delaysign+** if you only want to include the public key in the assembly.

When you request a fully signed assembly, *Al.exe* hashes the file that contains the manifest (assembly metadata) and signs that hash with the private key. The resulting digital signature is stored in the file that contains the manifest. When an assembly is delay signed, *Al.exe* does not compute and store the signature, but just reserves space in the file so the signature can be added later.

The default is **/delaysign-**.

The **/delaysign** option has no effect unless used with **/keyfile** or **/keyname**.

For example, using **/delaysign+** enables a tester to put the assembly in the global cache. After testing, you can fully sign the assembly by including the private key in the assembly.

Note: Before using the [*Gacutil.exe* (Global Assembly Cache Tool)](gacutil-exe-gac-tool.md) to put a delay-signed assembly into the global cache, use the [*Sn.exe* (Strong Name Tool)](sn-exe-strong-name-tool.md) to register the assembly for verification skipping. For example, `Sn.exe –Vr delaySignedAssembly`. Use this only for development.

You can also specify this option as a custom attribute () in the source code for any MSIL module.| |**/descr[iption]:** `text`|Specifies a string for the field in the assembly. Place the string in double quotation marks (" ") if `text` contains a space. This string is a custom attribute on the assembly and is available for viewing with reflection.

If you do not specify **/win32res**, **/description** appears in File Explorer as the Win32 **Comments** resource.

If text is an empty string, the Win32 **Comments** resource appears as a single space.

If you specify **/win32res**, **/description** will not affect the Win32 resource information.

You can also specify this option as a custom attribute () in the source code for any MSIL module.| |**/e[vidence]:** `file`|Embeds `file` in the assembly with the resource name of Security.Evidence.

You cannot use Security.Evidence for regular resources.| |**/fileversion:** `version`|Specifies a string for the **File Version** field in the assembly. This string is a custom attribute on the assembly and is available for viewing with reflection.

If you do not specify **/win32res**, **/fileversion** will be used as the Win32 **File Version** resource. If you do not specify **/fileversion**, the Win32 **File Version** resource will be populated by the Win32 **Assembly Version** resource.

If **/win32res** is specified, **/fileversion** does not affect the Win32 resource.

You can also specify this option as a custom attribute (AssemblyFileVersionAttribute) in the source code for any MSIL module.| diff --git a/docs/framework/tools/caspol-exe-code-access-security-policy-tool.md b/docs/framework/tools/caspol-exe-code-access-security-policy-tool.md index 0063532746b23..3d7b5d206c1d5 100644 --- a/docs/framework/tools/caspol-exe-code-access-security-policy-tool.md +++ b/docs/framework/tools/caspol-exe-code-access-security-policy-tool.md @@ -41,8 +41,8 @@ caspol [options] ## Parameters -|Option|Description| -|------------|-----------------| +| Option | Description | +|--------|-------------| |**-addfulltrust** *assembly_file*

or

**-af** *assembly_file*|Adds an assembly that implements a custom security object (such as a custom permission or a custom membership condition) to the full trust assembly list for a specific policy level. The *assembly_file* argument specifies the assembly to add. This file must be signed with a [strong name](../../standard/assembly/strong-named.md). You can sign an assembly with a strong name using the [Strong Name Tool (Sn.exe)](sn-exe-strong-name-tool.md).

Whenever a permission set containing a custom permission is added to policy, the assembly implementing the custom permission must be added to the full trust list for that policy level. Assemblies that implement custom security objects (such as custom code groups or membership conditions) used in a security policy (such as the machine policy) should always be added to the full trust assembly list. **Caution:** If the assembly implementing the custom security object references other assemblies, you must first add the referenced assemblies to the full trust assembly list. Custom security objects created using Visual Basic, C++, and JScript reference either Microsoft.VisualBasic.dll, Microsoft.VisualC.dll, or Microsoft.JScript.dll, respectively. These assemblies aren't in the full trust assembly list by default. You must add the appropriate assembly to the full trust list before you add a custom security object. Failure to do so will break the security system, causing all assemblies to fail to load. In this situation, the Caspol.exe **-all -reset** option won't repair security. To repair security, you must manually edit the security files to remove the custom security object.| |**-addgroup** {*parent_label | parent_name*} *mship pset_name* [*flags*]

or

**-ag** {*parent_label | parent_name*} *mship pset_name* [*flags*]|Adds a new code group to the code group hierarchy. You can specify either the *parent_label* or *parent_name*. The *parent_label* argument specifies the label (such as 1. or 1.1.) of the code group that is the parent of the code group being added. The *parent_name* argument specifies the name of the code group that is the parent of the code group being added. Because *parent_label* and *parent_name* can be used interchangeably, Caspol.exe must be able to distinguish between them. Therefore, *parent_name* can't begin with a number. Additionally, *parent_name* can only contain A-Z, 0-9 and the underscore character.

The *mship* argument specifies the membership condition for the new code group. For more information, see the table of *mship* arguments later in this section.

The *pset_name* argument is the name of the permission set that will be associated with the new code group. You can also set one or more *flags* for the new group. For more information, see the table of *flags* arguments later in this section.| |**-addpset** {*psfile* | *psfile* p*set_name*}

or

**-ap** {*named*_*psfile* | *psfile* *pset_name*}|Adds a new named permission set to policy. The permission set must be authored in XML and stored in an .xml file. If the XML file contains the name of the permission set, only that file (*psfile*) is specified. If the XML file doesn't contain the permission set name, you must specify both the XML file name (*psfile*) and the permission set name (*pset_name*).

All permissions used in a permission set must be defined in assemblies contained in the global assembly cache.| @@ -52,7 +52,7 @@ caspol [options] |**-customall** *path*

or

**-ca** *path*|Indicates that all options following this one apply to the machine, enterprise, and the specified custom user policies. You must specify the location of the custom user's security configuration file with the *path* argument.| |**-cu**[**stomuser**] *path*|Allows the administration of a custom user policy that doesn't belong to the user on whose behalf Caspol.exe is currently running. You must specify the location of the custom user's security configuration file with the *path* argument.| |**-enterprise**

or

**-en**|Indicates that all options following this one apply to the enterprise level policy. Users who aren't enterprise administrators don't have sufficient rights to modify the enterprise policy, although they can view it. In non-enterprise scenarios, this policy, by default, doesn't interfere with machine and user policy.| -|**-e**[**xecution**] {**on** | **off**}|Turns on or off the mechanism that checks for the permission to run before code starts to execute. **Note:** This switch is removed in .NET Framework 4 and later versions. +|**-e**[**xecution**] {**on** | **off**}|Turns on or off the mechanism that checks for the permission to run before code starts to execute. **Note:** This switch is removed in .NET Framework 4 and later versions. | |**-f**[**orce**]|Suppresses the tool's self-destruct test and changes the policy as specified by the user. Normally, Caspol.exe checks whether any policy changes would prevent Caspol.exe itself from running properly; if so, Caspol.exe doesn't save the policy change and prints an error message. To force Caspol.exe to change policy even if this prevents Caspol.exe itself from running, use the **–force** option.| |**-h**[**elp**]|Displays command syntax and options for Caspol.exe.| |**-l**[**ist**]|Lists the code group hierarchy and the permission sets for the specified machine, user, enterprise, or all policy levels. Caspol.exe displays the code group's label first, followed by the name, if it isn't null.| diff --git a/docs/framework/tools/mage-exe-manifest-generation-and-editing-tool.md b/docs/framework/tools/mage-exe-manifest-generation-and-editing-tool.md index 47eaac6fa416e..24091342820e1 100644 --- a/docs/framework/tools/mage-exe-manifest-generation-and-editing-tool.md +++ b/docs/framework/tools/mage-exe-manifest-generation-and-editing-tool.md @@ -27,10 +27,10 @@ Mage [commands] [commandOptions] The following table shows the commands supported by *Mage.exe*. For more information about the options supported by these commands, see [New and Update command options](#new-and-update-command-options) and [Sign command options](#sign-command-options). -|Command|Description| -|-------------|-----------------| +| Command | Description | +|---------|-------------| |**-cc, ClearApplicationCache**|Clears the downloaded application cache of all online-only applications.| -|**-n, -New** *fileType [newOptions]*|Creates a new file of the given type. Valid types are:

- `Deployment`: Creates a new deployment manifest.
- `Application`: Creates a new application manifest.

If you do not specify any additional parameters with this command, it will create a file of the appropriate type, with appropriate default tags and attribute values.

Use the **-ToFile** option (see in the following table) to specify the file name and path of the new file.

Use the **-FromDirectory** option (see in the following table) to create an application manifest with all of the assemblies for an application added to the \ section of the manifest.| +|**-n, -New** *fileType [newOptions]*|Creates a new file of the given type. Valid types are:

- `Deployment`: Creates a new deployment manifest.
- `Application`: Creates a new application manifest.

If you do not specify any additional parameters with this command, it will create a file of the appropriate type, with appropriate default tags and attribute values.

Use the **-ToFile** option (see in the following table) to specify the file name and path of the new file.

Use the **-FromDirectory** option (see in the following table) to create an application manifest with all of the assemblies for an application added to the \ section of the manifest.| |**-u, -Update** *[filePath] [updateOptions]*|Makes one or more changes to a manifest file. You do not have to specify the type of file that you are editing. Mage.exe will examine the file by using a set of heuristics and determine whether it is a deployment manifest or an application manifest.

If you have already signed a file with a certificate, **-Update** will remove the key signature block. This is because the key signature contains a hash of the file, and modifying the file renders the hash invalid.

Use the **-ToFile** option (see in the following table) to specify a new file name and path instead of overwriting the existing file.| |**-s, -Sign** `[signOptions]`|Uses a key pair or X509 certificate to sign a file. Signatures are inserted as XML elements inside of the files.

You must be connected to the Internet when signing a manifest that specifies a **-TimestampUri** value.| |**-ver, -Verify** *[manifest-filename]*|Verifies that the manifest is signed correctly. Cannot be combined with other commands.

**Available in .NET Framework 4.7 and later versions.**| @@ -71,11 +71,11 @@ The following table shows the options supported by the `-New` and `-Update` comm The following table shows the options supported by the `-Sign` command, which apply to all types of files. -|Options|Description| -|-------------|-----------------| +| Options | Description | +|---------|-------------| |**-cf, -CertFile** `filePath`|Specifies The location of a digital certificate for signing a manifest. This option can be used in conjunction with the **-Password** option if the certificate requires a password for Personal Information Exchange (PFX) files. Starting with .NET Framework 4.7, if the file does not contain a private key, a combination of the **-CryptoProvider** and **-KeyContainer** options is required.

Starting with .NET Framework 4.6.2, *Mage.exe* signs manifests with CNG as well as CAPI certificates.| |**-ch, -CertHash** `hashSignature`|The hash of a digital certificate stored in the personal certificate store of the client computer. This corresponds to the Thumbprint property of a digital certificate viewed in the Windows Certificates Console.

`hashSignature` can be either uppercase or lowercase, and can be supplied either as a single string or with each octet of the Thumbprint separated by spaces and the entire Thumbprint enclosed in quotation marks.| -**-csp, -CryptoProvider** `provider-name`|Specifies the name of a cryptographic service provider (CSP) that contains the private key container. This option requires the **-KeyContainer** option.

This option is available starting with .NET Framework 4.7.| +|**-csp, -CryptoProvider** `provider-name`|Specifies the name of a cryptographic service provider (CSP) that contains the private key container. This option requires the **-KeyContainer** option.

This option is available starting with .NET Framework 4.7.| |**-kc, -KeyContainer** `name`|Specifies the key container that contains the name of the private key. This option requires the **CryptoProvider** option.

This option is available starting with .NET Framework 4.7.| |**-pwd, -Password** `passwd`|The password that is used for signing a manifest with a digital certificate. Must be used in conjunction with the **-CertFile** option.| |**-t, -ToFile** `filePath`|Specifies the output path of the file that has been created or modified.| diff --git a/docs/framework/tools/sn-exe-strong-name-tool.md b/docs/framework/tools/sn-exe-strong-name-tool.md index b67d8bd32076b..0c4d56e11dd41 100644 --- a/docs/framework/tools/sn-exe-strong-name-tool.md +++ b/docs/framework/tools/sn-exe-strong-name-tool.md @@ -2,7 +2,7 @@ title: "Sn.exe (Strong Name Tool)" description: Get started with Sn.exe, the Strong Name tool. Sign assemblies with strong names. Manage keys, and generate and verify signatures. ms.date: "03/30/2017" -helpviewer_keywords: +helpviewer_keywords: - "public keys, signing files" - "Strong Name tool" - "Sn.exe" @@ -14,111 +14,111 @@ ms.assetid: c1d2b532-1b8e-4c7a-8ac5-53b801135ec6 --- # Sn.exe (Strong Name Tool) -The Strong Name tool (Sn.exe) helps sign assemblies with [strong names](../../standard/assembly/strong-named.md). Sn.exe provides options for key management, signature generation, and signature verification. - +The Strong Name tool (Sn.exe) helps sign assemblies with [strong names](../../standard/assembly/strong-named.md). Sn.exe provides options for key management, signature generation, and signature verification. + > [!WARNING] > Do not rely on strong names for security. They provide a unique identity only. - For more information on strong naming and strong-named assemblies, see [Strong-Named Assemblies](../../standard/assembly/strong-named.md) and [How to: Sign an Assembly with a Strong Name](../../standard/assembly/sign-strong-name.md). - - The Strong Name tool is automatically installed with Visual Studio. To start the tool, use [Visual Studio Developer Command Prompt or Visual Studio Developer PowerShell](/visualstudio/ide/reference/command-prompt-powershell). + For more information on strong naming and strong-named assemblies, see [Strong-Named Assemblies](../../standard/assembly/strong-named.md) and [How to: Sign an Assembly with a Strong Name](../../standard/assembly/sign-strong-name.md). + + The Strong Name tool is automatically installed with Visual Studio. To start the tool, use [Visual Studio Developer Command Prompt or Visual Studio Developer PowerShell](/visualstudio/ide/reference/command-prompt-powershell). > [!NOTE] > On 64-bit computers, run the 32-bit version of Sn.exe by using the Developer Command Prompt for Visual Studio and the 64-bit version by using the Visual Studio x64 Win64 Command Prompt. - - At the command prompt, type the following: - -## Syntax - -```console -sn [-quiet][option [parameter(s)]] -``` - -## Parameters - -|Option|Description| -|------------|-----------------| -|`-a identityKeyPairFile signaturePublicKeyFile`|Generates data to migrate the identity key to the signature key from a file.| -|`-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile`|Generates data to migrate the identity key to the signature key from a key container.| -|`-c [csp]`|Sets the default cryptographic service provider (CSP) to use for strong name signing. This setting applies to the entire computer. If you do not specify a CSP name, Sn.exe clears the current setting.| -|`-d container`|Deletes the specified key container from the strong name CSP.| -|`-D assembly1 assembly2`|Verifies that two assemblies differ only by signature. This is often used as a check after an assembly has been re-signed with a different key pair.| -|`-e assembly outfile`|Extracts the public key from *assembly* and stores it in *outfile.*| -|`-h`|Displays command syntax and options for the tool.| -|`-i infile container`|Installs the key pair from *infile* in the specified key container. The key container resides in the strong name CSP.| -|`-k [keysize] outfile`|Generates a new key of the specified size and writes it to the specified file. Both a public and private key are written to the file.

If you do not specify a key size, a 1,024-bit key is generated by default if you have the Microsoft enhanced cryptographic provider installed; otherwise, a 512-bit key is generated.

The *keysize* parameter supports key lengths from 384 bits to 16,384 bits in increments of 8 bits if you have the Microsoft enhanced cryptographic provider installed. It supports key lengths from 384 bits to 512 bits in increments of 8 bits if you have the Microsoft base cryptographic provider installed.| -|`-m [y|n]`|Specifies whether key containers are computer-specific, or user-specific. If you specify *y*, key containers are computer-specific. If you specify *n*, key containers are user-specific.

If neither y nor n is specified, this option displays the current setting.| -|`-o infile [outfile]`|Extracts the public key from the *infile* and stores it in a .csv file. A comma separates each byte of the public key. This format is useful for hard-coding references to keys as initialized arrays in source code. If you do not specify an *outfile*, this option places the output on the Clipboard. **Note:** This option does not verify that the input is only a public key. If the `infile` contains a key pair with a private key, the private key is also extracted.| -|`-p infile outfile [hashalg]`|Extracts the public key from the key pair in *infile* and stores it in *outfile*, optionally using the RSA algorithm specified by *hashalg*. This public key can be used to delay-sign an assembly using the **/delaysign+** and **/keyfile** options of the [Assembly Linker (Al.exe)](al-exe-assembly-linker.md). When an assembly is delay-signed, only the public key is set at compile time and space is reserved in the file for the signature to be added later, when the private key is known.| -|`-pc container outfile [hashalg]`|Extracts the public key from the key pair in *container* and stores it in *outfile*. If you use the *hashalg* option, the RSA algorithm is used to extract the public key.| -|`-Pb [y|n]`|Specifies whether the strong-name bypass policy is enforced. If you specify *y*, strong names for full-trust assemblies are not validated when loaded into a full-trust . If you specify *n*, strong names are validated for correctness, but not for a specific strong name. The has no effect on full-trust assemblies. You must perform your own check for a strong name match.

If neither `y` nor `n` is specified, this option displays the current setting. The default is `y`. **Note:** On 64-bit computers, you must set this parameter in both the 32-bit and the 64-bit instances of Sn.exe.| -|`-q[uiet]`|Specifies quiet mode; suppresses the display of success messages.| -|`-R[a] assembly infile`|Re-signs a previously signed or delay-signed assembly with the key pair in *infile*.

If **-Ra** is used, hashes are recomputed for all files in the assembly.| -|`-Rc[a] assembly container`|Re-signs a previously signed or delay-signed assembly with the key pair in *container*.

If **-Rca** is used, hashes are recomputed for all files in the assembly.| -|`-Rh assembly`|Recomputes hashes for all files in the assembly.| -|`-t[p] infile`|Displays the token for the public key stored in *infile*. The contents of *infile* must be a public key previously generated from a key pair file using **-p**. Do not use the **-t[p]** option to extract the token directly from a key pair file.

Sn.exe computes the token by using a hash function from the public key. To save space, the common language runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. The **-tp** option displays the public key in addition to the token. If the attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

Note that this option does not verify the assembly signature and should not be used to make trust decisions. This option only displays the raw public key token data.| -|`-T[p] assembly`|Displays the public key token for *assembly.* The *assembly* must be the name of a file that contains an assembly manifest.

Sn.exe computes the token by using a hash function from the public key. To save space, the runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. The **-Tp** option displays the public key in addition to the token. If the attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

Note that this option does not verify the assembly signature and should not be used to make trust decisions. This option only displays the raw public key token data.| -|`-TS assembly infile`|Test-signs the signed or partially signed *assembly* with the key pair in *infile*.| + + At the command prompt, type the following: + +## Syntax + +```console +sn [-quiet][option [parameter(s)]] +``` + +## Parameters + +|Option|Description| +|------------|-----------------| +|`-a identityKeyPairFile signaturePublicKeyFile`|Generates data to migrate the identity key to the signature key from a file.| +|`-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile`|Generates data to migrate the identity key to the signature key from a key container.| +|`-c [csp]`|Sets the default cryptographic service provider (CSP) to use for strong name signing. This setting applies to the entire computer. If you do not specify a CSP name, Sn.exe clears the current setting.| +|`-d container`|Deletes the specified key container from the strong name CSP.| +|`-D assembly1 assembly2`|Verifies that two assemblies differ only by signature. This is often used as a check after an assembly has been re-signed with a different key pair.| +|`-e assembly outfile`|Extracts the public key from *assembly* and stores it in *outfile.*| +|`-h`|Displays command syntax and options for the tool.| +|`-i infile container`|Installs the key pair from *infile* in the specified key container. The key container resides in the strong name CSP.| +|`-k [keysize] outfile`|Generates a new key of the specified size and writes it to the specified file. Both a public and private key are written to the file.

If you do not specify a key size, a 1,024-bit key is generated by default if you have the Microsoft enhanced cryptographic provider installed; otherwise, a 512-bit key is generated.

The *keysize* parameter supports key lengths from 384 bits to 16,384 bits in increments of 8 bits if you have the Microsoft enhanced cryptographic provider installed. It supports key lengths from 384 bits to 512 bits in increments of 8 bits if you have the Microsoft base cryptographic provider installed.| +|`-m [y or n]`|Specifies whether key containers are computer-specific, or user-specific. If you specify *y*, key containers are computer-specific. If you specify *n*, key containers are user-specific.

If neither y nor n is specified, this option displays the current setting.| +|`-o infile [outfile]`|Extracts the public key from the *infile* and stores it in a .csv file. A comma separates each byte of the public key. This format is useful for hard-coding references to keys as initialized arrays in source code. If you do not specify an *outfile*, this option places the output on the Clipboard. **Note:** This option does not verify that the input is only a public key. If the `infile` contains a key pair with a private key, the private key is also extracted.| +|`-p infile outfile [hashalg]`|Extracts the public key from the key pair in *infile* and stores it in *outfile*, optionally using the RSA algorithm specified by *hashalg*. This public key can be used to delay-sign an assembly using the **/delaysign+** and **/keyfile** options of the [Assembly Linker (Al.exe)](al-exe-assembly-linker.md). When an assembly is delay-signed, only the public key is set at compile time and space is reserved in the file for the signature to be added later, when the private key is known.| +|`-pc container outfile [hashalg]`|Extracts the public key from the key pair in *container* and stores it in *outfile*. If you use the *hashalg* option, the RSA algorithm is used to extract the public key.| +|`-Pb [y or n]`|Specifies whether the strong-name bypass policy is enforced. If you specify *y*, strong names for full-trust assemblies are not validated when loaded into a full-trust . If you specify *n*, strong names are validated for correctness, but not for a specific strong name. The has no effect on full-trust assemblies. You must perform your own check for a strong name match.

If neither `y` nor `n` is specified, this option displays the current setting. The default is `y`. **Note:** On 64-bit computers, you must set this parameter in both the 32-bit and the 64-bit instances of Sn.exe.| +|`-q[uiet]`|Specifies quiet mode; suppresses the display of success messages.| +|`-R[a] assembly infile`|Re-signs a previously signed or delay-signed assembly with the key pair in *infile*.

If **-Ra** is used, hashes are recomputed for all files in the assembly.| +|`-Rc[a] assembly container`|Re-signs a previously signed or delay-signed assembly with the key pair in *container*.

If **-Rca** is used, hashes are recomputed for all files in the assembly.| +|`-Rh assembly`|Recomputes hashes for all files in the assembly.| +|`-t[p] infile`|Displays the token for the public key stored in *infile*. The contents of *infile* must be a public key previously generated from a key pair file using **-p**. Do not use the **-t[p]** option to extract the token directly from a key pair file.

Sn.exe computes the token by using a hash function from the public key. To save space, the common language runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. The **-tp** option displays the public key in addition to the token. If the attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

Note that this option does not verify the assembly signature and should not be used to make trust decisions. This option only displays the raw public key token data.| +|`-T[p] assembly`|Displays the public key token for *assembly.* The *assembly* must be the name of a file that contains an assembly manifest.

Sn.exe computes the token by using a hash function from the public key. To save space, the runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. The **-Tp** option displays the public key in addition to the token. If the attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

Note that this option does not verify the assembly signature and should not be used to make trust decisions. This option only displays the raw public key token data.| +|`-TS assembly infile`|Test-signs the signed or partially signed *assembly* with the key pair in *infile*.| |`-TSc assembly container`|Test-signs the signed or partially signed *assembly* with the key pair in the key container *container*.| -|`-v assembly`|Verifies the strong name in *assembly*, where *assembly* is the name of a file that contains an assembly manifest.| -|`-vf assembly`|Verifies the strong name in *assembly.* Unlike the **-v** option, **-vf** forces verification even if it is disabled using the **-Vr** option.| -|`-Vk regfile.reg assembly [userlist] [infile]`|Creates a registration entries (.reg) file you can use to register the specified assembly for verification skipping. The rules for assembly naming that apply to the **-Vr** option apply to **–Vk** as well. For information about the *userlist* and *infile* options, see the **–Vr** option.| -|`-Vl`|Lists current settings for strong-name verification on this computer.| +|`-v assembly`|Verifies the strong name in *assembly*, where *assembly* is the name of a file that contains an assembly manifest.| +|`-vf assembly`|Verifies the strong name in *assembly.* Unlike the **-v** option, **-vf** forces verification even if it is disabled using the **-Vr** option.| +|`-Vk regfile.reg assembly [userlist] [infile]`|Creates a registration entries (.reg) file you can use to register the specified assembly for verification skipping. The rules for assembly naming that apply to the **-Vr** option apply to **–Vk** as well. For information about the *userlist* and *infile* options, see the **–Vr** option.| +|`-Vl`|Lists current settings for strong-name verification on this computer.| |`-Vr assembly [userlist] [infile]`|Registers *assembly* for verification skipping. Optionally, you can specify a comma-separated list of user names the skip verification should apply to. If you specify *infile*, verification remains enabled, but the public key in *infile* is used in verification operations. You can specify *assembly* in the form *\*, strongname* to register all assemblies with the specified strong name. For *strongname*, specify the string of hexadecimal digits representing the tokenized form of the public key. See the **-t** and **-T** options to display the public key token. **Caution:** Use this option only during development. Adding an assembly to the skip verification list creates a security vulnerability. A malicious assembly could use the fully specified assembly name (assembly name, version, culture, and public key token) of the assembly added to the skip verification list to fake its identity. This would allow the malicious assembly to also skip verification.| -|`-Vu assembly`|Unregisters *assembly* for verification skipping. The same rules for assembly naming that apply to **-Vr** apply to **-Vu**.| -|`-Vx`|Removes all verification-skipping entries.| -|`-?`|Displays command syntax and options for the tool.| - +|`-Vu assembly`|Unregisters *assembly* for verification skipping. The same rules for assembly naming that apply to **-Vr** apply to **-Vu**.| +|`-Vx`|Removes all verification-skipping entries.| +|`-?`|Displays command syntax and options for the tool.| + > [!NOTE] -> All Sn.exe options are case-sensitive and must be typed exactly as shown to be recognized by the tool. - -## Remarks +> All Sn.exe options are case-sensitive and must be typed exactly as shown to be recognized by the tool. + +## Remarks + + The **-R** and **–Rc** options are useful with assemblies that have been delay-signed. In this scenario, only the public key has been set at compile time and signing is performed later, when the private key is known. - The **-R** and **–Rc** options are useful with assemblies that have been delay-signed. In this scenario, only the public key has been set at compile time and signing is performed later, when the private key is known. - > [!NOTE] -> For parameters (for example, –**Vr)** that write to protected resources such as the registry, run SN.exe as an administrator. - +> For parameters (for example, –**Vr)** that write to protected resources such as the registry, run SN.exe as an administrator. + The Strong Name tool assumes that public/private key pairs are generated with the `AT_SIGNATURE` algorithm identifier. Public/private key pairs generated with the `AT_KEYEXCHANGE` algorithm generate an error. -## Examples - - The following command creates a new, random key pair and stores it in `keyPair.snk`. - -```console -sn -k keyPair.snk -``` - - The following command stores the key in `keyPair.snk` in the container `MyContainer` in the strong name CSP. - -```console -sn -i keyPair.snk MyContainer -``` - - The following command extracts the public key from `keyPair.snk` and stores it in `publicKey.snk`. - -```console -sn -p keyPair.snk publicKey.snk -``` - - The following command displays the public key and the token for the public key contained in `publicKey.snk`. - -```console -sn -tp publicKey.snk -``` - - The following command verifies the assembly `MyAsm.dll`. - -```console -sn -v MyAsm.dll -``` - - The following command deletes `MyContainer` from the default CSP. - -```console -sn -d MyContainer -``` - +## Examples + + The following command creates a new, random key pair and stores it in `keyPair.snk`. + +```console +sn -k keyPair.snk +``` + + The following command stores the key in `keyPair.snk` in the container `MyContainer` in the strong name CSP. + +```console +sn -i keyPair.snk MyContainer +``` + + The following command extracts the public key from `keyPair.snk` and stores it in `publicKey.snk`. + +```console +sn -p keyPair.snk publicKey.snk +``` + + The following command displays the public key and the token for the public key contained in `publicKey.snk`. + +```console +sn -tp publicKey.snk +``` + + The following command verifies the assembly `MyAsm.dll`. + +```console +sn -v MyAsm.dll +``` + + The following command deletes `MyContainer` from the default CSP. + +```console +sn -d MyContainer +``` + ## See also - [Tools](index.md) diff --git a/docs/framework/unmanaged-api/wmi/beginenumeration.md b/docs/framework/unmanaged-api/wmi/beginenumeration.md index d48f0627289ff..7e2648c46e8ac 100644 --- a/docs/framework/unmanaged-api/wmi/beginenumeration.md +++ b/docs/framework/unmanaged-api/wmi/beginenumeration.md @@ -2,34 +2,34 @@ title: BeginEnumeration function (Unmanaged API Reference) description: The BeginEnumeration function resets an enumerator to the beginning of the enumeration ms.date: "11/06/2017" -api_name: +api_name: - "BeginEnumeration" -api_location: +api_location: - "WMINet_Utils.dll" -api_type: +api_type: - "DLLExport" -f1_keywords: +f1_keywords: - "BeginEnumeration" -helpviewer_keywords: +helpviewer_keywords: - "BeginEnumeration function [.NET WMI and performance counters]" -topic_type: +topic_type: - "Reference" --- # BeginEnumeration function -Resets an enumerator back to the beginning of the enumeration. +Resets an enumerator back to the beginning of the enumeration. [!INCLUDE[internalonly-unmanaged](../../../../includes/internalonly-unmanaged.md)] - -## Syntax - -```cpp + +## Syntax + +```cpp HRESULT BeginEnumeration ( [in] int vFunc, [in] IWbemClassObject* ptr, [in] LONG lEnumFlags ); -``` +``` ## Parameters @@ -46,13 +46,13 @@ HRESULT BeginEnumeration ( The following values returned by this function are defined in the *WbemCli.h* header file, or you can define them as constants in your code: -|Constant |Value |Description | -|---------|---------|---------| +| Constant | Value | Description | +|----------|-------|-------------| |`WBEM_E_INVALID_PARAMETER` | 0x80041008 | The combination of flags in `lEnumFlags` is invalid, or an invalid argument was specified. | |`WBEM_E_UNEXPECTED` | 0x8004101d | A second call to `BeginEnumeration` was made without an intervening call to [`EndEnumeration`](endenumeration.md). | |`WBEM_E_OUT_OF_MEMORY` | 0x80041006 | Not enough memory is available to begin a new enumeration. | |`WBEM_S_NO_ERROR` | 0 | The function call was successful. | - + ## Remarks This function wraps a call to the [IWbemClassObject::BeginEnumeration](/windows/desktop/api/wbemcli/nn-wbemcli-iwbemclassobject) method. @@ -61,22 +61,22 @@ The flags that can be passed as the `lEnumFlags` argument are defined in the *Wb **Group 1** -|Constant |Value |Description | -|---------|---------|---------| -|`WBEM_FLAG_KEYS_ONLY` | 0x4 | Include properties that constitute the key only. | -|`WBEM_FLAG_REFS_ONLY` | 0x8 | Include properties that are object references only. | +| Constant | Value | Description | +|-----------------------|-------|-----------------------------------------------------| +| `WBEM_FLAG_KEYS_ONLY` | 0x4 | Include properties that constitute the key only. | +| `WBEM_FLAG_REFS_ONLY` | 0x8 | Include properties that are object references only. | **Group 2** -Constant |Value |Description | -|---------|---------|---------| -|`WBEM_FLAG_SYSTEM_ONLY` | 0x30 | Limit the enumeration to system properties only. | -|`WBEM_FLAG_NONSYSTEM_ONLY` | 0x40 | Include local and propagated properties but exclude system properties from the enumeration. | +| Constant | Value | Description | +|----------------------------|-------|---------------------------------------------------------------------------------------------| +| `WBEM_FLAG_SYSTEM_ONLY` | 0x30 | Limit the enumeration to system properties only. | +| `WBEM_FLAG_NONSYSTEM_ONLY` | 0x40 | Include local and propagated properties but exclude system properties from the enumeration. | For classes: -Constant |Value |Description | -|---------|---------|---------| +| Constant | Value | Description | +|----------|-------|-------------| |`WBEM_FLAG_CLASS_OVERRIDES_ONLY` | 0x100 | Limit the enumeration to properties overridden in the class definition. | |`WBEM_FLAG_CLASS_LOCAL_AND_OVERRIDES` | 0x100 | Limit the enumeration to properties overridden in the current class definition and to new properties defined in the class. | | `WBEM_MASK_CLASS_CONDITION` | 0x300 | A mask (rather than a flag) to apply against a `lEnumFlags` value to check if either `WBEM_FLAG_CLASS_OVERRIDES_ONLY` or `WBEM_FLAG_CLASS_LOCAL_AND_OVERRIDES` is set. | @@ -85,19 +85,19 @@ Constant |Value |Description | For instances: -Constant |Value |Description | -|---------|---------|---------| +| Constant | Value | Description | +|----------|-------|-------------| | `WBEM_FLAG_LOCAL_ONLY` | 0x10 | Limit the enumeration to properties that are defined or modified in the class itself. | | `WBEM_FLAG_PROPAGATED_ONLY` | 0x20 | Limit the enumeration to properties that are inherited from base classes. | -## Requirements +## Requirements + + **Platforms:** See [System Requirements](../../get-started/system-requirements.md). + + **Header:** WMINet_Utils.idl + + **.NET Framework Versions:** [!INCLUDE[net_current_v472plus](../../../../includes/net-current-v472plus.md)] - **Platforms:** See [System Requirements](../../get-started/system-requirements.md). - - **Header:** WMINet_Utils.idl - - **.NET Framework Versions:** [!INCLUDE[net_current_v472plus](../../../../includes/net-current-v472plus.md)] - ## See also - [WMI and Performance Counters (Unmanaged API Reference)](index.md) diff --git a/docs/framework/unmanaged-api/wmi/beginmethodenumeration.md b/docs/framework/unmanaged-api/wmi/beginmethodenumeration.md index 5cb51201a1227..94019cef47796 100644 --- a/docs/framework/unmanaged-api/wmi/beginmethodenumeration.md +++ b/docs/framework/unmanaged-api/wmi/beginmethodenumeration.md @@ -2,48 +2,48 @@ title: BeginMethodEnumeration function (Unmanaged API Reference) description: The BeginMethodEnumeration function begins an enumeration of the object's methods ms.date: "11/06/2017" -api_name: +api_name: - "BeginMethodEnumeration" -api_location: +api_location: - "WMINet_Utils.dll" -api_type: +api_type: - "DLLExport" -f1_keywords: +f1_keywords: - "BeginMethodEnumeration" -helpviewer_keywords: +helpviewer_keywords: - "BeginMethodEnumeration function [.NET WMI and performance counters]" -topic_type: +topic_type: - "Reference" --- # BeginMethodEnumeration function -Begins an enumeration of the methods available for the object. +Begins an enumeration of the methods available for the object. [!INCLUDE[internalonly-unmanaged](../../../../includes/internalonly-unmanaged.md)] -## Syntax - +## Syntax + ```cpp HRESULT BeginMethodEnumeration ( [in] int vFunc, [in] IWbemClassObject* ptr, [in] LONG lEnumFlags ); -``` +``` ## Parameters -`vFunc` +`vFunc` [in] This parameter is unused. -`ptr` +`ptr` [in] A pointer to an [IWbemClassObject](/windows/desktop/api/wbemcli/nn-wbemcli-iwbemclassobject) instance. -`lEnumFlags` +`lEnumFlags` [in] Zero (0) for all methods, or a flag that specifies the scope of the enumeration. The following flags are defined in the *WbemCli.h* header file, or you can define them as constants in your code: -Constant |Value |Description | -|---------|---------|---------| +| Constant | Value | Description | +|----------|-------|-------------| | `WBEM_FLAG_LOCAL_ONLY` | 0x10 | Limit the enumeration to methods that are defined in the class itself. | | `WBEM_FLAG_PROPAGATED_ONLY` | 0x20 | Limit the enumeration to properties that are inherited from base classes. | @@ -51,25 +51,25 @@ Constant |Value |Description | The following values returned by this function are defined in the *WbemCli.h* header file, or you can define them as constants in your code: -|Constant |Value |Description | -|---------|---------|---------| -|`WBEM_E_INVALID_PARAMETER` | 0x80041008 | `lEnumFlags` is non-zero and is not one of the specified flags. | -|`WBEM_S_NO_ERROR` | 0 | The function call was successful. | - +| Constant | Value | Description | +|----------------------------|------------|-----------------------------------------------------------------| +| `WBEM_E_INVALID_PARAMETER` | 0x80041008 | `lEnumFlags` is non-zero and is not one of the specified flags. | +| `WBEM_S_NO_ERROR` | 0 | The function call was successful. | + ## Remarks This function wraps a call to the [IWbemClassObject::BeginMethodEnumeration](/windows/desktop/api/wbemcli/nf-wbemcli-iwbemclassobject-beginmethodenumeration) method. This method call is only supported if the current object is a class definition. Method manipulation is not available from [IWbemClassObject](/windows/desktop/api/wbemcli/nn-wbemcli-iwbemclassobject) pointers that point to instances. The order in which methods are enumerated is guaranteed to be invariant for a given instance of [IWbemClassObject](/windows/desktop/api/wbemcli/nn-wbemcli-iwbemclassobject). -## Requirements +## Requirements + + **Platforms:** See [System Requirements](../../get-started/system-requirements.md). + + **Header:** WMINet_Utils.idl + + **.NET Framework Versions:** [!INCLUDE[net_current_v472plus](../../../../includes/net-current-v472plus.md)] - **Platforms:** See [System Requirements](../../get-started/system-requirements.md). - - **Header:** WMINet_Utils.idl - - **.NET Framework Versions:** [!INCLUDE[net_current_v472plus](../../../../includes/net-current-v472plus.md)] - ## See also - [WMI and Performance Counters (Unmanaged API Reference)](index.md) diff --git a/docs/framework/unmanaged-api/wmi/putmethod.md b/docs/framework/unmanaged-api/wmi/putmethod.md index a76c86bb263ec..7cec153de670b 100644 --- a/docs/framework/unmanaged-api/wmi/putmethod.md +++ b/docs/framework/unmanaged-api/wmi/putmethod.md @@ -58,10 +58,10 @@ HRESULT PutMethod ( The following values returned by this function are defined in the *WbemCli.h* header file, or you can define them as constants in your code: -|Constant |Value |Description | -|---------|---------|---------| +| Constant | Value | Description | +|----------------------------|------------|---------------------------------------| | `WBEM_E_INVALID_PARAMETER` | 0x80041008 | One or more parameters are not valid. | -| `WBEM_E_INVALID_DUPLICATE_PARAMETER` | 0x80041043 | The `[in, out]` method parameter specified in both the *pInSignature* and *pOutSignature* objects have different qualifiers. +| `WBEM_E_INVALID_DUPLICATE_PARAMETER` | 0x80041043 | The `[in, out]` method parameter specified in both the *pInSignature* and *pOutSignature* objects have different qualifiers. | | `WBEM_E_MISSING_PARAMETER_ID` | 0x80041036 | A method parameter is missing the specification of the **ID** qualifier. | | `WBEM_E_NONCONSECUTIVE_PARAMETER_IDS` | 0x80041038 | The ID series that is assigned to the method parameters is not consecutive or does not start at 0. | | `WBEM_E_PARAMETER_ID_ON_RETVAL` | 0x80041039 | The return value for a method has an **ID** qualifier. | diff --git a/docs/framework/unmanaged-api/wmi/qualifierset-beginenumeration.md b/docs/framework/unmanaged-api/wmi/qualifierset-beginenumeration.md index 8e242a3ea50be..10958e67e6c46 100644 --- a/docs/framework/unmanaged-api/wmi/qualifierset-beginenumeration.md +++ b/docs/framework/unmanaged-api/wmi/qualifierset-beginenumeration.md @@ -61,10 +61,10 @@ To enumerate all of the qualifiers on an object, this method must be called befo The flags that can be passed as the `lEnumFlags` argument are defined in the *WbemCli.h* header file, or you can define them as constants in your code. -|Constant |Value |Description | -|---------|---------|---------| -| | 0 | Return the names of all qualifiers. | -| `WBEM_FLAG_LOCAL_ONLY` | 0x10 | Return only the names of qualifiers specific to the current property or object.
For a property: Return only the qualifiers specific to the property (including overrides), and not those qualifiers propagated from the class definition.
For an instance: Return only instance-specific qualifier names.
For a class: Return only qualifiers specific to the class being derived. +| Constant | Value | Description | +|----------|-------|-------------------------------------| +| | 0 | Return the names of all qualifiers. | +| `WBEM_FLAG_LOCAL_ONLY` | 0x10 | Return only the names of qualifiers specific to the current property or object.
For a property: Return only the qualifiers specific to the property (including overrides), and not those qualifiers propagated from the class definition.
For an instance: Return only instance-specific qualifier names.
For a class: Return only qualifiers specific to the class being derived. | |`WBEM_FLAG_PROPAGATED_ONLY` | 0x20 | Return only the names of qualifiers propagated from another object.
For a property: Return only the qualifiers propagated to this property from the class definition, and not those from the property itself.
For an instance: Return only those qualifiers propagated from the class definition.
For a class: Return only those qualifier names inherited from the parent classes. | ## Requirements diff --git a/docs/framework/unmanaged-api/wmi/qualifierset-getnames.md b/docs/framework/unmanaged-api/wmi/qualifierset-getnames.md index a4ebe525c6a29..56c11057ae0c0 100644 --- a/docs/framework/unmanaged-api/wmi/qualifierset-getnames.md +++ b/docs/framework/unmanaged-api/wmi/qualifierset-getnames.md @@ -47,7 +47,7 @@ HRESULT QualifierSet_GetNames ( |Constant |Value |Description | |---------|---------|---------| | | 0 | Return the names of all qualifiers. | -| `WBEM_FLAG_LOCAL_ONLY` | 0x10 | Return only the names of qualifiers specific to the current property or object.
For a property: Return only the qualifiers specific to the property (including overrides), and not those qualifiers propagated from the class definition.
For an instance: Return only instance-specific qualifier names.
For a class: Return only qualifiers specific to the class being derived. +| `WBEM_FLAG_LOCAL_ONLY` | 0x10 | Return only the names of qualifiers specific to the current property or object.
For a property: Return only the qualifiers specific to the property (including overrides), and not those qualifiers propagated from the class definition.
For an instance: Return only instance-specific qualifier names.
For a class: Return only qualifiers specific to the class being derived. | |`WBEM_FLAG_PROPAGATED_ONLY` | 0x20 | Return only the names of qualifiers propagated from another object.
For a property: Return only the qualifiers propagated to this property from the class definition, and not those from the property itself.
For an instance: Return only those qualifiers propagated from the class definition.
For a class: Return only those qualifier names inherited from the parent classes. | `pstrNames`\ diff --git a/docs/framework/unmanaged-api/wmi/spawnderivedclass.md b/docs/framework/unmanaged-api/wmi/spawnderivedclass.md index 86031eda2a803..79c220fe193fe 100644 --- a/docs/framework/unmanaged-api/wmi/spawnderivedclass.md +++ b/docs/framework/unmanaged-api/wmi/spawnderivedclass.md @@ -53,7 +53,7 @@ The following values returned by this function are defined in the *WbemCli.h* he |---------|---------|---------| | `WBEM_E_FAILED` | 0x80041001 | There has been a general failure. | | `WBEM_E_INVALID_OPERATION` | 0x80041016 | An invalid operation, such as spawning a class from an instance, was requested. | -| `WBEM_E_INCOMPLETE_CLASS` | The source class was not completely defined or registered with Windows Management, so a new derived class is not permitted. | +| `WBEM_E_INCOMPLETE_CLASS` | | The source class was not completely defined or registered with Windows Management, so a new derived class is not permitted. | | `WBEM_E_OUT_OF_MEMORY` | 0x80041006 | Not enough memory is available to complete the operation. | | `WBEM_E_INVALID_PARAMETER` | 0x80041008 | `ppNewClass` is `null`. | | `WBEM_S_NO_ERROR` | 0 | The function call was successful. | diff --git a/docs/framework/wcf/feature-details/working-with-certificates.md b/docs/framework/wcf/feature-details/working-with-certificates.md index a9160a6847635..e9cdbd4b3aa37 100644 --- a/docs/framework/wcf/feature-details/working-with-certificates.md +++ b/docs/framework/wcf/feature-details/working-with-certificates.md @@ -9,7 +9,7 @@ helpviewer_keywords: - "certificates [WCF]" ms.assetid: 6ffb8682-8f07-4a45-afbb-8d2487e9dbc3 --- -# Working with Certificates +# Working with certificates To program Windows Communication Foundation (WCF) security, X.509 digital certificates are commonly used to authenticate clients and servers, encrypt, and digitally sign messages. This topic briefly explains X.509 digital certificate features and how to use them in WCF, and includes links to topics that explain these concepts further or that show how to accomplish common tasks using WCF and certificates. @@ -19,11 +19,11 @@ The primary function of a certificate is to authenticate the identity of the own Certificates must be issued by a certification authority, which is often a third-party issuer of certificates. On a Windows domain, a certification authority is included that can be used to issue certificates to computers on the domain. -## Viewing Certificates +## View certificates To work with certificates, it is often necessary to view them and examine their properties. This is easily done with the Microsoft Management Console (MMC) snap-in tool. For more information, see [How to: View Certificates with the MMC Snap-in](how-to-view-certificates-with-the-mmc-snap-in.md). -## Certificate Stores +## Certificate stores Certificates are found in stores. Two major store locations exist that are further divided into sub-stores. If you are the administrator on a computer, you can view both major stores by using the MMC snap-in tool. Non-administrators can view only the current user store. @@ -42,7 +42,7 @@ These two stores are further divided into sub-stores. The most important of thes For more information about certificate stores, see [Certificate Stores](/windows/desktop/secauthn/certificate-stores). -### Selecting a Store +### Select a store Selecting where to store a certificate depends how and when the service or client runs. The following general rules apply: @@ -50,11 +50,11 @@ Selecting where to store a certificate depends how and when the service or clien - If the service or client is an application that runs under a user account, then use the **current user** store. -### Accessing Stores +### Access stores Stores are protected by access control lists (ACLs), just like folders on a computer. When creating a service hosted by Internet Information Services (IIS), the ASP.NET process runs under the ASP.NET account. That account must have access to the store that contains the certificates a service uses. Each of the major stores is protected with a default access list, but the lists can be modified. If you create a separate role to access a store, you must grant that role access permission. To learn how to modify the access list using the WinHttpCertConfig.exe tool, see [How to: Create Temporary Certificates for Use During Development](how-to-create-temporary-certificates-for-use-during-development.md). -## Chain Trust and Certificate Authorities +## Chain trust and certificate authorities Certificates are created in a hierarchy where each individual certificate is linked to the CA that issued the certificate. This link is to the CA’s certificate. The CA’s certificate then links to the CA that issued the original CA’s certificate. This process is repeated up until the Root CA’s certificate is reached. The Root CA’s certificate is inherently trusted. @@ -63,7 +63,7 @@ Digital certificates are used to authenticate an entity by relying on this hiera > [!NOTE] > Any issuer can be designated a trusted root authority by placing the issuer's certificate in the trusted root authority certificate store. -### Disabling Chain Trust +### Disable chain trust When creating a new service, you may be using a certificate that is not issued by a trusted root certificate, or the issuing certificate itself may not be in the Trusted Root Certification Authorities store. For development purposes only, you can temporarily disable the mechanism that checks the chain of trust for a certificate. To do this, set the `CertificateValidationMode` property to either `PeerTrust` or `PeerOrChainTrust`. Either mode specifies that the certificate can either be self-issued (peer trust) or part of a chain of trust. You can set the property on any of the following classes. @@ -82,18 +82,16 @@ You can also set the property using configuration. The following elements are us - [\](../../configure-apps/file-schema/wcf/messagesenderauthentication-element.md) -## Custom Authentication +## Custom authentication The `CertificateValidationMode` property also enables you to customize how certificates are authenticated. By default, the level is set to `ChainTrust`. To use the value, you must also set the `CustomCertificateValidatorType` attribute to an assembly and type used to validate the certificate. To create a custom validator, you must inherit from the abstract class. When creating a custom authenticator, the most important method to override is the method. For an example of custom authentication, see the [X.509 Certificate Validator](../samples/x-509-certificate-validator.md) sample. For more information, see [Custom Credential and Credential Validation](../extending/custom-credential-and-credential-validation.md). -## Using the PowerShell New-SelfSignedCertificate Cmdlet to Build a Certificate Chain +## Use the PowerShell New-SelfSignedCertificate cmdlet to build a certificate chain The PowerShell New-SelfSignedCertificate cmdlet creates X.509 certificates and private key/public key pairs. You can save the private key to disk and then use it to issue and sign new certificates, thus simulating a hierarchy of chained certificates. The cmdlet is intended for use only as an aid when developing services and should never be used to create certificates for actual deployment. When developing a WCF service, use the following steps to build a chain of trust with the New-SelfSignedCertificate cmdlet. -#### To build a chain of trust with the New-SelfSignedCertificate cmdlet - 1. Create a temporary root authority (self-signed) certificate using the New-SelfSignedCertificate cmdlet. Save the private key to the disk. 2. Use the new certificate to issue another certificate that contains the public key. @@ -102,11 +100,11 @@ The PowerShell New-SelfSignedCertificate cmdlet creates X.509 certificates and p 4. For step-by-step instructions, see [How to: Create Temporary Certificates for Use During Development](how-to-create-temporary-certificates-for-use-during-development.md). -## Which Certificate to Use? +## Which certificate to use? Common questions about certificates are which certificate to use, and why. The answer depends on whether you are programming a client or service. The following information provides a general guideline and is not an exhaustive answer to these questions. -### Service Certificates +### Service certificates Service certificates have the primary task of authenticating the server to clients. One of the initial checks when a client authenticates a server is to compare the value of the **Subject** field to the Uniform Resource Identifier (URI) used to contact the service: the DNS of both must match. For example, if the URI of the service is `http://www.contoso.com/endpoint/` then the **Subject** field must also contain the value `www.contoso.com`. @@ -114,17 +112,17 @@ Note that the field can contain several values, each prefixed with an initializa Also note the value of the **Intended Purposes** field of the certificate should include an appropriate value, such as "Server Authentication" or "Client Authentication". -### Client Certificates +### Client certificates Client certificates are not typically issued by a third-party certification authority. Instead, the Personal store of the current user location typically contains certificates placed there by a root authority, with an intended purpose of "Client Authentication". The client can use such a certificate when mutual authentication is required. -## Online Revocation and Offline Revocation +## Online revocation and offline revocation -### Certificate Validity +### Certificate validity Every certificate is valid only for a given period of time, called the *validity period*. The validity period is defined by the **Valid from** and **Valid to** fields of an X.509 certificate. During authentication, the certificate is checked to determine whether the certificate is still within the validity period. -### Certificate Revocation List +### Certificate revocation list At any time during the validity period, the certification authority can revoke a certificate. This can occur for many reasons, such as a compromise of the private key of the certificate. @@ -132,32 +130,32 @@ When this occurs, any chains that descend from the revoked certificate are also You can also set the mode in configuration using the `revocationMode` attribute of both the [\](../../configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md) (of the [\](../../configure-apps/file-schema/wcf/servicebehaviors.md)) and the [\](../../configure-apps/file-schema/wcf/authentication-of-clientcertificate-element.md) (of the [\](../../configure-apps/file-schema/wcf/endpointbehaviors.md)). -## The SetCertificate Method +## The SetCertificate method In WCF, you must often specify a certificate or set of certificates a service or client is to use to authenticate, encrypt, or digitally sign a message. You can do this programmatically by using the `SetCertificate` method of various classes that represent X.509 certificates. The following classes use the `SetCertificate` method to specify a certificate. -|Class|Method| -|-----------|------------| +| Class | Method | +|-------|--------| ||| ||| ||| -|| -|| +|| | +|| | The `SetCertificate` method works by designating a store location and store, a "find" type (`x509FindType` parameter) that specifies a field of the certificate, and a value to find in the field. For example, the following code creates a instance and sets the service certificate used to authenticate the service to clients with the `SetCertificate` method. [!code-csharp[c_WorkingWithCertificates#1](../../../../samples/snippets/csharp/VS_Snippets_CFX/c_workingwithcertificates/cs/source.cs#1)] [!code-vb[c_WorkingWithCertificates#1](../../../../samples/snippets/visualbasic/VS_Snippets_CFX/c_workingwithcertificates/vb/source.vb#1)] -### Multiple Certificates with the Same Value +### Multiple certificates with the same value A store may contain multiple certificates with the same subject name. This means that if you specify that the `x509FindType` is or , and more than one certificate has the same value, an exception is thrown because there is no way to distinguish which certificate is required. You can mitigate this by setting the `x509FindType` to . The thumbprint field contains a unique value that can be used to find a specific certificate in a store. However, this has its own disadvantage: if the certificate is revoked or renewed, the `SetCertificate` method fails because the thumbprint is also gone. Or, if the certificate is no longer valid, authentication fails. The way to mitigate this is to set the `x590FindType` parameter to and specify the issuer's name. If no particular issuer is required, you can also set one of the other enumeration values, such as . -## Certificates in Configuration +## Certificates in configuration You can also set certificates by using configuration. If you are creating a service, credentials, including certificates, are specified under the [\](../../configure-apps/file-schema/wcf/servicebehaviors.md). When you are programming a client, certificates are specified under the [\](../../configure-apps/file-schema/wcf/endpointbehaviors.md). -## Mapping a Certificate to a User Account +## Map a certificate to a user account A feature of IIS and Active Directory is the ability to map a certificate to a Windows user account. For more information about the feature, see [Map certificates to user accounts](/previous-versions/windows/it-pro/windows-server-2003/cc736706(v=ws.10)). diff --git a/docs/fsharp/language-reference/caller-information.md b/docs/fsharp/language-reference/caller-information.md index 3cc9494cce2f0..380222f46997f 100644 --- a/docs/fsharp/language-reference/caller-information.md +++ b/docs/fsharp/language-reference/caller-information.md @@ -11,7 +11,7 @@ To obtain this information, you use attributes that are applied to optional para |Attribute|Description|Type| |---------|-----------|----| -|[CallerFilePath](/dotnet/api/system.runtime.compilerservices.callerfilepathattribute)|Full path of the source file that contains the caller. This is the file path at compile time.|`String` +|[CallerFilePath](/dotnet/api/system.runtime.compilerservices.callerfilepathattribute)|Full path of the source file that contains the caller. This is the file path at compile time.|`String`| |[CallerLineNumber](/dotnet/api/system.runtime.compilerservices.callerlinenumberattribute)|Line number in the source file at which the method is called.|`Integer`| |[CallerMemberName](/dotnet/api/system.runtime.compilerservices.callermembernameattribute)|Method or property name of the caller. See the Member Names section later in this topic.|`String`| diff --git a/docs/fsharp/language-reference/compiler-options.md b/docs/fsharp/language-reference/compiler-options.md index 55dff6dd36bde..ef5f3bc91fc0b 100644 --- a/docs/fsharp/language-reference/compiler-options.md +++ b/docs/fsharp/language-reference/compiler-options.md @@ -20,7 +20,7 @@ The following table shows compiler options listed alphabetically. Some of the F# |`--baseaddress:address`|Specifies the preferred base address at which to load a DLL.

This compiler option is equivalent to the C# compiler option of the same name. For more information, see [/baseaddress (C# Compiler Options)](../../csharp/language-reference/compiler-options/advanced.md#baseaddress).| |`--codepage:id`|Specifies which code page to use during compilation if the required page isn't the current default code page for the system.

This compiler option is equivalent to the C# compiler option of the same name. For more information, see [/code pages (C# Compiler Options)](../../csharp/language-reference/compiler-options/advanced.md#codepage).| |`--consolecolors`|Specifies that errors and warnings use color-coded text on the console.| -|`--crossoptimize[+|-]`|Enables or disables cross-module optimizations.| +|`--crossoptimize[+ or -]`|Enables or disables cross-module optimizations.| |--delaysign[+|-]|Delay-signs the assembly using only the public portion of the strong name key.

This compiler option is equivalent to the C# compiler option of the same name. For more information, see [/delaysign (C# Compiler Options)](../../csharp/language-reference/compiler-options/security.md#delaysign).| |--checked[+|-]|Enables or disables the generation of overflow checks.

This compiler option is equivalent to the C# compiler option of the same name. For more information, see [/checked (C# Compiler Options)](../../csharp/language-reference/compiler-options/language.md#checkforoverflowunderflow).| |--debug[+|-]

-g[+|-]

--debug:[full|pdbonly]

-g: [full|pdbonly]|Enables or disables the generation of debug information, or specifies the type of debug information to generate. The default is `full`, which allows attaching to a running program. Choose `pdbonly` to get limited debugging information stored in a pdb (program database) file.

Equivalent to the C# compiler option of the same name. For more information, see

[/debug (C# Compiler Options)](../../csharp/language-reference/compiler-options/code-generation.md#debugtype).| diff --git a/docs/fsharp/language-reference/keyword-reference.md b/docs/fsharp/language-reference/keyword-reference.md index 92092a0080240..80f37a081d69e 100644 --- a/docs/fsharp/language-reference/keyword-reference.md +++ b/docs/fsharp/language-reference/keyword-reference.md @@ -134,12 +134,12 @@ The following table shows all F# keywords in alphabetical order, together with b |`null`|[Null Values](./values/null-values.md)

[Constraints](./generics/constraints.md)|Indicates the absence of an object.

Also used in generic parameter constraints.| |`of`|[Discriminated Unions](discriminated-unions.md)

[Delegates](delegates.md)

[Exception Types](./exception-handling/exception-types.md)|Used in discriminated unions to indicate the type of categories of values, and in delegate and exception declarations.| |`open`|[Import Declarations: The `open` Keyword](import-declarations-the-open-keyword.md)|Used to make the contents of a namespace or module available without qualification.| -|`or`|[Symbol and Operator Reference](./symbol-and-operator-reference/index.md)

[Constraints](./generics/constraints.md)|Used with Boolean conditions as a Boolean `or` operator. Equivalent to `||`.

Also used in member constraints.| +|`or`|[Symbol and Operator Reference](./symbol-and-operator-reference/index.md)

[Constraints](./generics/constraints.md)|Used with Boolean conditions as a Boolean `or` operator. Equivalent to ||.

Also used in member constraints.| |`override`|[Members](./members/index.md)|Used to implement a version of an abstract or virtual method that differs from the base version.| |`private`|[Access Control](access-control.md)|Restricts access to a member to code in the same type or module.| |`public`|[Access Control](access-control.md)|Allows access to a member from outside the type.| |`rec`|[Functions](./functions/index.md)|Used to indicate that a function is recursive.| -|`return`|[[Computation Expressions](computation-expressions.md)

[Async expressions](async-expressions.md)

[Task expressions](task-expressions.md)|Used to indicate a value to provide as the result of a computation expression.| +|`return`|[Computation Expressions](computation-expressions.md)

[Async expressions](async-expressions.md)

[Task expressions](task-expressions.md)|Used to indicate a value to provide as the result of a computation expression.| |`return!`|[Computation Expressions](computation-expressions.md)

[Async expressions](async-expressions.md)

[Task expressions](task-expressions.md)|Used to indicate a computation expression that, when evaluated, provides the result of the containing computation expression.| |`select`|[Query Expressions](query-expressions.md)|Used in query expressions to specify what fields or columns to extract. Note that this is a contextual keyword, which means that it is not actually a reserved word and it only acts like a keyword in appropriate context.| |`static`|[Members](./members/index.md)|Used to indicate a method or property that can be called without an instance of a type, or a value member that is shared among all instances of a type.| @@ -197,17 +197,17 @@ The following tokens are reserved as keywords for future expansion of F#: The following tokens were once reserved as keywords but were [released](https://github.com/fsharp/fslang-design/blob/main/FSharp-4.1/FS-1016-unreserve-keywords.md) in F# 4.1, so now you can use them as identifiers: -Keyword | Reason --|- -`method` | the F# community are happy with `member` to introduce methods -`constructor` | the F# community are happy with `new` to introduce constructors -`atomic` | this was related to the fad for transactional memory circa 2006. In F# this would now be a library-defined computation expression -`eager` | this is no longer needed, it was initially designed to be `let eager` to match a potential `let lazy` -`object` | there is no need to reserve this -`recursive` | F# is happy using `rec` -`functor` | If F# added parameterized modules, we would use `module M(args) = ...` -`measure` | There is no specific reason to reserve this these days, the `[]` attribute suffices -`volatile` | There is no specific reason to reserve this these days, the `[]` attribute suffices +| Keyword | Reason | +|---------------|---------------------------------------------------------------------------------------------------------------------| +| `method` | Use `member` to introduce methods. | +| `constructor` | Use `new` to introduce constructors. | +| `atomic` | Related to the fad for transactional memory circa 2006. This would now be a library-defined computation expression. | +| `eager` | No longer needed; it was initially designed to be `let eager` to match a potential `let lazy`. | +| `object` | No need to reserve this. | +| `recursive` | Use `rec`. | +| `functor` | If F# added parameterized modules, you'd use `module M(args) = ...`. | +| `measure` | The `[]` attribute suffices. | +| `volatile` | The `[]` attribute suffices. | ## See also diff --git a/docs/fsharp/language-reference/plaintext-formatting.md b/docs/fsharp/language-reference/plaintext-formatting.md index 949b1ee531587..1853f3a13f94a 100644 --- a/docs/fsharp/language-reference/plaintext-formatting.md +++ b/docs/fsharp/language-reference/plaintext-formatting.md @@ -96,12 +96,12 @@ to fill at least six characters. If width is `*`, then an extra integer argument Valid flags are: -| Flag | Effect | Remarks | -|:-------------------|:---------------|:-----------------------------| -| `0` | Add zeros instead of spaces to make up the required width | | -| `-` | Left justify the result within the specified width | | -| `+` | Add a `+` character if the number is positive (to match a `-` sign for negatives) | | -| space character | Add an extra space if the number is positive (to match a '-' sign for negatives) | +| Flag | Effect | +|:----------------|:----------------------------------------------------------------------------------| +| `0` | Add zeros instead of spaces to make up the required width | +| `-` | Left justify the result within the specified width | +| `+` | Add a `+` character if the number is positive (to match a `-` sign for negatives) | +| space character | Add an extra space if the number is positive (to match a '-' sign for negatives) | The printf `#` flag is invalid and a compile-time error will be reported if it is used. diff --git a/docs/fsharp/style-guide/component-design-guidelines.md b/docs/fsharp/style-guide/component-design-guidelines.md index 68c97802c01e1..f8ab19b497e16 100644 --- a/docs/fsharp/style-guide/component-design-guidelines.md +++ b/docs/fsharp/style-guide/component-design-guidelines.md @@ -66,9 +66,9 @@ The following table follows .NET naming and capitalization conventions. There ar | Construct | Case | Part | Examples | Notes | |-----------|------|------|----------|-------| -| Concrete types | PascalCase | Noun/ adjective | List, Double, Complex | Concrete types are structs, classes, enumerations, delegates, records, and unions. Though type names are traditionally lowercase in OCaml, F# has adopted the .NET naming scheme for types. +| Concrete types | PascalCase | Noun/ adjective | List, Double, Complex | Concrete types are structs, classes, enumerations, delegates, records, and unions. Though type names are traditionally lowercase in OCaml, F# has adopted the .NET naming scheme for types. | | DLLs | PascalCase | | Fabrikam.Core.dll | | -| Union tags | PascalCase | Noun | Some, Add, Success | Do not use a prefix in public APIs. Optionally use a prefix when internal, such as `type Teams = TAlpha | TBeta | TDelta.` | +| Union tags | PascalCase | Noun | Some, Add, Success | Do not use a prefix in public APIs. Optionally use a prefix when internal, such as "type Teams = TAlpha | TBeta | TDelta". | | Event | PascalCase | Verb | ValueChanged / ValueChanging | | | Exceptions | PascalCase | | WebException | Name should end with "Exception". | | Field | PascalCase | Noun | CurrentName | | @@ -76,9 +76,9 @@ The following table follows .NET naming and capitalization conventions. There ar | Method | PascalCase | Verb | ToString | | | Namespace | PascalCase | | Microsoft.FSharp.Core | Generally use `.[.]`, though drop the organization if the technology is independent of organization. | | Parameters | camelCase | Noun | typeName, transform, range | | -| let values (internal) | camelCase or PascalCase | Noun/ verb | getValue, myTable | +| let values (internal) | camelCase or PascalCase | Noun/ verb | getValue, myTable | | | let values (external) | camelCase or PascalCase | Noun/verb | List.map, Dates.Today | let-bound values are often public when following traditional functional design patterns. However, generally use PascalCase when the identifier can be used from other .NET languages. | -| Property | PascalCase | Noun/ adjective | IsEndOfFile, BackColor | Boolean properties generally use Is and Can and should be affirmative, as in IsEndOfFile, not IsNotEndOfFile. +| Property | PascalCase | Noun/ adjective | IsEndOfFile, BackColor | Boolean properties generally use Is and Can and should be affirmative, as in IsEndOfFile, not IsNotEndOfFile. | #### Avoid abbreviations diff --git a/docs/fundamentals/apicompat/diagnostic-ids.md b/docs/fundamentals/apicompat/diagnostic-ids.md index 145d6ac5dfcb6..cbf630eafe79f 100644 --- a/docs/fundamentals/apicompat/diagnostic-ids.md +++ b/docs/fundamentals/apicompat/diagnostic-ids.md @@ -41,7 +41,7 @@ This reference article lists all the error codes generated by package validation | CP0020 | The visibility of a member was expanded from one side to the other. | Change the member's visibility back to what it was previously. | | CP1001 | A matching assembly could not be found in the search directories. (Not applicable for package validation, only when using API Compat directly.) | Provide the search directory when loading matching assemblies using `AssemblySymbolLoader`. | | CP1002 | A reference assembly was not found when loading the assemblies to compare in the resolved directories for the current target framework. | Include the directory path where that assembly can be found using the following MSBuild item: ``. | -| CP1003 | There was no search directory provided for the target framework moniker that the package validation is running API Compat for. | Provide the search directory to find references for that target framework using the following MSBuild item: ``. +| CP1003 | There was no search directory provided for the target framework moniker that the package validation is running API Compat for. | Provide the search directory to find references for that target framework using the following MSBuild item: ``. | ## How to suppress diff --git a/docs/fundamentals/code-analysis/includes/excluded-symbol-names.md b/docs/fundamentals/code-analysis/includes/excluded-symbol-names.md index 0790b5b5fcf94..b696a71d9f808 100644 --- a/docs/fundamentals/code-analysis/includes/excluded-symbol-names.md +++ b/docs/fundamentals/code-analysis/includes/excluded-symbol-names.md @@ -17,6 +17,6 @@ Examples: | Option Value | Summary | | --- | --- | |`dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType` | Matches all symbols named `MyType`. | -|`dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType1|MyType2` | Matches all symbols named either `MyType1` or `MyType2`. | +|'dotnet_code_quality.CAXXXX.excluded_symbol_names = MyType1|MyType2' | Matches all symbols named either `MyType1` or `MyType2`. | |`dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS.MyType.MyMethod(ParamType)` | Matches specific method `MyMethod` with the specified fully qualified signature. | -|`dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS1.MyType1.MyMethod1(ParamType)|M:NS2.MyType2.MyMethod2(ParamType)` | Matches specific methods `MyMethod1` and `MyMethod2` with the respective fully qualified signatures. | +|'dotnet_code_quality.CAXXXX.excluded_symbol_names = M:NS1.MyType1.MyMethod1(ParamType)|M:NS2.MyType2.MyMethod2(ParamType)' | Matches specific methods `MyMethod1` and `MyMethod2` with the respective fully qualified signatures. | diff --git a/docs/fundamentals/code-analysis/includes/excluded-type-names-with-derived-types.md b/docs/fundamentals/code-analysis/includes/excluded-type-names-with-derived-types.md index 82cef972f47f4..9559f22bc41c5 100644 --- a/docs/fundamentals/code-analysis/includes/excluded-type-names-with-derived-types.md +++ b/docs/fundamentals/code-analysis/includes/excluded-type-names-with-derived-types.md @@ -16,6 +16,6 @@ Examples: | Option Value | Summary | | --- | --- | |`dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType` | Matches all types named `MyType` and all of their derived types. | -|`dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType1|MyType2` | Matches all types named either `MyType1` or `MyType2` and all of their derived types. | +|'dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = MyType1|MyType2' | Matches all types named either `MyType1` or `MyType2` and all of their derived types. | |`dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS.MyType` | Matches specific type `MyType` with given fully qualified name and all of its derived types. | -|`dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS1.MyType1|M:NS2.MyType2` | Matches specific types `MyType1` and `MyType2` with the respective fully qualified names, and all of their derived types. | +|'dotnet_code_quality.CAXXXX.excluded_type_names_with_derived_types = M:NS1.MyType1|M:NS2.MyType2' | Matches specific types `MyType1` and `MyType2` with the respective fully qualified names, and all of their derived types. | diff --git a/docs/fundamentals/code-analysis/quality-rules/ca1008.md b/docs/fundamentals/code-analysis/quality-rules/ca1008.md index 4e7a739c6ec89..7847810fd43be 100644 --- a/docs/fundamentals/code-analysis/quality-rules/ca1008.md +++ b/docs/fundamentals/code-analysis/quality-rules/ca1008.md @@ -16,13 +16,13 @@ dev_langs: --- # CA1008: Enums should have zero value -| Property | Value | -|-------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Rule ID** | CA1008 | -| **Title** | Enums should have zero value | -| **Category** | [Design](design-warnings.md) | +| Property | Value | +|--------------|------------------------------| +| **Rule ID** | CA1008 | +| **Title** | Enums should have zero value | +| **Category** | [Design](design-warnings.md) | | **Fix is breaking or non-breaking** | Non-breaking - When you're prompted to add a `None` value to a non-flag enumeration. Breaking - When you're prompted to rename or remove any enumeration values. | -| **Enabled by default in .NET 8** | No | +| **Enabled by default in .NET 8** | No | ## Cause @@ -81,7 +81,7 @@ In .NET 7 and later versions, you can configure other allowable names for a zero | Option value | Summary | | --- | --- | | `dotnet_code_quality.CA1008.additional_enum_none_names = Never` | Allows both `None` and `Never` | -| `dotnet_code_quality.CA1008.additional_enum_none_names = Never|Nothing` | Allows `None`, `Never`, and `Nothing` | +| 'dotnet_code_quality.CA1008.additional_enum_none_names = Never|Nothing' | Allows `None`, `Never`, and `Nothing` | ## Example diff --git a/docs/fundamentals/code-analysis/quality-rules/ca1031.md b/docs/fundamentals/code-analysis/quality-rules/ca1031.md index db2df1b216f47..c420e5be6f773 100644 --- a/docs/fundamentals/code-analysis/quality-rules/ca1031.md +++ b/docs/fundamentals/code-analysis/quality-rules/ca1031.md @@ -71,9 +71,9 @@ Examples: | Option value | Summary | | --- | --- | |`dotnet_code_quality.CA1031.disallowed_symbol_names = ExceptionType` | Matches all symbols named 'ExceptionType' in the compilation. | -|`dotnet_code_quality.CA1031.disallowed_symbol_names = ExceptionType1|ExceptionType2` | Matches all symbols named either 'ExceptionType1' or 'ExceptionType2' in the compilation. | +|'dotnet_code_quality.CA1031.disallowed_symbol_names = ExceptionType1|ExceptionType2' | Matches all symbols named either 'ExceptionType1' or 'ExceptionType2' in the compilation. | |`dotnet_code_quality.CA1031.disallowed_symbol_names = T:NS.ExceptionType` | Matches specific types named 'ExceptionType' with given fully qualified name. | -|`dotnet_code_quality.CA1031.disallowed_symbol_names = T:NS1.ExceptionType1|T:NS1.ExceptionType2` | Matches types named 'ExceptionType1' and 'ExceptionType2' with respective fully qualified names. | +|'dotnet_code_quality.CA1031.disallowed_symbol_names = T:NS1.ExceptionType1|T:NS1.ExceptionType2' | Matches types named 'ExceptionType1' and 'ExceptionType2' with respective fully qualified names. | You can configure these options for just this rule, for all rules it applies to, or for all rules in this category ([Design](design-warnings.md)) that it applies to. For more information, see [Code quality rule configuration options](../code-quality-rule-options.md). diff --git a/docs/fundamentals/code-analysis/quality-rules/ca1062.md b/docs/fundamentals/code-analysis/quality-rules/ca1062.md index ff37d3f52e180..fc5b242a9305d 100644 --- a/docs/fundamentals/code-analysis/quality-rules/ca1062.md +++ b/docs/fundamentals/code-analysis/quality-rules/ca1062.md @@ -111,9 +111,9 @@ Examples: | Option Value | Summary | | --- | --- | |`dotnet_code_quality.CA1062.null_check_validation_methods = Validate` | Matches all methods named `Validate` in the compilation. | -|`dotnet_code_quality.CA1062.null_check_validation_methods = Validate1|Validate2` | Matches all methods named either `Validate1` or `Validate2` in the compilation. | +|'dotnet_code_quality.CA1062.null_check_validation_methods = Validate1|Validate2' | Matches all methods named either `Validate1` or `Validate2` in the compilation. | |`dotnet_code_quality.CA1062.null_check_validation_methods = NS.MyType.Validate(ParamType)` | Matches specific method `Validate` with given fully qualified signature. | -|`dotnet_code_quality.CA1062.null_check_validation_methods = NS1.MyType1.Validate1(ParamType)|NS2.MyType2.Validate2(ParamType)` | Matches specific methods `Validate1` and `Validate2` with respective fully qualified signature. | +|'dotnet_code_quality.CA1062.null_check_validation_methods = NS1.MyType1.Validate1(ParamType)|NS2.MyType2.Validate2(ParamType)' | Matches specific methods `Validate1` and `Validate2` with respective fully qualified signature. | ## Example 1 diff --git a/docs/fundamentals/code-analysis/quality-rules/ca1501.md b/docs/fundamentals/code-analysis/quality-rules/ca1501.md index b635b7a19182a..263c95bba29b1 100644 --- a/docs/fundamentals/code-analysis/quality-rules/ca1501.md +++ b/docs/fundamentals/code-analysis/quality-rules/ca1501.md @@ -110,9 +110,9 @@ You can configure the rule to exclude certain types or namespaces from the inher | Option Value | Summary | | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dotnet_code_quality.CA1501.additional_inheritance_excluded_symbol_names = MyType` | Matches all types named `MyType` or whose containing namespace contains `MyType` (and all types from the `System` namespace) | -| `dotnet_code_quality.CA1501.additional_inheritance_excluded_symbol_names = MyType1|MyType2` | Matches all types named either `MyType1` or `MyType2` or whose containing namespace contains either `MyType1` or `MyType2` (and all types from the `System` namespace) | +| dotnet_code_quality.CA1501.additional_inheritance_excluded_symbol_names = MyType1|MyType2 | Matches all types named either `MyType1` or `MyType2` or whose containing namespace contains either `MyType1` or `MyType2` (and all types from the `System` namespace) | | `dotnet_code_quality.CA1501.additional_inheritance_excluded_symbol_names = T:NS.MyType` | Matches specific type `MyType` in the namespace `NS` (and all types from the `System` namespace) | -| `dotnet_code_quality.CA1501.additional_inheritance_excluded_symbol_names = T:NS1.MyType1|T:NS2.MyType2` | Matches specific types `MyType1` and `MyType2` with respective fully qualified names (and all types from the `System` namespace) | +| 'dotnet_code_quality.CA1501.additional_inheritance_excluded_symbol_names = T:NS1.MyType1|T:NS2.MyType2' | Matches specific types `MyType1` and `MyType2` with respective fully qualified names (and all types from the `System` namespace) | | `dotnet_code_quality.CA1501.additional_inheritance_excluded_symbol_names = N:NS` | Matches all types from the `NS` namespace (and all types from the `System` namespace) | | `dotnet_code_quality.CA1501.additional_inheritance_excluded_symbol_names = My*` | Matches all types whose name starts with `My` or whose containing namespace parts starts with `My` (and all types from the `System` namespace) | | `dotnet_code_quality.CA1501.additional_inheritance_excluded_symbol_names = T:NS.My*` | Matches all types whose name starts with `My` in the namespace `NS` (and all types from the `System` namespace) | diff --git a/docs/fundamentals/code-analysis/quality-rules/ca1710.md b/docs/fundamentals/code-analysis/quality-rules/ca1710.md index 375ca7e9bff41..5c71555dc1709 100644 --- a/docs/fundamentals/code-analysis/quality-rules/ca1710.md +++ b/docs/fundamentals/code-analysis/quality-rules/ca1710.md @@ -142,7 +142,7 @@ Examples: | Option Value | Summary | | --- | --- | |`dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class` | All types that inherit from 'MyClass' are required to have the 'Class' suffix. | -|`dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class|MyNamespace.IPath->Path` | All types that inherit from 'MyClass' are required to have the 'Class' suffix AND all types that implement 'MyNamespace.IPath' are required to have the 'Path' suffix. | +|'dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class|MyNamespace.IPath->Path' | All types that inherit from 'MyClass' are required to have the 'Class' suffix AND all types that implement 'MyNamespace.IPath' are required to have the 'Path' suffix. | |`dotnet_code_quality.CA1710.additional_required_suffixes = T:System.Data.IDataReader->{}` | Overrides built-in suffixes. In this case, all types that implement 'IDataReader' are no longer required to end in 'Collection'. | ## Related rules diff --git a/docs/fundamentals/code-analysis/quality-rules/ca2241.md b/docs/fundamentals/code-analysis/quality-rules/ca2241.md index c526347b28e68..e70c2d9ea56f5 100644 --- a/docs/fundamentals/code-analysis/quality-rules/ca2241.md +++ b/docs/fundamentals/code-analysis/quality-rules/ca2241.md @@ -68,9 +68,9 @@ Examples: | Option Value | Summary | | --- | --- | |`dotnet_code_quality.CA2241.additional_string_formatting_methods = MyFormat` | Matches all methods named `MyFormat` in the compilation. | -|`dotnet_code_quality.CA2241.additional_string_formatting_methods = MyFormat1|MyFormat2` | Matches all methods named either `MyFormat1` or `MyFormat2` in the compilation. | +|'dotnet_code_quality.CA2241.additional_string_formatting_methods = MyFormat1|MyFormat2' | Matches all methods named either `MyFormat1` or `MyFormat2` in the compilation. | |`dotnet_code_quality.CA2241.additional_string_formatting_methods = NS.MyType.MyFormat(ParamType)` | Matches specific method `MyFormat` with given fully qualified signature. | -|`dotnet_code_quality.CA2241.additional_string_formatting_methods = NS1.MyType1.MyFormat1(ParamType)|NS2.MyType2.MyFormat2(ParamType)` | Matches specific methods `MyFormat1` and `MyFormat2` with respective fully qualified signature. | +|'dotnet_code_quality.CA2241.additional_string_formatting_methods = NS1.MyType1.MyFormat1(ParamType)|NS2.MyType2.MyFormat2(ParamType)' | Matches specific methods `MyFormat1` and `MyFormat2` with respective fully qualified signature. | ### Determine additional string formatting methods automatically @@ -85,5 +85,4 @@ dotnet_code_quality.CA2241.try_determine_additional_string_formatting_methods_au The following example shows two violations of the rule. :::code language="vb" source="snippets/vb/all-rules/ca2241-provide-correct-arguments-to-formatting-methods_1.vb"::: - :::code language="csharp" source="snippets/csharp/all-rules/ca2241.cs" id="snippet1"::: diff --git a/docs/fundamentals/diagnostics/runtime-loader-binder-events.md b/docs/fundamentals/diagnostics/runtime-loader-binder-events.md index a872ac001149a..2f2c762b9d1ce 100644 --- a/docs/fundamentals/diagnostics/runtime-loader-binder-events.md +++ b/docs/fundamentals/diagnostics/runtime-loader-binder-events.md @@ -74,13 +74,13 @@ The events described in this article collect information relating to loading and ## ModuleDCStart_V2 event -|Keyword for raising the event|Event|Level| -|-----------------------------------|-----------|-----------| -|`LoaderKeyword` (0x8)|`DomainModuleLoad_V1`|Informational (4) +| Keyword for raising the event | Event | Level | +|-------------------------------|-----------------------|-------------------| +| `LoaderKeyword` (0x8) | `DomainModuleLoad_V1` | Informational (4) | -|Event|Event ID|Description -|-----------|--------------|-----------------| -|`ModuleDCStart_V2`|153|Enumerates modules during a start rundown.| +| Event | Event ID | Description | +|--------------------|----------|--------------------------------------------| +| `ModuleDCStart_V2` | 153 | Enumerates modules during a start rundown. | |Field name|Data type|Description| |----------------|---------------|-----------------| @@ -134,14 +134,14 @@ The events described in this article collect information relating to loading and |-----------|--------------|-----------------| |`AssemblyLoad_V1`|154|Raised when an assembly is loaded.| -|Field name|Data type|Description| -|----------------|---------------|-----------------| -|`AssemblyID`|`win:UInt64`|Unique ID for the assembly.| -|`AppDomainID`|`win:UInt64`|ID of the domain of this assembly.| -|`BindingID`|`win:UInt64`|ID that uniquely identifies the assembly binding.| +| Field name | Data type | Description | +|---------------|--------------|---------------------------------------------------| +| `AssemblyID` | `win:UInt64` | Unique ID for the assembly. | +| `AppDomainID` | `win:UInt64` | ID of the domain of this assembly. | +| `BindingID` | `win:UInt64` | ID that uniquely identifies the assembly binding. | |`AssemblyFlags`|`win:UInt32`|0x1: Domain neutral assembly.

0x2: Dynamic assembly.

0x4: Assembly has a native image.

0x8: Collectible assembly.| |`AssemblyName`|`win:UnicodeString`|Fully qualified assembly name.| -|`ClrInstanceID`|`win:UInt16`|Unique ID for the instance of CoreCLR. +|`ClrInstanceID`|`win:UInt16`|Unique ID for the instance of CoreCLR.| ## AssemblyUnload_V1 event @@ -183,13 +183,13 @@ The events described in this article collect information relating to loading and ## AssemblyLoadStart event -|Keyword for raising the event|Event|Level| -|-----------------------------------|-----------|-----------| -|`Binder` (0x4)|`AssemblyLoadStart`|Informational (4)| +| Keyword for raising the event | Event | Level | +|-------------------------------|---------------------|-------------------| +| `Binder` (0x4) | `AssemblyLoadStart` | Informational (4) | -|Event|Event ID|Description| -|-----------|--------------|-----------------| -|`AssemblyLoadStart`|290|An assembly load has been requested. +| Event | Event ID | Description | +|---------------------|----------|--------------------------------------| +| `AssemblyLoadStart` | 290 | An assembly load has been requested. | |Field name|Data type|Description| |----------------|---------------|-----------------| @@ -202,13 +202,13 @@ The events described in this article collect information relating to loading and ## AssemblyLoadStop event -|Keyword for raising the event|Event|Level| -|-----------------------------------|-----------|-----------| -|`Binder` (0x4)|`AssemblyLoadStart`|Informational (4)| +| Keyword for raising the event | Event | Level | +|-------------------------------|---------------------|-------------------| +| `Binder` (0x4) | `AssemblyLoadStart` | Informational (4) | -|Event|Event ID|Description| -|-----------|--------------|-----------------| -|`AssemblyLoadStart`|291|An assembly load has been requested. +| Event | Event ID | Description | +|---------------------|----------|--------------------------------------| +| `AssemblyLoadStart` | 291 | An assembly load has been requested. | |Field name|Data type|Description| |----------------|---------------|-----------------| @@ -225,18 +225,18 @@ The events described in this article collect information relating to loading and ## ResolutionAttempted event -|Keyword for raising the event|Level| -|-----------------------------------|-----------|-----------| -|`Binder` (0x4)|Informational (4)| +| Keyword for raising the event | Level | +|-------------------------------|-------------------| +| `Binder` (0x4) | Informational (4) | -|Event|Event ID|Description| -|-----------|--------------|-----------------| -|`ResolutionAttempted`|292|An assembly load has been requested. +| Event | Event ID | Description | +|-----------------------|----------|--------------------------------------| +| `ResolutionAttempted` | 292 | An assembly load has been requested. | -|Field name|Data type|Description| -|----------------|---------------|-----------------| -|`AssemblyName`|`win:UnicodeString`|Name of assembly name.| -|`Stage`|`win:UInt16`|The resolution stage.

0: Find in load.

1: Assembly Load Context

2: Application assemblies.

3: Default assembly load context fallback.

4: Resolve satellite assembly.

5: Assembly load context resolving.

6: AppDomain assembly resolving. +| Field name | Data type | Description | +|----------------|---------------------|------------------------| +| `AssemblyName` | `win:UnicodeString` | Name of assembly name. | +|`Stage`|`win:UInt16`|The resolution stage.

0: Find in load.

1: Assembly Load Context

2: Application assemblies.

3: Default assembly load context fallback.

4: Resolve satellite assembly.

5: Assembly load context resolving.

6: AppDomain assembly resolving.| |`AssemblyLoadContext`|`win:UnicodeString`|Load context of the assembly.| |`Result`|`win:UInt16`|The result of resolution attempt.

0: Success

1: Assembly NotFound

2: Incompatible Version

3: Mismatched Assembly Name

4: Failure

5: Exception| |`ResultAssemblyName`|`win:UnicodeString`|The name of assembly that was resolved.| diff --git a/docs/fundamentals/diagnostics/runtime-thread-events.md b/docs/fundamentals/diagnostics/runtime-thread-events.md index 4476664a451b4..2bc3e7ee9529c 100644 --- a/docs/fundamentals/diagnostics/runtime-thread-events.md +++ b/docs/fundamentals/diagnostics/runtime-thread-events.md @@ -20,25 +20,25 @@ The events described in this article collect information about worker and I/O th The following table shows the event information. -|Event|Event ID|Raised when| -|-----------------------------------|-----------|-| -|`IOThreadCreate_V1`|44|An I/O thread is created in the thread pool.| +| Event | Event ID | Raised when | +|---------------------|----------|----------------------------------------------| +| `IOThreadCreate_V1` | 44 | An I/O thread is created in the thread pool. | The following table shows the event data. -|Field name|Data type|Description| -|----------------|---------------|-----------------| -|`Count`|`win:UInt64`|Number of I/O threads, including the newly created thread.| -|`NumRetired`|`win:UInt64`|Number of retired worker threads.| -|`ClrInstanceID`|`win:UInt16`|Unique ID for the instance of CLR or CoreCLR.| +| Field name | Data type | Description | +|-----------------|--------------|------------------------------------------------------------| +| `Count` | `win:UInt64` | Number of I/O threads, including the newly created thread. | +| `NumRetired` | `win:UInt64` | Number of retired worker threads. | +| `ClrInstanceID` | `win:UInt16` | Unique ID for the instance of CLR or CoreCLR. | ## IOThreadTerminate_V1 event The following table shows the keyword and level -|Keyword for raising the event|Level -|-----------------------------------|----------- -|`ThreadingKeyword` (0x10000)|Informational (4) +| Keyword for raising the event | Level | +|-------------------------------|-------------------| +| `ThreadingKeyword` (0x10000) | Informational (4) | The following table shows the event information. @@ -226,9 +226,9 @@ The events described in this article collect information about worker and I/O th The following table shows the keyword and level. -|Keyword for raising the event|Level| -|-----------------------------------|-----------| -|`ThreadingKeyword` (0x10000)|Verbose (5) +| Keyword for raising the event | Level | +|-------------------------------|-------------| +| `ThreadingKeyword` (0x10000) | Verbose (5) | The following table shows the event information. @@ -256,51 +256,51 @@ The events described in this article collect information about worker and I/O th The following table shows the keyword and level. -|Keyword for raising the event|Level| -|-----------------------------------|-----------| -|`ThreadingKeyword` (0x10000)|Verbose (5) +| Keyword for raising the event | Level | +|-------------------------------|-------------| +| `ThreadingKeyword` (0x10000) | Verbose (5) | The following table shows the event information. -|Event|Event ID|Description| -|-----------|--------------|-----------------| -|`ThreadPoolEnqueue`|61|A work item was enqueued in the thread pool queue.| +| Event | Event ID | Description | +|---------------------|----------|----------------------------------------------------| +| `ThreadPoolEnqueue` | 61 | A work item was enqueued in the thread pool queue. | The following table shows the event data -|Field name|Data type|Description| -|----------------|---------------|-----------------| -|`WorkID`|`win:Pointer`|Pointer to the work request.| -|`ClrInstanceID`|`win:UInt16`|Unique ID for the instance of CoreCLR.| +| Field name | Data type | Description | +|-----------------|---------------|----------------------------------------| +| `WorkID` | `win:Pointer` | Pointer to the work request. | +| `ClrInstanceID` | `win:UInt16` | Unique ID for the instance of CoreCLR. | ## ThreadPoolDequeue event The following table shows the keyword and level. -|Keyword for raising the event|Level| -|-----------------------------------|-----------| -|`ThreadingKeyword` (0x10000)|Verbose (5) +| Keyword for raising the event | Level | +|-------------------------------|-------------| +| `ThreadingKeyword` (0x10000) | Verbose (5) | The following table shows the event information. -|Event|Event ID|Description| -|-----------|--------------|-----------------| -|`ThreadPoolDequeue`|62|A work item was dequeued from the thread pool queue.| +| Event | Event ID | Description | +|---------------------|----------|------------------------------------------------------| +| `ThreadPoolDequeue` | 62 | A work item was dequeued from the thread pool queue. | The following table shows the event data -|Field name|Data type|Description| -|----------------|---------------|-----------------| -|`WorkID`|`win:Pointer`|Pointer to the work request.| -|`ClrInstanceID`|`win:UInt16`|Unique ID for the instance of CoreCLR.| +| Field name | Data type | Description | +|-----------------|---------------|----------------------------------------| +| `WorkID` | `win:Pointer` | Pointer to the work request. | +| `ClrInstanceID` | `win:UInt16` | Unique ID for the instance of CoreCLR. | ## ThreadPoolIOEnqueue event The following table shows the keyword and level. -|Keyword for raising the event|Level| -|-----------------------------------|-----------| -|`ThreadingKeyword` (0x10000)|Verbose (5) +| Keyword for raising the event | Level | +|-------------------------------|-------------| +| `ThreadingKeyword` (0x10000) | Verbose (5) | The following table shows the event information. @@ -321,9 +321,9 @@ The events described in this article collect information about worker and I/O th The following table shows the keyword and level. -|Keyword for raising the event|Level| -|-----------------------------------|-----------| -|`ThreadingKeyword` (0x10000)|Verbose (5) +| Keyword for raising the event | Level | +|-------------------------------|-------------| +| `ThreadingKeyword` (0x10000) | Verbose (5) | The following table shows the event information. @@ -344,9 +344,9 @@ The events described in this article collect information about worker and I/O th The following table shows the keyword and level. -|Keyword for raising the event|Level| -|-----------------------------------|-----------| -|`ThreadingKeyword` (0x10000)|Verbose (5)| +| Keyword for raising the event | Level | +|-------------------------------|-------------| +| `ThreadingKeyword` (0x10000) | Verbose (5) | The following table shows the event information. @@ -366,40 +366,40 @@ The events described in this article collect information about worker and I/O th The following table shows the keywords and level. -|Keyword for raising the event|Level| -|-----------------------------------|-----------| -|`ThreadingKeyword` (0x10000)|Informational (4)| +| Keyword for raising the event | Level | +|-------------------------------|-------------------| +| `ThreadingKeyword` (0x10000) | Informational (4) | The following table shows the event information. -|Event|Event ID|Description| -|----------------|---------------|-----------------| -|`ThreadCreating`|70|Thread has been created.| +| Event | Event ID | Description | +|------------------|----------|--------------------------| +| `ThreadCreating` | 70 | Thread has been created. | The following table shows the event data. -|Field name|Data type|Description| -|----------------|---------------|-----------------| -|`ID`|`win:Pointer`|Thread ID| -|`ClrInstanceID`|`win:UInt16`|Unique ID for the instance of CoreCLR.| +| Field name | Data type | Description | +|-----------------|---------------|----------------------------------------| +| `ID` | `win:Pointer` | Thread ID | +| `ClrInstanceID` | `win:UInt16` | Unique ID for the instance of CoreCLR. | ## ThreadRunning event - The following table shows the keywords and level. +The following table shows the keywords and level. -|Keyword for raising the event|Level| -|-----------------------------------|-----------| -|`ThreadingKeyword` (0x10000)|Informational (4)| +| Keyword for raising the event | Level | +|-------------------------------|-------------------| +| `ThreadingKeyword` (0x10000) | Informational (4) | - The following table shows the event information. +The following table shows the event information. -|Event|Event ID|Description| -|----------------|---------------|-----------------| -|`ThreadRunning`|71|Thread has started running.| +| Event | Event ID | Description | +|-----------------|----------|-----------------------------| +| `ThreadRunning` | 71 | Thread has started running. | - The following table shows the event data. +The following table shows the event data. -|Field name|Data type|Description| -|----------------|---------------|-----------------| -|`ID`|`win:Pointer`|Thread ID| -|`ClrInstanceID`|`win:UInt16`|Unique ID for the instance of CoreCLR.| +| Field name | Data type | Description | +|-----------------|---------------|----------------------------------------| +| `ID` | `win:Pointer` | Thread ID | +| `ClrInstanceID` | `win:UInt16` | Unique ID for the instance of CoreCLR. | diff --git a/docs/fundamentals/diagnostics/runtime-type-events.md b/docs/fundamentals/diagnostics/runtime-type-events.md index 2a844a41a91c6..cf30ecb27699c 100644 --- a/docs/fundamentals/diagnostics/runtime-type-events.md +++ b/docs/fundamentals/diagnostics/runtime-type-events.md @@ -13,9 +13,9 @@ The events described in this article collect information relating to loading typ ## TypeLoadStart Event -|Keyword for raising the event|Event|Level| -|-----------------------------------|-----------|-----------| -|`TypeDiagnosticKeyword` (0x8000000000)|Informational (4)| +| Keyword for raising the event | Event | Level | +|----------------------------------------|-----------------|-------------------| +| `TypeDiagnosticKeyword` (0x8000000000) | `TypeLoadStart` | Informational (4) | |Event|Event ID|Description| |-----------|--------------|-----------------| diff --git a/docs/fundamentals/runtime-libraries/system-text-encoding.md b/docs/fundamentals/runtime-libraries/system-text-encoding.md index ea22d18775ba9..5cf5a4598ff84 100644 --- a/docs/fundamentals/runtime-libraries/system-text-encoding.md +++ b/docs/fundamentals/runtime-libraries/system-text-encoding.md @@ -84,7 +84,7 @@ The following table lists the encodings supported by .NET. It lists each encodin |1201|unicodeFFFE|Unicode (Big endian)|✓|✓|✓| |1250|windows-1250|Central European (Windows)|||| |1251|windows-1251|Cyrillic (Windows)|||| -|1252|Windows-1252|Western European (Windows)|✓|||| +|1252|Windows-1252|Western European (Windows)|✓||| |1253|windows-1253|Greek (Windows)|||| |1254|windows-1254|Turkish (Windows)|||| |1255|windows-1255|Hebrew (Windows)|||| diff --git a/docs/fundamentals/syslib-diagnostics/syslib0007.md b/docs/fundamentals/syslib-diagnostics/syslib0007.md index e485da440229f..1a7689ad49de2 100644 --- a/docs/fundamentals/syslib-diagnostics/syslib0007.md +++ b/docs/fundamentals/syslib-diagnostics/syslib0007.md @@ -25,7 +25,7 @@ The cryptographic configuration system in .NET Framework doesn't allow for prope | | | The SHA-1 algorithm is considered broken. Consider using a stronger algorithm if possible. Consult your security advisor for further guidance. | | | | The HMACSHA1 algorithm is discouraged for most modern applications. Consider using a stronger algorithm if possible. Consult your security advisor for further guidance. | | | | The HMACSHA1 algorithm is discouraged for most modern applications. Consider using a stronger algorithm if possible. Consult your security advisor for further guidance. | - | | | + | | | | ## Suppress a warning diff --git a/docs/iot/tutorials/adc.md b/docs/iot/tutorials/adc.md index 932a91bab255a..b581fe27cca05 100644 --- a/docs/iot/tutorials/adc.md +++ b/docs/iot/tutorials/adc.md @@ -53,8 +53,7 @@ Refer to the following pinout diagrams as needed: | MCP3008 | Raspberry Pi GPIO | |----------|-------------------| -| :::image type="content" source="../media/mcp3008-diagram-thumb.png" alt-text="A diagram showing the pinout of the MCP3008" lightbox="../media/mcp3008-diagram.png"::: | :::image type="content" source="../media/gpio-pinout-diagram-thumb.png" alt-text="A diagram showing the pinout of the Raspberry Pi GPIO header. Image courtesy Raspberry Pi Foundation." lightbox="../media/gpio-pinout-diagram.png":::
[Image courtesy Raspberry Pi Foundation](https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header). - | +| :::image type="content" source="../media/mcp3008-diagram-thumb.png" alt-text="A diagram showing the pinout of the MCP3008" lightbox="../media/mcp3008-diagram.png"::: | :::image type="content" source="../media/gpio-pinout-diagram-thumb.png" alt-text="A diagram showing the pinout of the Raspberry Pi GPIO header. Image courtesy Raspberry Pi Foundation." lightbox="../media/gpio-pinout-diagram.png":::
[Image courtesy Raspberry Pi Foundation](https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header). | [!INCLUDE [gpio-breakout](../includes/gpio-breakout.md)] diff --git a/docs/iot/tutorials/lcd-display.md b/docs/iot/tutorials/lcd-display.md index b70a863515c8b..ba1422d2da081 100644 --- a/docs/iot/tutorials/lcd-display.md +++ b/docs/iot/tutorials/lcd-display.md @@ -46,8 +46,7 @@ Refer to the following figures as needed: | I2C interface (back of display) | Raspberry Pi GPIO | |---------------------------------|-------------------| -| :::image type="content" source="../media/character-display-i2c-thumb.png" alt-text="An image of the back of the character display showing the I2C GPIO expander." lightbox="../media/character-display-i2c.png"::: | :::image type="content" source="../media/gpio-pinout-diagram-thumb.png" alt-text="A diagram showing the pinout of the Raspberry Pi GPIO header. Image courtesy Raspberry Pi Foundation." lightbox="../media/gpio-pinout-diagram.png":::
[Image courtesy Raspberry Pi Foundation](https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header). - | +| :::image type="content" source="../media/character-display-i2c-thumb.png" alt-text="An image of the back of the character display showing the I2C GPIO expander." lightbox="../media/character-display-i2c.png"::: | :::image type="content" source="../media/gpio-pinout-diagram-thumb.png" alt-text="A diagram showing the pinout of the Raspberry Pi GPIO header. Image courtesy Raspberry Pi Foundation." lightbox="../media/gpio-pinout-diagram.png":::
[Image courtesy Raspberry Pi Foundation](https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header). | [!INCLUDE [gpio-breakout](../includes/gpio-breakout.md)] diff --git a/docs/machine-learning/how-to-guides/explain-machine-learning-model-permutation-feature-importance-ml-net.md b/docs/machine-learning/how-to-guides/explain-machine-learning-model-permutation-feature-importance-ml-net.md index 5d4e8d0e72536..a2da97417845f 100644 --- a/docs/machine-learning/how-to-guides/explain-machine-learning-model-permutation-feature-importance-ml-net.md +++ b/docs/machine-learning/how-to-guides/explain-machine-learning-model-permutation-feature-importance-ml-net.md @@ -23,21 +23,21 @@ Additionally, by highlighting the most important features, model builders can fo The features in the dataset being used for this sample are in columns 1-12. The goal is to predict `Price`. -| Column | Feature | Description -| --- | --- | --- | -| 1 | CrimeRate | Per capita crime rate -| 2 | ResidentialZones | Residential zones in town -| 3 | CommercialZones | Non-residential zones in town -| 4 | NearWater | Proximity to body of water -| 5 | ToxicWasteLevels | Toxicity levels (PPM) -| 6 | AverageRoomNumber | Average number of rooms in house -| 7 | HomeAge | Age of home -| 8 | BusinessCenterDistance | Distance to nearest business district -| 9 | HighwayAccess | Proximity to highways -| 10 | TaxRate | Property tax rate -| 11 | StudentTeacherRatio | Ratio of students to teachers -| 12 | PercentPopulationBelowPoverty | Percent of population living below poverty -| 13 | Price | Price of the home +| Column | Feature | Description | +|--------|-------------------------------|--------------------------------------------| +| 1 | CrimeRate | Per capita crime rate | +| 2 | ResidentialZones | Residential zones in town | +| 3 | CommercialZones | Non-residential zones in town | +| 4 | NearWater | Proximity to body of water | +| 5 | ToxicWasteLevels | Toxicity levels (PPM) | +| 6 | AverageRoomNumber | Average number of rooms in house | +| 7 | HomeAge | Age of home | +| 8 | BusinessCenterDistance | Distance to nearest business district | +| 9 | HighwayAccess | Proximity to highways | +| 10 | TaxRate | Property tax rate | +| 11 | StudentTeacherRatio | Ratio of students to teachers | +| 12 | PercentPopulationBelowPoverty | Percent of population living below poverty | +| 13 | Price | Price of the home | A sample of the dataset is shown below: @@ -153,20 +153,20 @@ foreach (var feature in featureImportanceMetrics) Printing the values for each of the features in `featureImportanceMetrics` would generate output similar to that below. Keep in mind that you should expect to see different results because these values vary based on the data that they are given. -| Feature | Change to R-Squared | -|:--|:--:| -HighwayAccess | -0.042731 -StudentTeacherRatio | -0.012730 -BusinessCenterDistance| -0.010491 -TaxRate | -0.008545 -AverageRoomNumber | -0.003949 -CrimeRate | -0.003665 -CommercialZones | 0.002749 -HomeAge | -0.002426 -ResidentialZones | -0.002319 -NearWater | 0.000203 -PercentPopulationLivingBelowPoverty| 0.000031 -ToxicWasteLevels | -0.000019 +| Feature | Change to R-Squared | +|:------------------------------------|:-------------------:| +| HighwayAccess | -0.042731 | +| StudentTeacherRatio | -0.012730 | +| BusinessCenterDistance | -0.010491 | +| TaxRate | -0.008545 | +| AverageRoomNumber | -0.003949 | +| CrimeRate | -0.003665 | +| CommercialZones | 0.002749 | +| HomeAge | -0.002426 | +| ResidentialZones | -0.002319 | +| NearWater | 0.000203 | +| PercentPopulationLivingBelowPoverty | 0.000031 | +| ToxicWasteLevels | -0.000019 | Taking a look at the five most important features for this dataset, the price of a house predicted by this model is influenced by its proximity to highways, student teacher ratio of schools in the area, proximity to major employment centers, property tax rate and average number of rooms in the home. diff --git a/docs/machine-learning/how-to-guides/how-to-use-the-automl-api.md b/docs/machine-learning/how-to-guides/how-to-use-the-automl-api.md index 08bc99040fdbe..f0ad0f01112d1 100644 --- a/docs/machine-learning/how-to-guides/how-to-use-the-automl-api.md +++ b/docs/machine-learning/how-to-guides/how-to-use-the-automl-api.md @@ -39,11 +39,11 @@ AutoML provides several defaults for quickly training machine learning models. I Given a dataset stored in a comma-separated file called *taxi-fare-train.csv* that looks like the following: -| vendor_id | rate_code | passenger_count | trip_time_in_secs | trip_distance|payment_type | fare_amount | -|---|---|---|---|---|---|---| -CMT|1|1|1271|3.8|CRD|17.5 -CMT|1|1|474|1.5|CRD|8 -CMT|1|1|637|1.4|CRD|8.5 +| vendor_id | rate_code | passenger_count | trip_time_in_secs | trip_distance | payment_type | fare_amount | +|-----------|-----------|-----------------|-------------------|---------------|--------------|-------------| +| CMT | 1 | 1 | 1271 | 3.8 | CRD | 17.5 | +| CMT | 1 | 1 | 474 | 1.5 | CRD | 8 | +| CMT | 1 | 1 | 637 | 1.4 | CRD | 8.5 | ### Load your data diff --git a/docs/machine-learning/how-to-guides/prepare-data-ml-net.md b/docs/machine-learning/how-to-guides/prepare-data-ml-net.md index ce0adf7ef95ac..a5e2425d31199 100644 --- a/docs/machine-learning/how-to-guides/prepare-data-ml-net.md +++ b/docs/machine-learning/how-to-guides/prepare-data-ml-net.md @@ -253,12 +253,12 @@ The transforms used to perform key value mapping are [MapValueToKey](xref:Micros One hot encoding takes a finite set of values and maps them onto integers whose binary representation has a single `1` value in unique positions in the string. One hot encoding can be the best choice if there is no implicit ordering of the categorical data. The following table shows an example with zip codes as raw values. -|Raw value|One hot encoded value| -|---------|---------------------| -|98052|00...01| -|98100|00...10| -|...|...| -|98109|10...00| +| Raw value | One hot encoded value | +|-----------|-----------------------| +| 98052 | 00...01 | +| 98100 | 00...10 | +| ... | ... | +| 98109 | 10...00 | The transform to convert categorical data to one-hot encoded numbers is [`OneHotEncoding`](xref:Microsoft.ML.CategoricalCatalog.OneHotEncoding%2A). @@ -328,11 +328,11 @@ Using the first entry as an example, the following is a detailed description of **Original Text: This is a good product** -|Transform | Description | Result -|--|--|--| -|1. NormalizeText | Converts all letters to lowercase by default | this is a good product -|2. TokenizeWords | Splits string into individual words | ["this","is","a","good","product"] -|3. RemoveDefaultStopWords | Removes stop words like *is* and *a*. | ["good","product"] -|4. MapValueToKey | Maps the values to keys (categories) based on the input data | [1,2] -|5. ProduceNGrams | Transforms text into sequence of consecutive words | [1,1,1,0,0] -|6. NormalizeLpNorm | Scale inputs by their lp-norm | [ 0.577350529, 0.577350529, 0.577350529, 0, 0 ] +| Transform | Description | Result | +|---------------------------|----------------------------------------------|------------------------------------| +| 1. NormalizeText | Converts all letters to lowercase by default | this is a good product | +| 2. TokenizeWords | Splits string into individual words | ["this","is","a","good","product"] | +| 3. RemoveDefaultStopWords | Removes stop words like *is* and *a*. | ["good","product"] | +|4. MapValueToKey | Maps the values to keys (categories) based on the input data | [1,2] | +|5. ProduceNGrams | Transforms text into sequence of consecutive words | [1,1,1,0,0] | +|6. NormalizeLpNorm | Scale inputs by their lp-norm | [ 0.577350529, 0.577350529, 0.577350529, 0, 0 ] | diff --git a/docs/machine-learning/resources/metrics.md b/docs/machine-learning/resources/metrics.md index 252b79cac03ef..418c98777e1d7 100644 --- a/docs/machine-learning/resources/metrics.md +++ b/docs/machine-learning/resources/metrics.md @@ -73,23 +73,23 @@ For further details on regression metrics, read the following articles: | Metric | Description | Look for | |----------|-----------------------|-----------| -|**Average Distance**|Average of the distance between data points and the center of their assigned cluster. The average distance is a measure of proximity of the data points to cluster centroids. It's a measure of how 'tight' the cluster is.|Values closer to **0** are better. The closer to zero the average distance is, the more clustered the data is. Note though, that this metric will decrease if the number of clusters is increased, and in the extreme case (where each distinct data point is its own cluster) it will be equal to zero. +|**Average Distance**|Average of the distance between data points and the center of their assigned cluster. The average distance is a measure of proximity of the data points to cluster centroids. It's a measure of how 'tight' the cluster is.|Values closer to **0** are better. The closer to zero the average distance is, the more clustered the data is. Note though, that this metric will decrease if the number of clusters is increased, and in the extreme case (where each distinct data point is its own cluster) it will be equal to zero.| |**Davies Bouldin Index**|The average ratio of within-cluster distances to between-cluster distances. The tighter the cluster, and the further apart the clusters are, the lower this value is.|Values closer to **0** are better. Clusters that are farther apart and less dispersed will result in a better score.| -|**Normalized Mutual Information**|Can be used when the training data used to train the clustering model also comes with ground truth labels (that is, supervised clustering). The Normalized Mutual Information metric measures whether similar data points get assigned to the same cluster and disparate data points get assigned to different clusters. Normalized mutual information is a value between 0 and 1|Values closer to **1** are better| +|**Normalized Mutual Information**|Can be used when the training data used to train the clustering model also comes with ground truth labels (that is, supervised clustering). The Normalized Mutual Information metric measures whether similar data points get assigned to the same cluster and disparate data points get assigned to different clusters. Normalized mutual information is a value between 0 and 1.|Values closer to **1** are better.| ## Evaluation metrics for Ranking | Metric | Description | Look for | |----------|-----------------------|-----------| -|**Discounted Cumulative Gains**|Discounted cumulative gain (DCG) is a measure of ranking quality. It is derived from two assumptions. One: Highly relevant items are more useful when appearing higher in ranking order. Two: Usefulness tracks relevance that is, the higher the relevance, the more useful an item. Discounted cumulative gain is calculated for a particular position in the ranking order. It sums the relevance grading divided by the logarithm of the ranking index up to the position of interest. It is calculated using $\sum_{i=0}^{p} \frac {rel_i} {\log_{e}{i+1}}$ Relevance gradings are provided to a ranking training algorithm as ground truth labels. One DCG value is provided for each position in the ranking table, hence the name Discounted Cumulative **Gains**. |**Higher values are better**| -|**Normalized Discounted Cumulative Gains**|Normalizing DCG allows the metric to be compared for ranking lists of different lengths|**Values closer to 1 are better**| +|**Discounted Cumulative Gains**|Discounted cumulative gain (DCG) is a measure of ranking quality. It is derived from two assumptions. One: Highly relevant items are more useful when appearing higher in ranking order. Two: Usefulness tracks relevance that is, the higher the relevance, the more useful an item. Discounted cumulative gain is calculated for a particular position in the ranking order. It sums the relevance grading divided by the logarithm of the ranking index up to the position of interest. It is calculated using $\sum_{i=0}^{p} \frac {rel_i} {\log_{e}{i+1}}$ Relevance gradings are provided to a ranking training algorithm as ground truth labels. One DCG value is provided for each position in the ranking table, hence the name Discounted Cumulative **Gains**. |**Higher values are better.**| +|**Normalized Discounted Cumulative Gains**|Normalizing DCG allows the metric to be compared for ranking lists of different lengths.|**Values closer to 1 are better.**| ## Evaluation metrics for Anomaly Detection | Metric | Description | Look for | |----------|-----------------------|-----------| -|**Area Under ROC Curve**|Area under the receiver operator curve measures how well the model separates anomalous and usual data points.|**Values closer to 1 are better**. Only values greater than 0.5 demonstrate effectiveness of the model. Values of 0.5 or below indicate that the model is no better than randomly allocating the inputs to anomalous and usual categories| -|**Detection Rate At False Positive Count**|Detection rate at false positive count is the ratio of the number of correctly identified anomalies to the total number of anomalies in a test set, indexed by each false positive. That is, there is a value for detection rate at false positive count for each false positive item.|**Values closer to 1 are better**. If there are no false positives, then this value is 1| +|**Area Under ROC Curve**|Area under the receiver operator curve measures how well the model separates anomalous and usual data points.|**Values closer to 1 are better**. Only values greater than 0.5 demonstrate effectiveness of the model. Values of 0.5 or below indicate that the model is no better than randomly allocating the inputs to anomalous and usual categories.| +|**Detection Rate At False Positive Count**|Detection rate at false positive count is the ratio of the number of correctly identified anomalies to the total number of anomalies in a test set, indexed by each false positive. That is, there is a value for detection rate at false positive count for each false positive item.|**Values closer to 1 are better**. If there are no false positives, then this value is 1.| ## Evaluation metrics for sentence similarity diff --git a/docs/machine-learning/resources/transforms.md b/docs/machine-learning/resources/transforms.md index a64a51e0f2ef2..cfae5d8bc0cad 100644 --- a/docs/machine-learning/resources/transforms.md +++ b/docs/machine-learning/resources/transforms.md @@ -122,7 +122,7 @@ Other data transformations don't require training data. For example: the | Map each input vector onto a lower dimensional feature space, where inner products approximate a kernel function, so that the features can be used as inputs to the linear algorithms | No | -| | Reduce the dimensions of the input feature vector by applying the Principal Component Analysis algorithm | +| | Reduce the dimensions of the input feature vector by applying the Principal Component Analysis algorithm | | ## Explainability transformations diff --git a/docs/machine-learning/tutorials/sentiment-analysis-model-builder.md b/docs/machine-learning/tutorials/sentiment-analysis-model-builder.md index 121a2f004dff1..da5f718606b21 100644 --- a/docs/machine-learning/tutorials/sentiment-analysis-model-builder.md +++ b/docs/machine-learning/tutorials/sentiment-analysis-model-builder.md @@ -48,11 +48,11 @@ Download [Wikipedia detox dataset](https://raw.githubusercontent.com/dotnet/mach Each row in the *wikipedia-detox-250-line-data.tsv* dataset represents a different review left by a user on Wikipedia. The first column represents the sentiment of the text (0 is non-toxic, 1 is toxic), and the second column represents the comment left by the user. The columns are separated by tabs. The data looks like the following: -| Sentiment | SentimentText | -| :---: | :---: | -1 | ==RUDE== Dude, you are rude upload that carl picture back, or else. -1 | == OK! == IM GOING TO VANDALIZE WILD ONES WIKI THEN!!! -0 | I hope this helps. +| Sentiment | SentimentText | +|:---------:|:-------------------------------------------------------------------:| +| 1 | ==RUDE== Dude, you are rude upload that carl picture back, or else. | +| 1 | == OK! == IM GOING TO VANDALIZE WILD ONES WIKI THEN!!! | +| 0 | I hope this helps. | ## Create a Model Builder config file diff --git a/docs/standard/base-types/regular-expression-example-scanning-for-hrefs.md b/docs/standard/base-types/regular-expression-example-scanning-for-hrefs.md index 553369662c569..e3a47bb9b1981 100644 --- a/docs/standard/base-types/regular-expression-example-scanning-for-hrefs.md +++ b/docs/standard/base-types/regular-expression-example-scanning-for-hrefs.md @@ -42,7 +42,7 @@ The regular expression pattern `href\s*=\s*(?:["'](?<1>[^"']*)["']|(?<1>[^>\s]+) | `\s*` | Match zero or more white-space characters. | | `(?:` | Start a non-capturing group. | | `["'](?<1>[^"']*)["']` | Match a quotation mark or apostrophe, followed by a capturing group that matches any character other than a quotation mark or apostrophe, followed by a quotation mark or apostrophe. The group named `1` is included in this pattern. | -| `|` | Boolean OR that matches either the previous expression or the next expression. | +| | | Boolean OR that matches either the previous expression or the next expression. | | `(?<1>[^>\s]+)` | A capturing group that uses a negated set to match any character other than a greater-than sign or a whitespace character. The group named `1` is included in this pattern.| | `)` | End the non-capturing group. | diff --git a/docs/standard/base-types/regular-expression-language-quick-reference.md b/docs/standard/base-types/regular-expression-language-quick-reference.md index d0ca1746a1b19..63c018117af1f 100644 --- a/docs/standard/base-types/regular-expression-language-quick-reference.md +++ b/docs/standard/base-types/regular-expression-language-quick-reference.md @@ -96,19 +96,19 @@ Grouping constructs delineate subexpressions of a regular expression and typical |`(?!` *subexpression* `)`|Zero-width negative lookahead assertion.|`\b\w+\b(?!.+and.+)`|`"and"`, `"some"`, `"mice"`
in
`"cats, dogs and some mice."`| |`(?<=` *subexpression* `)`|Zero-width positive lookbehind assertion.|`\b\w+\b(?<=.+and.+)`

———————————

`\b\w+\b(?<=.+and.*)`|`"some"`, `"mice"`
in
`"cats, dogs and some mice."`
————————————
`"and"`, `"some"`, `"mice"`
in
`"cats, dogs and some mice."`| |`(?
———————————

`\b\w+\b(?in
`"cats, dogs and some mice."`
————————————
`"cats"`, `"dogs"`
in
`"cats, dogs and some mice."`| -|`(?>` *subexpression* `)`|Atomic group.|`(?>a|ab)c`|`"ac"` in`"ac"`

_nothing_ in`"abc"`| +|`(?>` *subexpression* `)`|Atomic group.|'(?>a|ab)c|`"ac"` in`"ac"`

_nothing_ in`"abc"`| ### Lookarounds at a glance When the regular expression engine hits a **lookaround expression**, it takes a substring reaching from the current position to the start (lookbehind) or end (lookahead) of the original string, and then runs on that substring using the lookaround pattern. Success of this subexpression's result is then determined by whether it's a positive or negative assertion. -| Lookaround | Name | Function | -| - | - | - | -`(?=check)` | Positive Lookahead | Asserts that what immediately follows the current position in the string is "check" -`(?<=check)` | Positive Lookbehind | Asserts that what immediately precedes the current position in the string is "check" -`(?!check)` | Negative Lookahead | Asserts that what immediately follows the current position in the string is not "check" -`(? [!NOTE] > The Foreign Keys keyword was added in version 3.0. -| Value | Description -| ------- | --- | -| True | Sends `PRAGMA foreign_keys = 1` immediately after opening the connection. -| False | Sends `PRAGMA foreign_keys = 0` immediately after opening the connection. -| (empty) | Doesn't send `PRAGMA foreign_keys`. This is the default. | +| Value | Description | +|---------|---------------------------------------------------------------------------| +| True | Sends `PRAGMA foreign_keys = 1` immediately after opening the connection. | +| False | Sends `PRAGMA foreign_keys = 0` immediately after opening the connection. | +| (empty) | Doesn't send `PRAGMA foreign_keys`. This is the default. | -There's no need to enable foreign keys if, like in e_sqlite3, SQLITE_DEFAULT_FOREIGN_KEYS was used to compile the native +There's no need to enable foreign keys if, like in e_sqlite3, `SQLITE_DEFAULT_FOREIGN_KEYS` was used to compile the native SQLite library. ### Recursive Triggers diff --git a/docs/standard/exceptions/exception-class-and-properties.md b/docs/standard/exceptions/exception-class-and-properties.md index e5b3ae76e6ea5..6a257a3716158 100644 --- a/docs/standard/exceptions/exception-class-and-properties.md +++ b/docs/standard/exceptions/exception-class-and-properties.md @@ -22,7 +22,7 @@ The class has the following properties that help make un | | An that holds arbitrary data in key-value pairs. | | | Can hold a URL (or URN) to a help file that provides extensive information about the cause of an exception. | | | This property can be used to create and preserve a series of exceptions during exception handling. You can use it to create a new exception that contains previously caught exceptions. The original exception can be captured by the second exception in the property, allowing code that handles the second exception to examine the additional information. For example, suppose you have a method that receives an argument that's improperly formatted. The code tries to read the argument, but an exception is thrown. The method catches the exception and throws a . To improve the caller's ability to determine the reason an exception is thrown, it is sometimes desirable for a method to catch an exception thrown by a helper routine and then throw an exception more indicative of the error that has occurred. A new and more meaningful exception can be created, where the inner exception reference can be set to the original exception. This more meaningful exception can then be thrown to the caller. Note that with this functionality, you can create a series of linked exceptions that ends with the exception that was thrown first. | -| | Provides details about the cause of an exception. +| | Provides details about the cause of an exception. | | | Gets or sets the name of the application or the object that causes the error. | | | Contains a stack trace that can be used to determine where an error occurred. The stack trace includes the source file name and program line number if debugging information is available. | diff --git a/docs/standard/generics/math.md b/docs/standard/generics/math.md index 227379fe4847b..fbcb8bf10b323 100644 --- a/docs/standard/generics/math.md +++ b/docs/standard/generics/math.md @@ -139,7 +139,7 @@ The operator interfaces correspond to the various operators available to the C# | Interface name | Defined operators | |----------------------------------------------------|------------------------------------------| | | `x + y` | -| | `x & y`, `x | y`, `x ^ y`, and `~x` | +| | `x & y`, 'x | y', `x ^ y`, and `~x` | | | `x < y`, `x > y`, `x <= y`, and `x >= y` | | | `--x` and `x--` | | | `x / y` | diff --git a/docs/standard/io/buffers.md b/docs/standard/io/buffers.md index 64ea05d7cd21b..b97caf81c4c7e 100644 --- a/docs/standard/io/buffers.md +++ b/docs/standard/io/buffers.md @@ -51,16 +51,16 @@ This method of writing uses the `Memory`/`Span` buffer provided by the `IB The third representation is the most interesting one as it has performance implications on various operations on the `ReadOnlySequence`: -|Representation|Operation|Complexity| ----|---|---| -|`T[]`/`ReadOnlyMemory`|`Length`|`O(1)`| -|`T[]`/`ReadOnlyMemory`|`GetPosition(long)`|`O(1)`| -|`T[]`/`ReadOnlyMemory`|`Slice(int, int)`|`O(1)`| -|`T[]`/`ReadOnlyMemory`|`Slice(SequencePosition, SequencePosition)`|`O(1)`| -|`ReadOnlySequenceSegment`|`Length`|`O(1)`| -|`ReadOnlySequenceSegment`|`GetPosition(long)`|`O(number of segments)`| -|`ReadOnlySequenceSegment`|`Slice(int, int)`|`O(number of segments)`| -|`ReadOnlySequenceSegment`|`Slice(SequencePosition, SequencePosition)`|`O(1)`| +| Representation | Operation | Complexity | +|------------------------------|----------------------------------------------|-------------------------| +| `T[]`/`ReadOnlyMemory` | `Length` | `O(1)` | +| `T[]`/`ReadOnlyMemory` | `GetPosition(long)` | `O(1)` | +| `T[]`/`ReadOnlyMemory` | `Slice(int, int)` | `O(1)` | +| `T[]`/`ReadOnlyMemory` | `Slice(SequencePosition, SequencePosition)` | `O(1)` | +| `ReadOnlySequenceSegment` | `Length` | `O(1)` | +| `ReadOnlySequenceSegment` | `GetPosition(long)` | `O(number of segments)` | +| `ReadOnlySequenceSegment` | `Slice(int, int)` | `O(number of segments)` | +| `ReadOnlySequenceSegment` | `Slice(SequencePosition, SequencePosition)` | `O(1)` | Because of this mixed representation, the `ReadOnlySequence` exposes indexes as `SequencePosition` instead of an integer. A `SequencePosition`: diff --git a/docs/standard/language-independence.md b/docs/standard/language-independence.md index 2eeae4fd02c28..0f9de0d3e2769 100644 --- a/docs/standard/language-independence.md +++ b/docs/standard/language-independence.md @@ -55,8 +55,8 @@ Category | See | Rule | Rule Number Accessibility | [Member accessibility](#member-accessibility) | Accessibility shall not be changed when overriding inherited methods, except when overriding a method inherited from a different assembly with accessibility `family-or-assembly`. In this case, the override shall have accessibility `family`. | 10 Accessibility | [Member accessibility](#member-accessibility) | The visibility and accessibility of types and members shall be such that types in the signature of any member shall be visible and accessible whenever the member itself is visible and accessible. For example, a public method that is visible outside its assembly shall not have an argument whose type is visible only within the assembly. The visibility and accessibility of types composing an instantiated generic type used in the signature of any member shall be visible and accessible whenever the member itself is visible and accessible. For example, an instantiated generic type present in the signature of a member that is visible outside its assembly shall not have a generic argument whose type is visible only within the assembly. | 12 Arrays | [Arrays](#arrays) | Arrays shall have elements with a CLS-compliant type, and all dimensions of the array shall have lower bounds of zero. Only the fact that an item is an array and the element type of the array shall be required to distinguish between overloads. When overloading is based on two or more array types, the element types shall be named types. | 16 -Attributes | [Attributes](#attributes) | Attributes shall be of type , or a type inheriting from it.|41| -|Attributes|[Attributes](#attributes)|The CLS only allows a subset of the encodings of custom attributes. The only types that shall appear in these encodings are (see Partition IV): , , , , , , , , , , and any enumeration type based on a CLS-compliant base integer type. | 34 +Attributes | [Attributes](#attributes) | Attributes shall be of type , or a type inheriting from it.| 41 +Attributes | [Attributes](#attributes)|The CLS only allows a subset of the encodings of custom attributes. The only types that shall appear in these encodings are (see Partition IV): , , , , , , , , , , and any enumeration type based on a CLS-compliant base integer type. | 34 Attributes | [Attributes](#attributes) | The CLS does not allow publicly visible required modifiers (`modreq`, see Partition II), but does allow optional modifiers (`modopt`, see Partition II) it does not understand. | 35 Constructors | [Constructors](#constructors) | An object constructor shall call some instance constructor of its base class before any access occurs to inherited instance data. (This does not apply to value types, which need not have constructors.) | 21 Constructors | [Constructors](#constructors) | An object constructor shall not be called except as part of the creation of an object, and an object shall not be initialized twice. | 22 diff --git a/docs/standard/numerics.md b/docs/standard/numerics.md index 2b61fcd7704bd..27429b23c232f 100644 --- a/docs/standard/numerics.md +++ b/docs/standard/numerics.md @@ -69,9 +69,9 @@ The structure is | Type | Size (in bytes) | Approximate range | Primitive? | Notes | |----------------------------------------------------|-----------------|---------------------------|------------|----------------------| | | 2 | ±65504 | No | Introduced in .NET 5 | -| | 4 | ±3.4 x 1038 | Yes | -| | 8 | ±1.7 × 10308 | Yes | -| | 16 | ±7.9228 x 1028 | No | +| | 4 | ±3.4 x 1038 | Yes | | +| | 8 | ±1.7 × 10308 | Yes | | +| | 16 | ±7.9228 x 1028 | No | | The , , and types support special values that represent not-a-number and infinity. For example, the type provides the following values: , , and . You use the , , , and methods to test for these special values. diff --git a/docs/standard/serialization/system-text-json/migrate-from-newtonsoft.md b/docs/standard/serialization/system-text-json/migrate-from-newtonsoft.md index a9db079ff3453..8b8bc8959a030 100644 --- a/docs/standard/serialization/system-text-json/migrate-from-newtonsoft.md +++ b/docs/standard/serialization/system-text-json/migrate-from-newtonsoft.md @@ -85,6 +85,7 @@ The following table lists `Newtonsoft.Json` features and `System.Text.Json` equi | `TypeNameHandling.All` global setting | ❌ [Not supported by design](#typenamehandlingall-not-supported) | | Support for `JsonPath` queries | ❌ [Not supported](#json-path-queries-not-supported) | | Configurable limits | ❌ [Not supported](#some-limits-not-configurable) | + ::: zone-end ::: zone pivot="dotnet-7-0" @@ -134,6 +135,7 @@ The following table lists `Newtonsoft.Json` features and `System.Text.Json` equi | `TypeNameHandling.All` global setting | ❌ [Not supported by design](#typenamehandlingall-not-supported) | | Support for `JsonPath` queries | ❌ [Not supported](#json-path-queries-not-supported) | | Configurable limits | ❌ [Not supported](#some-limits-not-configurable) | + ::: zone-end ::: zone pivot="dotnet-6-0" @@ -183,6 +185,7 @@ The following table lists `Newtonsoft.Json` features and `System.Text.Json` equi | `TypeNameHandling.All` global setting | ❌ [Not supported by design](#typenamehandlingall-not-supported) | | Support for `JsonPath` queries | ❌ [Not supported](#json-path-queries-not-supported) | | Configurable limits | ❌ [Not supported](#some-limits-not-configurable) | + ::: zone-end This is not an exhaustive list of `Newtonsoft.Json` features. The list includes many of the scenarios that have been requested in [GitHub issues](https://github.com/dotnet/runtime/issues?q=is%3Aopen+is%3Aissue+label%3Aarea-System.Text.Json) or [StackOverflow](https://stackoverflow.com/questions/tagged/system.text.json) posts. If you implement a workaround for one of the scenarios listed here that doesn't currently have sample code, and if you want to share your solution, select **This page** in the **Feedback** section at the bottom of this page. That creates an issue in this documentation's GitHub repo and lists it in the **Feedback** section on this page too. diff --git a/docs/visual-basic/language-reference/statements/end-keyword-statement.md b/docs/visual-basic/language-reference/statements/end-keyword-statement.md index b8d33dac6c41c..b80b8a877f1ba 100644 --- a/docs/visual-basic/language-reference/statements/end-keyword-statement.md +++ b/docs/visual-basic/language-reference/statements/end-keyword-statement.md @@ -2,9 +2,9 @@ description: "Learn more about: End Statement (Visual Basic)" title: "End Statement" ms.date: 07/20/2015 -f1_keywords: +f1_keywords: - "vb.EndDefinition" -helpviewer_keywords: +helpviewer_keywords: - "End keyword [Visual Basic]" ms.assetid: 42d6e088-ab0f-4cda-88e8-fdce3e5fcf4f --- @@ -27,8 +27,8 @@ End Module End Namespace End Operator End Property -End RaiseEvent -End RemoveHandler +End RaiseEvent +End RemoveHandler End Select End Set End Structure @@ -36,9 +36,9 @@ End Sub End SyncLock End Try End While -End With -``` - +End With +``` + ## Parts |Part|Description| @@ -47,7 +47,7 @@ End With |`AddHandler`|Required to terminate an `AddHandler` accessor begun by a matching `AddHandler` statement in a custom [Event Statement](event-statement.md).| |`Class`|Required to terminate a class definition begun by a matching [Class Statement](class-statement.md).| |`Enum`|Required to terminate an enumeration definition begun by a matching [Enum Statement](enum-statement.md).| -|`Event`|Required to terminate a `Custom` event definition begun by a matching [Event Statement](event-statement.md).| +|`Event`|Required to terminate a `Custom` event definition begun by a matching [Event Statement](event-statement.md).| |`Function`|Required to terminate a `Function` procedure definition begun by a matching [Function Statement](function-statement.md). If execution encounters an `End Function` statement, control returns to the calling code.| |`Get`|Required to terminate a `Property` procedure definition begun by a matching [Get Statement](get-statement.md). If execution encounters an `End Get` statement, control returns to the statement requesting the property's value.| |`If`|Required to terminate an `If`...`Then`...`Else` block definition begun by a matching `If` statement. See [If...Then...Else Statement](if-then-else-statement.md).| @@ -58,18 +58,18 @@ End With |`Property`|Required to terminate a property definition begun by a matching [Property Statement](property-statement.md).| |`RaiseEvent`|Required to terminate a `RaiseEvent` accessor begun by a matching `RaiseEvent` statement in a custom [Event Statement](event-statement.md).| |`RemoveHandler`|Required to terminate a `RemoveHandler` accessor begun by a matching `RemoveHandler` statement in a custom [Event Statement](event-statement.md).| -|`Select`|Required to terminate a `Select`...`Case` block definition begun by a matching `Select` statement. See [Select...Case Statement](select-case-statement.md). -|`Set`|Required to terminate a `Property` procedure definition begun by a matching [Set Statement](set-statement.md). If execution encounters an `End Set` statement, control returns to the statement setting the property's value. -|`Structure`|Required to terminate a structure definition begun by a matching [Structure Statement](structure-statement.md). -|`Sub`|Required to terminate a `Sub` procedure definition begun by a matching [Sub Statement](sub-statement.md). If execution encounters an `End Sub` statement, control returns to the calling code. -|`SyncLock`|Required to terminate a `SyncLock` block definition begun by a matching `SyncLock` statement. See [SyncLock Statement](synclock-statement.md). -|`Try`|Required to terminate a `Try`...`Catch`...`Finally` block definition begun by a matching `Try` statement. See [Try...Catch...Finally Statement](try-catch-finally-statement.md). -|`While`|Required to terminate a `While` loop definition begun by a matching `While` statement. See [While...End While Statement](while-end-while-statement.md). -|`With`| Required to terminate a `With` block definition begun by a matching `With` statement. See [With...End With Statement](with-end-with-statement.md). - +|`Select`|Required to terminate a `Select`...`Case` block definition begun by a matching `Select` statement. See [Select...Case Statement](select-case-statement.md).| +|`Set`|Required to terminate a `Property` procedure definition begun by a matching [Set Statement](set-statement.md). If execution encounters an `End Set` statement, control returns to the statement setting the property's value. | +|`Structure`|Required to terminate a structure definition begun by a matching [Structure Statement](structure-statement.md). | +|`Sub`|Required to terminate a `Sub` procedure definition begun by a matching [Sub Statement](sub-statement.md). If execution encounters an `End Sub` statement, control returns to the calling code. | +|`SyncLock`|Required to terminate a `SyncLock` block definition begun by a matching `SyncLock` statement. See [SyncLock Statement](synclock-statement.md). | +|`Try`|Required to terminate a `Try`...`Catch`...`Finally` block definition begun by a matching `Try` statement. See [Try...Catch...Finally Statement](try-catch-finally-statement.md). | +|`While`|Required to terminate a `While` loop definition begun by a matching `While` statement. See [While...End While Statement](while-end-while-statement.md). | +|`With`| Required to terminate a `With` block definition begun by a matching `With` statement. See [With...End With Statement](with-end-with-statement.md). | + ## Directives -When preceded by a number sign (`#`), the `End` keyword terminates a preprocessing block introduced by the corresponding directive. +When preceded by a number sign (`#`), the `End` keyword terminates a preprocessing block introduced by the corresponding directive. ```vb #End ExternalSource @@ -88,10 +88,10 @@ When preceded by a number sign (`#`), the `End` keyword terminates a preprocessi The [End Statement](end-statement.md), without an additional keyword, terminates execution immediately. -## Smart Device Developer Notes +## Smart Device Developer Notes + +The `End` statement, without an additional keyword, is not supported. -The `End` statement, without an additional keyword, is not supported. - ## See also - [End Statement](end-statement.md) diff --git a/docs/visual-basic/programming-guide/concepts/linq/classification-of-standard-query-operators-by-manner-of-execution.md b/docs/visual-basic/programming-guide/concepts/linq/classification-of-standard-query-operators-by-manner-of-execution.md index 11fc0ac2d98f2..ef66d11752b44 100644 --- a/docs/visual-basic/programming-guide/concepts/linq/classification-of-standard-query-operators-by-manner-of-execution.md +++ b/docs/visual-basic/programming-guide/concepts/linq/classification-of-standard-query-operators-by-manner-of-execution.md @@ -4,90 +4,90 @@ title: "Classification of Standard Query Operators by Manner of Execution" ms.date: 07/20/2015 ms.assetid: 7f55b0be-9f6e-44f8-865c-6afbea50cc54 --- -# Classification of Standard Query Operators by Manner of Execution (Visual Basic) - -The LINQ to Objects implementations of the standard query operator methods execute in one of two main ways: immediate or deferred. The query operators that use deferred execution can be additionally divided into two categories: streaming and non-streaming. If you know how the different query operators execute, it may help you understand the results that you get from a given query. This is especially true if the data source is changing or if you are building a query on top of another query. This topic classifies the standard query operators according to their manner of execution. - -## Manners of Execution - -### Immediate - - Immediate execution means that the data source is read and the operation is performed at the point in the code where the query is declared. All the standard query operators that return a single, non-enumerable result execute immediately. - -### Deferred - - Deferred execution means that the operation is not performed at the point in the code where the query is declared. The operation is performed only when the query variable is enumerated, for example by using a `For Each` statement. This means that the results of executing the query depend on the contents of the data source when the query is executed rather than when the query is defined. If the query variable is enumerated multiple times, the results might differ every time. Almost all the standard query operators whose return type is or execute in a deferred manner. - - Query operators that use deferred execution can be additionally classified as streaming or non-streaming. - -#### Streaming - - Streaming operators do not have to read all the source data before they yield elements. At the time of execution, a streaming operator performs its operation on each source element as it is read and yields the element if appropriate. A streaming operator continues to read source elements until a result element can be produced. This means that more than one source element might be read to produce one result element. - -#### Non-Streaming - - Non-streaming operators must read all the source data before they can yield a result element. Operations such as sorting or grouping fall into this category. At the time of execution, non-streaming query operators read all the source data, put it into a data structure, perform the operation, and yield the resulting elements. - -## Classification Table - - The following table classifies each standard query operator method according to its method of execution. - +# Classification of standard query operators by manner of execution (Visual Basic) + +The LINQ to Objects implementations of the standard query operator methods execute in one of two main ways: immediate or deferred. The query operators that use deferred execution can be additionally divided into two categories: streaming and non-streaming. If you know how the different query operators execute, it may help you understand the results that you get from a given query. This is especially true if the data source is changing or if you are building a query on top of another query. This topic classifies the standard query operators according to their manner of execution. + +## Manners of Execution + +### Immediate + + Immediate execution means that the data source is read and the operation is performed at the point in the code where the query is declared. All the standard query operators that return a single, non-enumerable result execute immediately. + +### Deferred + + Deferred execution means that the operation is not performed at the point in the code where the query is declared. The operation is performed only when the query variable is enumerated, for example by using a `For Each` statement. This means that the results of executing the query depend on the contents of the data source when the query is executed rather than when the query is defined. If the query variable is enumerated multiple times, the results might differ every time. Almost all the standard query operators whose return type is or execute in a deferred manner. + + Query operators that use deferred execution can be additionally classified as streaming or non-streaming. + +#### Streaming + + Streaming operators do not have to read all the source data before they yield elements. At the time of execution, a streaming operator performs its operation on each source element as it is read and yields the element if appropriate. A streaming operator continues to read source elements until a result element can be produced. This means that more than one source element might be read to produce one result element. + +#### Non-Streaming + + Non-streaming operators must read all the source data before they can yield a result element. Operations such as sorting or grouping fall into this category. At the time of execution, non-streaming query operators read all the source data, put it into a data structure, perform the operation, and yield the resulting elements. + +## Classification Table + + The following table classifies each standard query operator method according to its method of execution. + > [!NOTE] -> If an operator is marked in two columns, two input sequences are involved in the operation, and each sequence is evaluated differently. In these cases, it is always the first sequence in the parameter list that is evaluated in a deferred, streaming manner. - -|Standard Query Operator|Return Type|Immediate Execution|Deferred Streaming Execution|Deferred Non-Streaming Execution| -|-----------------------------|-----------------|-------------------------|----------------------------------|---------------------------------------| -||TSource|X||| -|||X||| -|||X||| -||||X|| -||Single numeric value|X||| -||||X|| -||||X|| -|||X||| -|||X||| -||||X|| -||||X|| -||TSource|X||| -||TSource|X||| -|||X||| -||||X|X| -||TSource|X||| -||TSource|X||| -|||||X| -||||X|X| -|||X|X| -||||X|X| -||TSource|X||| -||TSource|X||| -|||X||| -||Single numeric value, TSource, or TResult|X||| -||Single numeric value, TSource, or TResult|X||| -||||X|| -|||||X| -|||||X| -||||X|| -||||X|| -|||||X| -||||X|| -||||X|| -|||X||| -||TSource|X||| -||TSource|X||| -||||X|| -||||X|| -||Single numeric value|X||| -||||X|| -|||X|| -|||||X| -|||||X| -||TSource array|X||| -|||X||| -|||X||| -|||X||| -||||X|| -||||X|| - +> If an operator is marked in two columns, two input sequences are involved in the operation, and each sequence is evaluated differently. In these cases, it is always the first sequence in the parameter list that is evaluated in a deferred, streaming manner. + +|Standard Query Operator|Return Type|Immediate Execution|Deferred Streaming Execution|Deferred Non-Streaming Execution| +|-----------------------------|-----------------|-------------------------|----------------------------------|---------------------------------------| +||TSource|X||| +|||X||| +|||X||| +||||X|| +||Single numeric value|X||| +||||X|| +||||X|| +|||X||| +|||X||| +||||X|| +||||X|| +||TSource|X||| +||TSource|X||| +|||X||| +||||X|X| +||TSource|X||| +||TSource|X||| +|||||X| +||||X|X| +||||X|X| +||||X|X| +||TSource|X||| +||TSource|X||| +|||X||| +||Single numeric value, TSource, or TResult|X||| +||Single numeric value, TSource, or TResult|X||| +||||X|| +|||||X| +|||||X| +||||X|| +||||X|| +|||||X| +||||X|| +||||X|| +|||X||| +||TSource|X||| +||TSource|X||| +||||X|| +||||X|| +||Single numeric value|X||| +||||X|| +||||X|| +|||||X| +|||||X| +||TSource array|X||| +|||X||| +|||X||| +|||X||| +||||X|| +||||X|| + ## See also - diff --git a/includes/migration-guide/retargeting/wpf/wpf-textboxtext-can-be-out-of-sync-with-databinding.md b/includes/migration-guide/retargeting/wpf/wpf-textboxtext-can-be-out-of-sync-with-databinding.md index eada30b80a93e..58e59f14db92d 100644 --- a/includes/migration-guide/retargeting/wpf/wpf-textboxtext-can-be-out-of-sync-with-databinding.md +++ b/includes/migration-guide/retargeting/wpf/wpf-textboxtext-can-be-out-of-sync-with-databinding.md @@ -8,11 +8,11 @@ In some cases, the property reflects This should have no negative impact. However, you can restore the previous behavior by setting the property to `false`. -| Name | Value | -|:--------|:------------| -| Scope | Edge | -| Version | 4.5 | -|Type|Retargeting +| | Value | +|:------------|:------------| +| **Scope** | Edge | +| **Version** | 4.5 | +| **Type** | Retargeting | #### Affected APIs diff --git a/includes/migration-guide/runtime/asp/sharing-session-state-with-aspnet-stateserver-requires-all-servers-web-farm.md b/includes/migration-guide/runtime/asp/sharing-session-state-with-aspnet-stateserver-requires-all-servers-web-farm.md index da7974c9bca48..3e2251a0e41a6 100644 --- a/includes/migration-guide/runtime/asp/sharing-session-state-with-aspnet-stateserver-requires-all-servers-web-farm.md +++ b/includes/migration-guide/runtime/asp/sharing-session-state-with-aspnet-stateserver-requires-all-servers-web-farm.md @@ -8,11 +8,11 @@ When enabling was being caught as a means of detecting a task that was cancelled prior to the call being invoked, that code should instead do the same detection via the property (for example: .Any(t => t.IsCanceled)) since .NET Framework 4.6 will only throw in that case if all awaited tasks are completed prior to the timeout. +If an was being caught as a means of detecting a task that was cancelled prior to the call being invoked, that code should instead do the same detection via the property (for example: `.Any(t => t.IsCanceled)`) since .NET Framework 4.6 will only throw in that case if all awaited tasks are completed prior to the timeout. -| Name | Value | -|:--------|:------------| -| Scope |Minor| -|Version|4.5| -|Type|Runtime +| | Value | +|:------------|:--------| +| **Scope** | Minor | +| **Version** | 4.5 | +| **Type** | Runtime | #### Affected APIs diff --git a/includes/migration-guide/runtime/core/some-net-apis-cause-first-chance-handled-entrypointnotfoundexceptions.md b/includes/migration-guide/runtime/core/some-net-apis-cause-first-chance-handled-entrypointnotfoundexceptions.md index 4dafe1ae51345..68d993b3777b4 100644 --- a/includes/migration-guide/runtime/core/some-net-apis-cause-first-chance-handled-entrypointnotfoundexceptions.md +++ b/includes/migration-guide/runtime/core/some-net-apis-cause-first-chance-handled-entrypointnotfoundexceptions.md @@ -6,13 +6,13 @@ In the .NET Framework 4.5, a small number of .NET methods began throwing first c #### Suggestion -This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, test automation can be updated to not break on first-chance s. +This bug can be avoided by upgrading to .NET Framework 4.5.1. Alternatively, test automation can be updated to not break on first-chance exceptions. -| Name | Value | -|:--------|:------------| -| Scope |Edge| -|Version|4.5| -|Type|Runtime +| | Value | +|:------------|:--------| +| **Scope** | Edge | +| **Version** | 4.5 | +| **Type** | Runtime | #### Affected APIs diff --git a/includes/migration-guide/runtime/ef/log-file-name-created-by-objectcontextcreatedatabase-method-has-changed.md b/includes/migration-guide/runtime/ef/log-file-name-created-by-objectcontextcreatedatabase-method-has-changed.md index 4be48afef6da8..355d8b0566050 100644 --- a/includes/migration-guide/runtime/ef/log-file-name-created-by-objectcontextcreatedatabase-method-has-changed.md +++ b/includes/migration-guide/runtime/ef/log-file-name-created-by-objectcontextcreatedatabase-method-has-changed.md @@ -8,11 +8,11 @@ When the is called and then re-selecting them after the call is completed. Alternatively, this issue has been fixed in the .NET Framework 4.6 and may be addressed by upgrading to that version of the .NET Framework. -| Name | Value | -|:--------|:------------| -| Scope |Minor| -|Version|4.5| -|Type|Runtime +| | Value | +|:------------|:--------| +| **Scope** | Minor | +| **Version** | 4.5 | +| **Type** | Runtime | #### Affected APIs From dbec6482edf9a16da5364bc69eeb6a0e761282a9 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Sat, 13 Jan 2024 08:19:10 -0800 Subject: [PATCH 5/6] Update package index with latest published versions (#39116) --- docs/azure/includes/dotnet-all.md | 8 ++++---- docs/azure/includes/dotnet-new.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index 9882169f5437e..e4bbb0344d0f3 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -248,7 +248,7 @@ | Resource Management - Resource Connector | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ResourceConnector/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceConnector-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceConnector_1.0.0-beta.2/sdk/resourceconnector/Azure.ResourceManager.ResourceConnector/) | | Resource Management - Resource Graph | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.ResourceGraph/1.0.1)
NuGet [1.1.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ResourceGraph/1.1.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceGraph-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceGraph_1.0.1/sdk/resourcegraph/Azure.ResourceManager.ResourceGraph/)
GitHub [1.1.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceGraph_1.1.0-beta.2/sdk/resourcegraph/Azure.ResourceManager.ResourceGraph/) | | Resource Management - Resource Health | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.ResourceHealth/1.0.0)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.ResourceHealth/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceHealth-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceHealth_1.0.0/sdk/resourcehealth/Azure.ResourceManager.ResourceHealth/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceHealth_1.1.0-beta.3/sdk/resourcehealth/Azure.ResourceManager.ResourceHealth/) | -| Resource Management - Resource Manager | NuGet [1.10.0](https://www.nuget.org/packages/Azure.ResourceManager/1.10.0) | [docs](/dotnet/api/overview/azure/ResourceManager-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager_1.10.0/sdk/resourcemanager/Azure.ResourceManager/) | +| Resource Management - Resource Manager | NuGet [1.10.0](https://www.nuget.org/packages/Azure.ResourceManager/1.10.0)
NuGet [1.11.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager/1.11.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager_1.10.0/sdk/resourcemanager/Azure.ResourceManager/)
GitHub [1.11.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager_1.11.0-beta.1/sdk/resourcemanager/Azure.ResourceManager/) | | Resource Management - Resource Mover | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ResourceMover/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceMover-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceMover_1.1.1/sdk/resourcemover/Azure.ResourceManager.ResourceMover/) | | Resource Management - Resources | NuGet [1.7.0](https://www.nuget.org/packages/Azure.ResourceManager.Resources/1.7.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Resources-readme) | GitHub [1.7.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Resources_1.7.0/sdk/resources/Azure.ResourceManager.Resources/) | | Resource Management - Security | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.SecurityCenter/1.1.0)
NuGet [1.2.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.SecurityCenter/1.2.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.SecurityCenter-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityCenter_1.1.0/sdk/securitycenter/Azure.ResourceManager.SecurityCenter/)
GitHub [1.2.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityCenter_1.2.0-beta.4/sdk/securitycenter/Azure.ResourceManager.SecurityCenter/) | @@ -278,12 +278,12 @@ | Resource Management - Voice Services | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.VoiceServices/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.VoiceServices-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.VoiceServices_1.0.1/sdk/voiceservices/Azure.ResourceManager.VoiceServices/) | | Resource Management - Web PubSub | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.WebPubSub/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.WebPubSub-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.WebPubSub_1.1.0/sdk/webpubsub/Azure.ResourceManager.WebPubSub/) | | Resource Management - Workload Monitor | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.WorkloadMonitor/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.WorkloadMonitor-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.WorkloadMonitor_1.0.0-beta.4/sdk/workloadmonitor/Azure.ResourceManager.WorkloadMonitor/) | -| Resource Management - Workloads | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.Workloads/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Workloads-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Workloads_1.1.0/sdk/workloads/Azure.ResourceManager.Workloads/) | +| Resource Management - Workloads | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.Workloads/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Workloads/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Workloads-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Workloads_1.1.0/sdk/workloads/Azure.ResourceManager.Workloads/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Workloads_1.2.0-beta.1/sdk/workloads/Azure.ResourceManager.Workloads/) | | Spring App Discovery | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.SpringAppDiscovery/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.SpringAppDiscovery-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SpringAppDiscovery_1.0.0-beta.1/sdk/springappdiscovery/Azure.ResourceManager.SpringAppDiscovery/) | | Azure.Communication.Administration | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Communication.Administration/1.0.0-beta.3) | | | | Azure.Communication.CallingServer | NuGet [1.0.0-beta.3](https://www.nuget.org/packages/Azure.Communication.CallingServer/1.0.0-beta.3) | | | | Azure.Core.Expressions.DataFactory | NuGet [1.0.0-beta.6](https://www.nuget.org/packages/Azure.Core.Expressions.DataFactory/1.0.0-beta.6) | | GitHub [1.0.0-beta.6](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Core.Expressions.DataFactory_1.0.0-beta.6/sdk/core/Azure.Core.Expressions.DataFactory/) | -| Communication Calling Windows Client | NuGet [1.3.0](https://www.nuget.org/packages/Azure.Communication.Calling.WindowsClient/1.3.0)
NuGet [1.4.0-beta.3](https://www.nuget.org/packages/Azure.Communication.Calling.WindowsClient/1.4.0-beta.3) | | | +| Communication Calling Windows Client | NuGet [1.4.0](https://www.nuget.org/packages/Azure.Communication.Calling.WindowsClient/1.4.0) | | | | Unknown Display Name | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.AI.DocumentIntelligence/1.0.0-beta.1) | | | | Unknown Display Name | NuGet [12.0.0-beta.1](https://www.nuget.org/packages/Azure.Storage.DataMovement.Files.Shares/12.0.0-beta.1) | | | | Unknown Display Name | NuGet [1.0.1](https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore.Analyzers/1.0.1) | | | @@ -495,7 +495,7 @@ | Supporting library for Microsoft.Azure.WebJobs.Extensions.OpenApi | NuGet [1.4.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.OpenApi.Core/1.4.0)
NuGet [2.0.0-preview2](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.OpenApi.Core/2.0.0-preview2) | | | | Supporting library for testing Microsoft.Azure.WebJobs.Host | NuGet [3.0.39](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Host.TestCommon/3.0.39) | | GitHub [3.0.39](https://github.com/Azure/azure-webjobs-sdk) | | Web - Redis Output Cache Provider | NuGet [4.0.1](https://www.nuget.org/packages/Microsoft.Web.RedisOutputCacheProvider/4.0.1) | | GitHub [4.0.1](https://github.com/Azure/aspnet-redis-providers/tree/NuGet-Release/RedisOutputCacheProvider-3.0.1/src/OutputCacheProvider) | -| Web - Redis Session State Provider | NuGet [5.0.3](https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider/5.0.3) | | GitHub [5.0.3](https://github.com/Azure/aspnet-redis-providers/tree/NuGet-Release/RedisSessionStateProvider-4.0.1/src/RedisSessionStateProvider) | +| Web - Redis Session State Provider | NuGet [5.0.4](https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider/5.0.4) | | GitHub [5.0.4](https://github.com/Azure/aspnet-redis-providers/tree/NuGet-Release/RedisSessionStateProvider-4.0.1/src/RedisSessionStateProvider) | | Hyak Common | NuGet [1.2.2](https://www.nuget.org/packages/Hyak.Common/1.2.2) | | | | Hyak Common - Tracing Etw | NuGet [1.0.2](https://www.nuget.org/packages/Hyak.Common.Tracing.Etw/1.0.2) | | | | Hyak Common - Tracing Log4Net | NuGet [1.0.2](https://www.nuget.org/packages/Hyak.Common.Tracing.Log4Net/1.0.2) | | | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index 7db9c5ce6faed..35bbce63bd011 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -251,7 +251,7 @@ | Resource Management - Resource Connector | NuGet [1.0.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ResourceConnector/1.0.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceConnector-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceConnector_1.0.0-beta.2/sdk/resourceconnector/Azure.ResourceManager.ResourceConnector/) | | Resource Management - Resource Graph | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.ResourceGraph/1.0.1)
NuGet [1.1.0-beta.2](https://www.nuget.org/packages/Azure.ResourceManager.ResourceGraph/1.1.0-beta.2) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceGraph-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceGraph_1.0.1/sdk/resourcegraph/Azure.ResourceManager.ResourceGraph/)
GitHub [1.1.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceGraph_1.1.0-beta.2/sdk/resourcegraph/Azure.ResourceManager.ResourceGraph/) | | Resource Management - Resource Health | NuGet [1.0.0](https://www.nuget.org/packages/Azure.ResourceManager.ResourceHealth/1.0.0)
NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.ResourceManager.ResourceHealth/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceHealth-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceHealth_1.0.0/sdk/resourcehealth/Azure.ResourceManager.ResourceHealth/)
GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceHealth_1.1.0-beta.3/sdk/resourcehealth/Azure.ResourceManager.ResourceHealth/) | -| Resource Management - Resource Manager | NuGet [1.10.0](https://www.nuget.org/packages/Azure.ResourceManager/1.10.0) | [docs](/dotnet/api/overview/azure/ResourceManager-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager_1.10.0/sdk/resourcemanager/Azure.ResourceManager/) | +| Resource Management - Resource Manager | NuGet [1.10.0](https://www.nuget.org/packages/Azure.ResourceManager/1.10.0)
NuGet [1.11.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager/1.11.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager_1.10.0/sdk/resourcemanager/Azure.ResourceManager/)
GitHub [1.11.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager_1.11.0-beta.1/sdk/resourcemanager/Azure.ResourceManager/) | | Resource Management - Resource Mover | NuGet [1.1.1](https://www.nuget.org/packages/Azure.ResourceManager.ResourceMover/1.1.1) | [docs](/dotnet/api/overview/azure/ResourceManager.ResourceMover-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.ResourceMover_1.1.1/sdk/resourcemover/Azure.ResourceManager.ResourceMover/) | | Resource Management - Resources | NuGet [1.7.0](https://www.nuget.org/packages/Azure.ResourceManager.Resources/1.7.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Resources-readme) | GitHub [1.7.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Resources_1.7.0/sdk/resources/Azure.ResourceManager.Resources/) | | Resource Management - Security | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.SecurityCenter/1.1.0)
NuGet [1.2.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.SecurityCenter/1.2.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.SecurityCenter-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityCenter_1.1.0/sdk/securitycenter/Azure.ResourceManager.SecurityCenter/)
GitHub [1.2.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SecurityCenter_1.2.0-beta.4/sdk/securitycenter/Azure.ResourceManager.SecurityCenter/) | @@ -281,5 +281,5 @@ | Resource Management - Voice Services | NuGet [1.0.1](https://www.nuget.org/packages/Azure.ResourceManager.VoiceServices/1.0.1) | [docs](/dotnet/api/overview/azure/ResourceManager.VoiceServices-readme) | GitHub [1.0.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.VoiceServices_1.0.1/sdk/voiceservices/Azure.ResourceManager.VoiceServices/) | | Resource Management - Web PubSub | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.WebPubSub/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.WebPubSub-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.WebPubSub_1.1.0/sdk/webpubsub/Azure.ResourceManager.WebPubSub/) | | Resource Management - Workload Monitor | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.ResourceManager.WorkloadMonitor/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/ResourceManager.WorkloadMonitor-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.WorkloadMonitor_1.0.0-beta.4/sdk/workloadmonitor/Azure.ResourceManager.WorkloadMonitor/) | -| Resource Management - Workloads | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.Workloads/1.1.0) | [docs](/dotnet/api/overview/azure/ResourceManager.Workloads-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Workloads_1.1.0/sdk/workloads/Azure.ResourceManager.Workloads/) | +| Resource Management - Workloads | NuGet [1.1.0](https://www.nuget.org/packages/Azure.ResourceManager.Workloads/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.Workloads/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.Workloads-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Workloads_1.1.0/sdk/workloads/Azure.ResourceManager.Workloads/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.Workloads_1.2.0-beta.1/sdk/workloads/Azure.ResourceManager.Workloads/) | | Spring App Discovery | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.ResourceManager.SpringAppDiscovery/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/ResourceManager.SpringAppDiscovery-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.ResourceManager.SpringAppDiscovery_1.0.0-beta.1/sdk/springappdiscovery/Azure.ResourceManager.SpringAppDiscovery/) | From 35b9cc048527481e0dd4df0268cbb5f10ba6e80d Mon Sep 17 00:00:00 2001 From: Artur Spychaj Date: Mon, 15 Jan 2024 09:44:26 +0100 Subject: [PATCH 6/6] Add link to MSTest Runner protocol (#39009) --- docs/core/testing/unit-testing-mstest-runner-vs-vstest.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/core/testing/unit-testing-mstest-runner-vs-vstest.md b/docs/core/testing/unit-testing-mstest-runner-vs-vstest.md index 574564d0b1ce1..a825bfd2ad667 100644 --- a/docs/core/testing/unit-testing-mstest-runner-vs-vstest.md +++ b/docs/core/testing/unit-testing-mstest-runner-vs-vstest.md @@ -36,6 +36,12 @@ VSTest is extensible and common types are placed in [Microsoft.TestPlatform.Obje The MSTest runner is based on [Microsoft.Testing.Platform](https://www.nuget.org/packages/Microsoft.Testing.Platform) NuGet package and other libraries in the `Microsoft.Testing.*` namespace. Like VSTest, the `Microsoft.Testing.Platform` is open-source and has a [microsoft/testfx](https://github.com/microsoft/testfx/tree/main/src/Platform/Microsoft.Testing.Platform) GitHub repository. +## Communication protocol + +The MSTest runner uses a JSON-RPC based protocol to communicate between Visual Studio and the test runner process. The protocol is documented in the [MSTest github repository](https://github.com/microsoft/testfx/tree/main/docs/mstest-runner-protocol). + +VSTest also uses a JSON based communication protocol, but it's not JSON-RPC based. + ## Executables VSTest ships multiple executables, notably `vstest.console.exe`, `testhost.exe`, and `datacollector.exe`. However, MSTest is embedded directly into your test project and doesn't ship any other executables. The executable your test project compiles to is used to host all the testing tools and carry out all the tasks needed to run tests.