diff --git a/Directory.Packages.props b/Directory.Packages.props
index eb74dea8e7f6..0669b1a74594 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -9,7 +9,7 @@
-
+
@@ -32,12 +32,12 @@
-
+
-
+
@@ -54,7 +54,7 @@
-
+
@@ -80,27 +80,27 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
+
+
-
-
+
+
diff --git a/NuGet.config b/NuGet.config
index 2cbbaa4c90af..f769bbd51fe8 100644
--- a/NuGet.config
+++ b/NuGet.config
@@ -4,27 +4,29 @@
-
+
+
-
+
+
-
+
-
-
+
-
+
+
-
+
@@ -47,20 +49,18 @@
-
-
+
-
-
+
-
+
diff --git a/documentation/manpages/sdk/dotnet-add-package.1 b/documentation/manpages/sdk/dotnet-add-package.1
index 8dd9f4cc931b..56296ebb2602 100644
--- a/documentation/manpages/sdk/dotnet-add-package.1
+++ b/documentation/manpages/sdk/dotnet-add-package.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-add-package" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-add-package" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet add package
.PP
diff --git a/documentation/manpages/sdk/dotnet-add-reference.1 b/documentation/manpages/sdk/dotnet-add-reference.1
index f104749c4d79..abbd594ffd25 100644
--- a/documentation/manpages/sdk/dotnet-add-reference.1
+++ b/documentation/manpages/sdk/dotnet-add-reference.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-add-reference" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-add-reference" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet add reference
.PP
@@ -46,6 +46,20 @@ After running the command, the \f[V]\f[R] elements are added t
\f[R]
.fi
+.SS Add a reference to an assembly that isn\[cq]t in a project
+.PP
+There\[cq]s no CLI command to add a reference to an assembly that isn\[cq]t in a project or a package.
+But you can do that by editing your \f[I].csproj\f[R] file and adding markup similar to the following example:
+.IP
+.nf
+\f[C]
+
+
+ \[dq].\[rs]MyDLLFolder\[rs]MyAssembly.dll
+
+
+\f[R]
+.fi
.SH ARGUMENTS
.IP \[bu] 2
\f[B]\f[VB]PROJECT\f[B]\f[R]
diff --git a/documentation/manpages/sdk/dotnet-build-server.1 b/documentation/manpages/sdk/dotnet-build-server.1
index 323c2855a2ff..054dbb05a50f 100644
--- a/documentation/manpages/sdk/dotnet-build-server.1
+++ b/documentation/manpages/sdk/dotnet-build-server.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-build-server" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-build-server" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet build-server
.PP
diff --git a/documentation/manpages/sdk/dotnet-build.1 b/documentation/manpages/sdk/dotnet-build.1
index 20ad8124e925..ec60b6207728 100644
--- a/documentation/manpages/sdk/dotnet-build.1
+++ b/documentation/manpages/sdk/dotnet-build.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-build" "1" "2022-10-21" "" ".NET Documentation"
+.TH "dotnet-build" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet build
.PP
@@ -28,10 +28,14 @@ dotnet-build - Builds a project and all of its dependencies.
\f[C]
dotnet build [|] [-a|--arch ]
[-c|--configuration ] [-f|--framework ]
+ [--disable-build-servers]
[--force] [--interactive] [--no-dependencies] [--no-incremental]
[--no-restore] [--nologo] [--no-self-contained] [--os ]
- [-o|--output ] [-r|--runtime ]
- [--self-contained [true|false]] [--source ] [--use-current-runtime, --ucr [true|false]]
+ [-o|--output ]
+ [-p|--property:=]
+ [-r|--runtime ]
+ [--self-contained [true|false]] [--source ]
+ [--tl [auto|on|off]] [--use-current-runtime, --ucr [true|false]]
[-v|--verbosity ] [--version-suffix ]
dotnet build -h|--help
@@ -135,6 +139,15 @@ Defines the build configuration.
The default for most projects is \f[V]Debug\f[R], but you can override the build configuration settings in your project.
.RE
.IP \[bu] 2
+\f[B]\f[VB]--disable-build-servers\f[B]\f[R]
+.RS 2
+.PP
+Forces the command to ignore any persistent build servers.
+This option provides a consistent way to disable all use of build caching, which forces a build from scratch.
+A build that doesn\[cq]t rely on caches is useful when the caches might be corrupted or incorrect for some reason.
+Available since .NET 7 SDK.
+.RE
+.IP \[bu] 2
\f[B]\f[VB]-f|--framework \f[B]\f[R]
.RS 2
.PP
@@ -203,6 +216,14 @@ Available since .NET 6 SDK.
Directory in which to place the built binaries.
If not specified, the default path is \f[V]./bin///\f[R].
For projects with multiple target frameworks (via the \f[V]TargetFrameworks\f[R] property), you also need to define \f[V]--framework\f[R] when you specify this option.
+.IP \[bu] 2
+\&.NET 7.0.200 SDK and later
+.RS 2
+.PP
+If you specify the \f[V]--output\f[R] option when running this command on a solution, the CLI will emit a warning (an error in 7.0.200) due to the unclear semantics of the output path.
+The \f[V]--output\f[R] option is disallowed because all outputs of all built projects would be copied into the specified directory, which isn\[cq]t compatible with multi-targeted projects, as well as projects that have different versions of direct and transitive dependencies.
+For more information, see Solution-level \f[V]--output\f[R] option no longer valid for build-related commands.
+.RE
.RE
.IP \[bu] 2
\f[B]\f[VB]--os \f[B]\f[R]
@@ -215,6 +236,20 @@ If you use this option, don\[cq]t use the \f[V]-r|--runtime\f[R] option.
Available since .NET 6.
.RE
.IP \[bu] 2
+\f[B]\f[VB]-p|--property:=\f[B]\f[R]
+.RS 2
+.PP
+Sets one or more MSBuild properties.
+Specify multiple properties delimited by semicolons or by repeating the option:
+.IP
+.nf
+\f[C]
+--property:=;=
+--property:= --property:=
+\f[R]
+.fi
+.RE
+.IP \[bu] 2
\f[B]\f[VB]-r|--runtime \f[B]\f[R]
.RS 2
.PP
@@ -229,7 +264,7 @@ If not specified, the default is to build for the current OS and architecture.
.PP
Publishes the .NET runtime with the application so the runtime doesn\[cq]t need to be installed on the target machine.
The default is \f[V]true\f[R] if a runtime identifier is specified.
-Available since .NET 6 SDK.
+Available since .NET 6.
.RE
.IP \[bu] 2
\f[B]\f[VB]--source \f[B]\f[R]
@@ -238,13 +273,43 @@ Available since .NET 6 SDK.
The URI of the NuGet package source to use during the restore operation.
.RE
.IP \[bu] 2
+\f[B]\f[VB]--tl [auto|on|off]\f[B]\f[R]
+.RS 2
+.PP
+Specifies whether the \f[I]terminal logger\f[R] should be used for the build output.
+The default is \f[V]auto\f[R], which first verifies the environment before enabling terminal logging.
+The environment check verifies that the terminal is capable of using modern output features and isn\[cq]t using a redirected standard output before enabling the new logger.
+\f[V]on\f[R] skips the environment check and enables terminal logging.
+\f[V]off\f[R] skips the environment check and uses the default console logger.
+.PP
+The terminal logger shows you the restore phase followed by the build phase.
+During each phase, the currently building projects appear at the bottom of the terminal.
+Each project that\[cq]s building outputs both the MSBuild target currently being built and the amount of time spent on that target.
+You can search this information to learn more about the build.
+When a project is finished building, a single \[lq]build completed\[rq] section is written for that captures:
+.IP \[bu] 2
+The name of the built project
+.IP \[bu] 2
+The target framework (if multi-targeted)
+.IP \[bu] 2
+The status of that build
+.IP \[bu] 2
+The primary output of that build (which is hyperlinked)
+.IP \[bu] 2
+Any diagnostics generated for that project
+.PP
+This option is available starting in .NET 8.
+.RE
+.IP \[bu] 2
\f[B]\f[VB]-v|--verbosity \f[B]\f[R]
.RS 2
.PP
Sets the verbosity level of the command.
Allowed values are \f[V]q[uiet]\f[R], \f[V]m[inimal]\f[R], \f[V]n[ormal]\f[R], \f[V]d[etailed]\f[R], and \f[V]diag[nostic]\f[R].
The default is \f[V]minimal\f[R].
-For more information, see .
+By default, MSBuild displays warnings and errors at all verbosity levels.
+To exclude warnings, use \f[V]/property:WarningLevel=0\f[R].
+For more information, see and WarningLevel.
.RE
.IP \[bu] 2
\f[B]\f[VB]--use-current-runtime, --ucr [true|false]\f[B]\f[R]
diff --git a/documentation/manpages/sdk/dotnet-clean.1 b/documentation/manpages/sdk/dotnet-clean.1
index cc1000e3a901..9c24fa04623a 100644
--- a/documentation/manpages/sdk/dotnet-clean.1
+++ b/documentation/manpages/sdk/dotnet-clean.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-clean" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-clean" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet clean
.PP
@@ -89,6 +89,14 @@ Doesn\[cq]t display the startup banner or the copyright message.
.PP
The directory that contains the build artifacts to clean.
Specify the \f[V]-f|--framework \f[R] switch with the output directory switch if you specified the framework when the project was built.
+.IP \[bu] 2
+\&.NET 7.0.200 SDK and later
+.RS 2
+.PP
+If you specify the \f[V]--output\f[R] option when running this command on a solution, the CLI will emit a warning (an error in 7.0.200) due to the unclear semantics of the output path.
+The \f[V]--output\f[R] option is disallowed because all outputs of all built projects would be copied into the specified directory, which isn\[cq]t compatible with multi-targeted projects, as well as projects that have different versions of direct and transitive dependencies.
+For more information, see Solution-level \f[V]--output\f[R] option no longer valid for build-related commands.
+.RE
.RE
.IP \[bu] 2
\f[B]\f[VB]-r|--runtime \f[B]\f[R]
diff --git a/documentation/manpages/sdk/dotnet-dev-certs.1 b/documentation/manpages/sdk/dotnet-dev-certs.1
index 26af672b66b3..1c2b92e4aa96 100644
--- a/documentation/manpages/sdk/dotnet-dev-certs.1
+++ b/documentation/manpages/sdk/dotnet-dev-certs.1
@@ -15,7 +15,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-dev-certs" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-dev-certs" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet dev-certs
.PP
@@ -171,8 +171,10 @@ The file format is independent of the file name extension.
For example, if you specify \f[V]--format pfx\f[R] and \f[V]--export-path ./cert.pem\f[R], you\[cq]ll get a file named \f[I]cert.pem\f[R] in \f[V]PFX\f[R] format.
.PP
For information about the effect of this option when used with \f[V]--password\f[R], \f[V]--no-password\f[R], or without either of those options, see \[en]export-path earlier in this article.
+.RE
.IP \[bu] 2
\f[B]\f[VB]-i|--import \f[B]\f[R]
+.RS 2
.PP
Imports the provided HTTPS development certificate into the local machine.
Requires that you also specify the \f[V]--clean\f[R] option, which clears out any existing HTTPS developer certificates.
diff --git a/documentation/manpages/sdk/dotnet-environment-variables.7 b/documentation/manpages/sdk/dotnet-environment-variables.7
index 36d82d36ec8e..b5ce82b8886e 100644
--- a/documentation/manpages/sdk/dotnet-environment-variables.7
+++ b/documentation/manpages/sdk/dotnet-environment-variables.7
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-environment-variables" "7" "2022-09-19" "" ".NET Documentation"
+.TH "dotnet-environment-variables" "7" "2023-10-25" "" ".NET Documentation"
.hy
.SH NAME
.PP
@@ -23,9 +23,9 @@ dotnet-environment-variables - .NET environment variables
.PP
\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1 SDK and later versions
.PP
-In this article, you\[cq]ll learn about the environment variables used by .NET SDK, .NET CLI, and .NET runtime.
+In this article, you\[cq]ll learn about the environment variables used by .NET.
Some environment variables are used by the .NET runtime, while others are only used by the .NET SDK and .NET CLI.
-Some environment variables are used by all.
+Some environment variables are used by all three components.
.SS .NET runtime environment variables
.SS \f[V]DOTNET_SYSTEM_NET_HTTP_*\f[R]
.PP
@@ -257,9 +257,35 @@ By default trace information is accumulated in a circular buffer and the content
.PP
Specifies the location of the .NET runtimes, if they are not installed in the default location.
The default location on Windows is \f[V]C:\[rs]Program Files\[rs]dotnet\f[R].
-The default location on Linux and macOS is \f[V]/usr/local/share/dotnet\f[R].
+The default location on macOS is \f[V]/usr/local/share/dotnet\f[R].
+The default location on Linux varies depending on distro and installment method.
+The default location on Ubuntu 22.04 is \f[V]/usr/share/dotnet\f[R] (when installed from \f[V]packages.microsoft.com\f[R]) or \f[V]/usr/lib/dotnet\f[R] (when installed from Jammy feed).
+For more information, see the following resources:
+.IP \[bu] 2
+Troubleshoot app launch failures
+.IP \[bu] 2
+GitHub issue dotnet/core#7699 (https://github.com/dotnet/core/issues/7699)
+.IP \[bu] 2
+GitHub issue dotnet/runtime#79237 (https://github.com/dotnet/runtime/issues/79237)
+.PP
This environment variable is used only when running apps via generated executables (apphosts).
\f[V]DOTNET_ROOT(x86)\f[R] is used instead when running a 32-bit executable on a 64-bit OS.
+.SS \f[V]DOTNET_HOST_PATH\f[R]
+.PP
+Specifies the absolute path to a \f[V]dotnet\f[R] host (\f[V]dotnet.exe\f[R] on Windows, \f[V]dotnet\f[R] on Linux and macOS) that was used to launch the currently-running \f[V]dotnet\f[R] process.
+This is used by the .NET SDK to help tools that run during .NET SDK commands ensure they use the same \f[V]dotnet\f[R] runtime for any child \f[V]dotnet\f[R] processes they create for the duration of the command.
+Tools and MSBuild Tasks within the SDK that invoke binaries via the \f[V]dotnet\f[R] host are expected to honor this environment variable to ensure a consistent experience.
+.PP
+Tools that invoke \f[V]dotnet\f[R] during an SDK command should use the following algorithm to locate it:
+.IP \[bu] 2
+if \f[V]DOTNET_HOST_PATH\f[R] is set, use that value directly
+.IP \[bu] 2
+otherwise, rely on \f[V]dotnet\f[R] via the system\[cq]s \f[V]PATH\f[R]
+.RS
+.PP
+\f[V]DOTNET_HOST_PATH\f[R] is not a general solution for locating the \f[V]dotnet\f[R] host.
+It is only intended to be used by tools that are invoked by the .NET SDK.
+.RE
.SS \f[V]NUGET_PACKAGES\f[R]
.PP
The global packages folder.
@@ -323,6 +349,10 @@ For more information, see the \f[V]--roll-forward\f[R] option for the \f[V]dotne
Disables minor version roll forward, if set to \f[V]0\f[R].
This setting is superseded in .NET Core 3.0 by \f[V]DOTNET_ROLL_FORWARD\f[R].
The new settings should be used instead.
+.SS \f[V]DOTNET_CLI_FORCE_UTF8_ENCODING\f[R]
+.PP
+Forces the use of UTF-8 encoding in the console, even for older versions of Windows 10 that don\[cq]t fully support UTF-8.
+For more information, see SDK no longer changes console encoding when finished.
.SS \f[V]DOTNET_CLI_UI_LANGUAGE\f[R]
.PP
Sets the language of the CLI UI using a locale value such as \f[V]en-us\f[R].
@@ -366,8 +396,12 @@ For more information, see Advertising manifests.
.SS \f[V]DOTNET_CLI_WORKLOAD_UPDATE_NOTIFY_INTERVAL_HOURS\f[R]
.PP
Specifies the minimum number of hours between background downloads of advertising manifests for workloads.
-Default is \f[V]24\f[R] - no more frequently than once a day.
+The default is \f[V]24\f[R], which is no more frequently than once a day.
For more information, see Advertising manifests.
+.SS \f[V]DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT\f[R]
+.PP
+Specifies whether .NET SDK local tools search for tool manifest files in the root folder on Windows.
+The default is \f[V]false\f[R].
.SS \f[V]COREHOST_TRACE\f[R]
.PP
Controls diagnostics tracing from the hosting components, such as \f[V]dotnet.exe\f[R], \f[V]hostfxr\f[R], and \f[V]hostpolicy\f[R].
diff --git a/documentation/manpages/sdk/dotnet-format.1 b/documentation/manpages/sdk/dotnet-format.1
index 07ea3aba8528..cb28edeca4f8 100644
--- a/documentation/manpages/sdk/dotnet-format.1
+++ b/documentation/manpages/sdk/dotnet-format.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-format" "1" "2022-06-20" "" ".NET Documentation"
+.TH "dotnet-format" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet format
.PP
diff --git a/documentation/manpages/sdk/dotnet-help.1 b/documentation/manpages/sdk/dotnet-help.1
index 96c60c5083ad..0bd7df09968d 100644
--- a/documentation/manpages/sdk/dotnet-help.1
+++ b/documentation/manpages/sdk/dotnet-help.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-help" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-help" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet help reference
.PP
diff --git a/documentation/manpages/sdk/dotnet-list-package.1 b/documentation/manpages/sdk/dotnet-list-package.1
index efa252919cfb..2e3e95e5c22b 100644
--- a/documentation/manpages/sdk/dotnet-list-package.1
+++ b/documentation/manpages/sdk/dotnet-list-package.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-list-package" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-list-package" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet list package
.PP
@@ -32,6 +32,8 @@ dotnet list [|] package [--config ]
[--include-prerelease] [--include-transitive] [--interactive]
[--outdated] [--source ] [-v|--verbosity ]
[--vulnerable]
+ [--format ]
+ [--output-version ]
dotnet list package -h|--help
\f[R]
@@ -192,6 +194,27 @@ Cannot be combined with \f[V]--deprecated\f[R] or \f[V]--outdated\f[R] options.
Nuget.org is the source of information about vulnerabilities.
For more information, see Vulnerabilities and How to Scan NuGet Packages for Security Vulnerabilities (https://devblogs.microsoft.com/nuget/how-to-scan-nuget-packages-for-security-vulnerabilities/).
.RE
+.IP \[bu] 2
+\f[B]\f[VB]--format \f[B]\f[R]
+.RS 2
+.PP
+Sets the report output format.
+Allowed values are \f[V]console\f[R], \f[V]json\f[R].
+Defaults to \f[V]console\f[R].
+Available starting in .NET SDK 7.0.200.
+.RE
+.IP \[bu] 2
+\f[B]\f[VB]--output-version \f[B]\f[R]
+.RS 2
+.PP
+Sets the report output version.
+Allowed value is \f[V]1\f[R].
+Defaults to \f[V]1\f[R].
+Requires the \f[V]--format json\f[R] option.
+When a new JSON version is available, the command will produce the new format by default.
+This option will let you specify that the command should produce an earlier format.
+Available starting in .NET SDK 7.0.200.
+.RE
.SH EXAMPLES
.IP \[bu] 2
List package references of a specific project:
@@ -223,3 +246,43 @@ dotnet list package --framework netcoreapp3.0
\f[R]
.fi
.RE
+.IP \[bu] 2
+List package references in machine readable json output format:
+.RS 2
+.IP
+.nf
+\f[C]
+dotnet list package --format json
+\f[R]
+.fi
+.RE
+.IP \[bu] 2
+List package references for a specific target framework in machine readable json output format:
+.RS 2
+.IP
+.nf
+\f[C]
+ dotnet list package --framework netcoreapp3.0 --format json
+\f[R]
+.fi
+.RE
+.IP \[bu] 2
+Save machine readable json output of package references, including transitive dependency and vulnerability details into a file:
+.RS 2
+.IP
+.nf
+\f[C]
+dotnet list package --include-transitive --vulnerable --format json >> dependencyReport.json
+\f[R]
+.fi
+.RE
+.IP \[bu] 2
+List package references in machine readable json output format with output version 1:
+.RS 2
+.IP
+.nf
+\f[C]
+dotnet list package --format json --output-version 1
+\f[R]
+.fi
+.RE
diff --git a/documentation/manpages/sdk/dotnet-list-reference.1 b/documentation/manpages/sdk/dotnet-list-reference.1
index 1130f7b4ec92..800d8ca3927a 100644
--- a/documentation/manpages/sdk/dotnet-list-reference.1
+++ b/documentation/manpages/sdk/dotnet-list-reference.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-list-reference" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-list-reference" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet list reference
.PP
diff --git a/documentation/manpages/sdk/dotnet-migrate.1 b/documentation/manpages/sdk/dotnet-migrate.1
index f35dbc3f3952..71f8a11c471b 100644
--- a/documentation/manpages/sdk/dotnet-migrate.1
+++ b/documentation/manpages/sdk/dotnet-migrate.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-migrate" "1" "2022-06-03" "" ".NET Documentation"
+.TH "dotnet-migrate" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet migrate
.PP
diff --git a/documentation/manpages/sdk/dotnet-msbuild.1 b/documentation/manpages/sdk/dotnet-msbuild.1
index c97b0a03c9b7..3a152a3ac02e 100644
--- a/documentation/manpages/sdk/dotnet-msbuild.1
+++ b/documentation/manpages/sdk/dotnet-msbuild.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-msbuild" "1" "2022-06-03" "" ".NET Documentation"
+.TH "dotnet-msbuild" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet msbuild
.PP
diff --git a/documentation/manpages/sdk/dotnet-new-details.1 b/documentation/manpages/sdk/dotnet-new-details.1
new file mode 100644
index 000000000000..6f1b7be169f3
--- /dev/null
+++ b/documentation/manpages/sdk/dotnet-new-details.1
@@ -0,0 +1,105 @@
+.\" Automatically generated by Pandoc 2.18
+.\"
+.\" Define V font for inline verbatim, using C font in formats
+.\" that render this, and otherwise B font.
+.ie "\f[CB]x\f[]"x" \{\
+. ftr V B
+. ftr VI BI
+. ftr VB B
+. ftr VBI BI
+.\}
+.el \{\
+. ftr V CR
+. ftr VI CI
+. ftr VB CB
+. ftr VBI CBI
+.\}
+.TH "dotnet-new-details" "1" "2023-10-25" "" ".NET Documentation"
+.hy
+.SH dotnet new details
+.PP
+\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET 8 preview 6
+.SH NAME
+.PP
+dotnet-new-details - Displays template package metadata.
+.SH SYNOPSIS
+.IP
+.nf
+\f[C]
+dotnet new details [] [--interactive] [--add-source|--nuget-source ]
+ [--force] [-d|--diagnostics] [-h|--help]
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The \f[V]dotnet new details\f[R] command displays the metadata of the template package from the package name provided.
+By default, the command searches for the latest available version.
+If the package is installed locally or is found on the official NuGet website, it also displays the templates that the package contains, otherwise it only displays basic metadata.
+.SH ARGUMENTS
+.IP \[bu] 2
+\f[B]\f[VB]PACKAGE_NAME\f[B]\f[R]
+.RS 2
+.PP
+The package identifier to display the details for.
+.RE
+.SH OPTIONS
+.IP \[bu] 2
+\f[B]\f[VB]--add-source|--nuget-source \f[B]\f[R]
+.RS 2
+.PP
+By default, \f[V]dotnet new details\f[R] uses the hierarchy of NuGet configuration files from the current directory to determine the NuGet source the package can be installed from.
+If \f[V]--nuget-source\f[R] is specified, the source is added to the list of sources to be checked.
+To check the configured sources for the current directory use \f[V]dotnet nuget list source\f[R].
+For more information, see Common NuGet Configurations
+.RE
+.IP \[bu] 2
+\f[B]\f[VB]--interactive\f[B]\f[R]
+.RS 2
+.PP
+Allows the command to stop and wait for user input or action.
+For example, to complete authentication.
+.RE
+.IP \[bu] 2
+\f[B]\f[VB]-d|--diagnostics\f[B]\f[R]
+.RS 2
+.PP
+Enables diagnostic output.
+.RE
+.IP \[bu] 2
+\f[B]\f[VB]-h|--help\f[B]\f[R]
+.RS 2
+.PP
+Displays help for the search command.
+.RE
+.SH EXAMPLES
+.IP \[bu] 2
+Display package data from the latest version of NUnit templates:
+.RS 2
+.IP
+.nf
+\f[C]
+dotnet new details NUnit3.DotNetNew.Template
+\f[R]
+.fi
+.RE
+.IP \[bu] 2
+Display package data of the NUnit templates from a custom NuGet source using interactive mode:
+.RS 2
+.IP
+.nf
+\f[C]
+dotnet new details NUnit3.DotNetNew.Template --add-source \[dq]https://api.my-custom-nuget.com/v3/index.json\[dq] --interactive
+\f[R]
+.fi
+.RE
+.SH SEE ALSO
+.IP \[bu] 2
+dotnet new command
+.IP \[bu] 2
+dotnet new uninstall command
+.IP \[bu] 2
+dotnet new list command
+.IP \[bu] 2
+dotnet new search command
+.IP \[bu] 2
+Custom templates for dotnet new
diff --git a/documentation/manpages/sdk/dotnet-new-install.1 b/documentation/manpages/sdk/dotnet-new-install.1
index 0f902b6d9ae6..e62824844716 100644
--- a/documentation/manpages/sdk/dotnet-new-install.1
+++ b/documentation/manpages/sdk/dotnet-new-install.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-new-install" "1" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-new-install" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet new install
.PP
@@ -56,7 +56,7 @@ To use a template package installed in .NET SDK 6.0.100 or later in earlier .NET
.PP
Starting with the .NET 7 SDK, the \f[V]dotnet new\f[R] syntax has changed:
.IP \[bu] 2
-The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R] and \f[V]uninstall\f[R] subcommands.
+The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R], and \f[V]uninstall\f[R] subcommands.
.IP \[bu] 2
The \f[V]--update-apply\f[R] option became the \f[V]update\f[R] subcommand.
.IP \[bu] 2
@@ -90,6 +90,12 @@ If \f[V]--nuget-source\f[R] is specified, the source will be added to the list o
.PD
To check the configured sources for the current directory use \f[V]dotnet nuget list source\f[R].
For more information, see Common NuGet Configurations
+.RS
+.PP
+Following NuGet\[cq]s Https Everywhere (https://devblogs.microsoft.com/nuget/https-everywhere/) initiative, \f[V]dotnet new\f[R] is phasing out \f[V]http\f[R] feeds.
+If an \f[V]http\f[R] feed is passed, it isn\[cq]t queried for packages and a warning is displayed.
+The \f[V]--force\f[R] option can be used to override this behavior if necessary.
+.RE
.RE
.IP \[bu] 2
\f[B]\f[VB]-d|--diagnostics\f[B]\f[R]
diff --git a/documentation/manpages/sdk/dotnet-new-list.1 b/documentation/manpages/sdk/dotnet-new-list.1
index 160b094b775b..f0948edf29c6 100644
--- a/documentation/manpages/sdk/dotnet-new-list.1
+++ b/documentation/manpages/sdk/dotnet-new-list.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-new-list" "1" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-new-list" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet new list
.PP
@@ -48,7 +48,7 @@ To force show all the templates, use the \f[V]--ignore-constraints\f[R] option.
.PP
Starting with the .NET 7 SDK, the \f[V]dotnet new\f[R] syntax has changed:
.IP \[bu] 2
-The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R] and \f[V]uninstall\f[R] subcommands.
+The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R], and \f[V]uninstall\f[R] subcommands.
.IP \[bu] 2
The \f[V]--update-apply\f[R] option became the \f[V]update\f[R] subcommand.
.IP \[bu] 2
diff --git a/documentation/manpages/sdk/dotnet-new-sdk-templates.7 b/documentation/manpages/sdk/dotnet-new-sdk-templates.7
index f8bf3b08c82c..9fd5e19e0fdb 100644
--- a/documentation/manpages/sdk/dotnet-new-sdk-templates.7
+++ b/documentation/manpages/sdk/dotnet-new-sdk-templates.7
@@ -15,7 +15,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-new-sdk-templates" "7" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-new-sdk-templates" "7" "2023-10-25" "" ".NET Documentation"
.hy
.SH NAME
.PP
@@ -337,17 +337,6 @@ T}@T{
2.0
T}
T{
-ASP.NET Core with React.js and Redux
-T}@T{
-\f[V]reactredux\f[R]
-T}@T{
-[C#]
-T}@T{
-Web/MVC/SPA
-T}@T{
-2.0
-T}
-T{
Razor Class Library
T}@T{
\f[V]razorclasslib\f[R]
@@ -365,11 +354,22 @@ T}@T{
T}@T{
[C#], F#
T}@T{
-Web/WebAPI
+Web/Web API/API/Service/WebAPI
T}@T{
1.0
T}
T{
+ASP.NET Core API
+T}@T{
+\f[V]webapiaot\f[R]
+T}@T{
+[C#]
+T}@T{
+Web/Web API/API/Service
+T}@T{
+8.0
+T}
+T{
ASP.NET Core gRPC Service
T}@T{
\f[V]grpc\f[R]
@@ -1655,6 +1655,56 @@ Doesn\[cq]t execute an implicit restore during project creation.
Supports adding traditional Razor pages and Views in addition to components to this library.
Available since .NET Core 3.0 SDK.
.RE
+.PP
+ * * * * *
+.SS \f[V]webapiaot\f[R]
+.PP
+Creates a web API project with AOT publish enabled.
+For more information, see Native AOT deployment and The Web API (Native AOT) template.
+.IP \[bu] 2
+\f[B]\f[VB]--exclude-launch-settings\f[B]\f[R]
+.RS 2
+.PP
+Excludes \f[I]launchSettings.json\f[R] from the generated template.
+.RE
+.IP \[bu] 2
+\f[B]\f[VB]-f|--framework \f[B]\f[R]
+.RS 2
+.PP
+Specifies the framework to target.
+.PP
+The following table lists the default values according to the SDK version number you\[cq]re using:
+.PP
+.TS
+tab(@);
+l l.
+T{
+SDK version
+T}@T{
+Default value
+T}
+_
+T{
+8.0
+T}@T{
+\f[V]net8.0\f[R]
+T}
+.TE
+.RE
+.IP \[bu] 2
+\f[B]\f[VB]--no-restore\f[B]\f[R]
+.RS 2
+.PP
+Doesn\[cq]t execute an implicit restore during project creation.
+.RE
+.IP \[bu] 2
+\f[B]\f[VB]--use-program-main\f[B]\f[R]
+.RS 2
+.PP
+If specified, an explicit \f[V]Program\f[R] class and \f[V]Main\f[R] method will be used instead of top-level statements.
+Available since .NET SDK 6.0.300.
+Default value: \f[V]false\f[R].
+.RE
.PP
* * * * *
.SS \f[V]webapi\f[R]
@@ -1682,10 +1732,12 @@ Use with \f[V]IndividualB2C\f[R] authentication.
The default value is \f[V]https://login.microsoftonline.com/tfp/\f[R].
.RE
.IP \[bu] 2
-\f[B]\f[VB]-minimal\f[B]\f[R]
+\f[B]\f[VB]-minimal|--use-minimal-apis\f[B]\f[R]
.RS 2
.PP
Create a project that uses the ASP.NET Core minimal API.
+Default is \f[V]false\f[R], but this option is overridden by \f[V]--controllers\f[R].
+Since the default for \f[V]--controllers\f[R] is \f[V]false\f[R], entering \f[V]dotnet new webapi\f[R] without specifying either option creates a minimal API project.
.RE
.IP \[bu] 2
\f[B]\f[VB]-ssp|--susi-policy-id \f[B]\f[R]
@@ -1711,6 +1763,14 @@ Use with \f[V]IndividualB2C\f[R] or \f[V]SingleOrg\f[R] authentication.
The default value is \f[V]11111111-1111-1111-11111111111111111\f[R].
.RE
.IP \[bu] 2
+\f[B]\f[VB]--controllers\f[B]\f[R], \f[B]\f[VB]--use-controllers\f[B]\f[R]
+.RS 2
+.PP
+Whether to use controllers instead of minimal APIs.
+If both this option and \f[V]-minimal\f[R] are specified, this option overrides the value specified by \f[V]-minimal\f[R].
+Default is \f[V]false\f[R].
+.RE
+.IP \[bu] 2
\f[B]\f[VB]--domain \f[B]\f[R]
.RS 2
.PP
@@ -1740,11 +1800,19 @@ Only applies to \f[V]SingleOrg\f[R] authentication.
Excludes \f[I]launchSettings.json\f[R] from the generated template.
.RE
.IP \[bu] 2
+\f[B]\f[VB]--no-openapi\f[B]\f[R]
+.RS 2
+.PP
+Turns off OpenAPI (Swagger) support.
+\f[V]AddSwaggerGen\f[R], \f[V]UseSwagger\f[R], and \f[V]UseSwaggerUI\f[R] aren\[cq]t called.
+.RE
+.IP \[bu] 2
\f[B]\f[VB]--no-https\f[B]\f[R]
.RS 2
.PP
Turns off HTTPS.
-\f[V]app.UseHsts\f[R] and \f[V]app.UseHttpsRedirection\f[R] aren\[cq]t added to \f[V]Startup.Configure\f[R].
+No \f[I]https\f[R] launch profile is created in \f[V]launchSettings.json\f[R].
+\f[V]app.UseHsts\f[R] and \f[V]app.UseHttpsRedirection\f[R] aren\[cq]t called in \f[I]Program.cs\f[R]/\f[I]Startup.cs\f[R].
This option only applies if \f[V]IndividualB2C\f[R] or \f[V]SingleOrg\f[R] aren\[cq]t being used for authentication.
.RE
.IP \[bu] 2
@@ -1773,6 +1841,11 @@ Default value
T}
_
T{
+7.0
+T}@T{
+\f[V]net7.0\f[R]
+T}
+T{
6.0
T}@T{
\f[V]net6.0\f[R]
diff --git a/documentation/manpages/sdk/dotnet-new-search.1 b/documentation/manpages/sdk/dotnet-new-search.1
index 8e80011a0f2d..f904c1d09971 100644
--- a/documentation/manpages/sdk/dotnet-new-search.1
+++ b/documentation/manpages/sdk/dotnet-new-search.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-new-search" "1" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-new-search" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet new search
.PP
@@ -44,7 +44,7 @@ When the is specified, searches for templates containing the specified name.
.PP
Starting with the .NET 7 SDK, the \f[V]dotnet new\f[R] syntax has changed:
.IP \[bu] 2
-The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R] and \f[V]uninstall\f[R] subcommands.
+The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R], and \f[V]uninstall\f[R] subcommands.
.IP \[bu] 2
The \f[V]--update-apply\f[R] option became the \f[V]update\f[R] subcommand.
.IP \[bu] 2
diff --git a/documentation/manpages/sdk/dotnet-new-uninstall.1 b/documentation/manpages/sdk/dotnet-new-uninstall.1
index a8f52bc57a8b..a2dc561dfd43 100644
--- a/documentation/manpages/sdk/dotnet-new-uninstall.1
+++ b/documentation/manpages/sdk/dotnet-new-uninstall.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-new-uninstall" "1" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-new-uninstall" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet new uninstall
.PP
@@ -41,7 +41,7 @@ When specifying \f[V]NUGET_ID\f[R], don\[cq]t include the version number.
.PP
Starting with the .NET 7 SDK, the \f[V]dotnet new\f[R] syntax has changed:
.IP \[bu] 2
-The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R] and \f[V]uninstall\f[R] subcommands.
+The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R], and \f[V]uninstall\f[R] subcommands.
.IP \[bu] 2
The \f[V]--update-apply\f[R] option became the \f[V]update\f[R] subcommand.
.IP \[bu] 2
diff --git a/documentation/manpages/sdk/dotnet-new-update.1 b/documentation/manpages/sdk/dotnet-new-update.1
index 0f87e86e9861..05a237913b61 100644
--- a/documentation/manpages/sdk/dotnet-new-update.1
+++ b/documentation/manpages/sdk/dotnet-new-update.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-new-update" "1" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-new-update" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet new update
.PP
@@ -43,7 +43,7 @@ The \f[V]dotnet new update\f[R] command with \f[V]--check-only\f[R] option check
.PP
Starting with the .NET 7 SDK, the \f[V]dotnet new\f[R] syntax has changed:
.IP \[bu] 2
-The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R] and \f[V]uninstall\f[R] subcommands.
+The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R], and \f[V]uninstall\f[R] subcommands.
.IP \[bu] 2
The \f[V]--update-apply\f[R] option became the \f[V]update\f[R] subcommand.
.IP \[bu] 2
diff --git a/documentation/manpages/sdk/dotnet-new.1 b/documentation/manpages/sdk/dotnet-new.1
index 014d4ff7aa77..aba30cb7f9a3 100644
--- a/documentation/manpages/sdk/dotnet-new.1
+++ b/documentation/manpages/sdk/dotnet-new.1
@@ -15,7 +15,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-new" "1" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-new" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet new
.PP
@@ -28,7 +28,7 @@ dotnet-new - Creates a new project, configuration file, or solution based on the
.nf
\f[C]
dotnet new [--dry-run] [--force] [-lang|--language {\[dq]C#\[dq]|\[dq]F#\[dq]|VB}]
- [-n|--name ] [--no-update-check]
+ [-n|--name ] [-f|--framework ] [--no-update-check]
[-o|--output ] [--project ]
[-d|--diagnostics] [--verbosity ] [Template options]
@@ -46,7 +46,7 @@ The command calls the template engine (https://github.com/dotnet/templating) to
.PP
Starting with the .NET 7 SDK, the \f[V]dotnet new\f[R] syntax has changed:
.IP \[bu] 2
-The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R] and \f[V]uninstall\f[R] subcommands.
+The \f[V]--list\f[R], \f[V]--search\f[R], \f[V]--install\f[R], and \f[V]--uninstall\f[R] options became \f[V]list\f[R], \f[V]search\f[R], \f[V]install\f[R], and \f[V]uninstall\f[R] subcommands.
.IP \[bu] 2
The \f[V]--update-apply\f[R] option became the \f[V]update\f[R] subcommand.
.IP \[bu] 2
@@ -112,7 +112,7 @@ Introduced
T}
_
T{
-Console Application
+Console application
T}@T{
\f[V]console\f[R]
T}@T{
@@ -134,7 +134,7 @@ T}@T{
1.0
T}
T{
-WPF Application
+WPF application
T}@T{
\f[V]wpf\f[R]
T}@T{
@@ -145,7 +145,7 @@ T}@T{
3.0 (5.0 for VB)
T}
T{
-WPF Class library
+WPF class library
T}@T{
\f[V]wpflib\f[R]
T}@T{
@@ -156,7 +156,7 @@ T}@T{
3.0 (5.0 for VB)
T}
T{
-WPF Custom Control Library
+WPF custom control library
T}@T{
\f[V]wpfcustomcontrollib\f[R]
T}@T{
@@ -167,7 +167,7 @@ T}@T{
3.0 (5.0 for VB)
T}
T{
-WPF User Control Library
+WPF user control library
T}@T{
\f[V]wpfusercontrollib\f[R]
T}@T{
@@ -178,7 +178,7 @@ T}@T{
3.0 (5.0 for VB)
T}
T{
-Windows Forms (WinForms) Application
+Windows Forms (WinForms) application
T}@T{
\f[V]winforms\f[R]
T}@T{
@@ -189,7 +189,7 @@ T}@T{
3.0 (5.0 for VB)
T}
T{
-Windows Forms (WinForms) Class library
+Windows Forms (WinForms) class library
T}@T{
\f[V]winformslib\f[R]
T}@T{
@@ -200,7 +200,7 @@ T}@T{
3.0 (5.0 for VB)
T}
T{
-Worker Service
+Worker service
T}@T{
\f[V]worker\f[R]
T}@T{
@@ -211,7 +211,7 @@ T}@T{
3.0
T}
T{
-Unit Test Project
+Unit test project
T}@T{
\f[V]mstest\f[R]
T}@T{
@@ -222,7 +222,7 @@ T}@T{
1.0
T}
T{
-NUnit 3 Test Project
+NUnit 3 test project
T}@T{
\f[V]nunit\f[R]
T}@T{
@@ -233,7 +233,7 @@ T}@T{
2.1.400
T}
T{
-NUnit 3 Test Item
+NUnit 3 test item
T}@T{
\f[V]nunit-test\f[R]
T}@T{
@@ -244,7 +244,7 @@ T}@T{
2.2
T}
T{
-xUnit Test Project
+xUnit test project
T}@T{
\f[V]xunit\f[R]
T}@T{
@@ -255,7 +255,7 @@ T}@T{
1.0
T}
T{
-Razor Component
+Razor component
T}@T{
\f[V]razorcomponent\f[R]
T}@T{
@@ -266,7 +266,7 @@ T}@T{
3.0
T}
T{
-Razor Page
+Razor page
T}@T{
\f[V]page\f[R]
T}@T{
@@ -299,7 +299,7 @@ T}@T{
2.0
T}
T{
-Blazor Server App
+Blazor server app
T}@T{
\f[V]blazorserver\f[R]
T}@T{
@@ -310,7 +310,7 @@ T}@T{
3.0
T}
T{
-Blazor WebAssembly App
+Blazor WebAssembly app
T}@T{
\f[V]blazorwasm\f[R]
T}@T{
@@ -321,7 +321,7 @@ T}@T{
3.1.300
T}
T{
-ASP.NET Core Empty
+ASP.NET Core empty
T}@T{
\f[V]web\f[R]
T}@T{
@@ -332,7 +332,7 @@ T}@T{
1.0
T}
T{
-ASP.NET Core Web App (Model-View-Controller)
+ASP.NET Core web app (Model-View-Controller)
T}@T{
\f[V]mvc\f[R]
T}@T{
@@ -343,7 +343,7 @@ T}@T{
1.0
T}
T{
-ASP.NET Core Web App
+ASP.NET Core web app
T}@T{
\f[V]webapp, razor\f[R]
T}@T{
@@ -387,7 +387,7 @@ T}@T{
2.0
T}
T{
-Razor Class Library
+Razor class library
T}@T{
\f[V]razorclasslib\f[R]
T}@T{
@@ -398,7 +398,7 @@ T}@T{
2.1
T}
T{
-ASP.NET Core Web API
+ASP.NET Core web API
T}@T{
\f[V]webapi\f[R]
T}@T{
@@ -409,7 +409,7 @@ T}@T{
1.0
T}
T{
-ASP.NET Core gRPC Service
+ASP.NET Core gRPC service
T}@T{
\f[V]grpc\f[R]
T}@T{
@@ -440,7 +440,7 @@ T}@T{
2.0
T}
T{
-NuGet Config
+NuGet config
T}@T{
\f[V]nugetconfig\f[R]
T}@T{
@@ -460,7 +460,7 @@ T}@T{
3.0
T}
T{
-Web Config
+Web config
T}@T{
\f[V]webconfig\f[R]
T}@T{
@@ -470,7 +470,7 @@ T}@T{
1.0
T}
T{
-Solution File
+Solution file
T}@T{
\f[V]sln\f[R]
T}@T{
@@ -480,7 +480,7 @@ T}@T{
1.0
T}
T{
-Protocol Buffer File
+Protocol buffer file
T}@T{
\f[V]proto\f[R]
T}@T{
@@ -545,6 +545,15 @@ The name for the created output.
If no name is specified, the name of the current directory is used.
.RE
.IP \[bu] 2
+\f[B]\f[VB]-f|--framework \f[B]\f[R]
+.RS 2
+.PP
+Specifies the target framework.
+It expects a target framework moniker (TFM).
+Examples: \[lq]net6.0\[rq], \[lq]net7.0-macos\[rq].
+This value will be reflected in the project file.
+.RE
+.IP \[bu] 2
\f[B]\f[VB]-no-update-check\f[B]\f[R]
.RS 2
.PP
diff --git a/documentation/manpages/sdk/dotnet-nuget-add-source.1 b/documentation/manpages/sdk/dotnet-nuget-add-source.1
index d9c14fc28009..20fed447c738 100644
--- a/documentation/manpages/sdk/dotnet-nuget-add-source.1
+++ b/documentation/manpages/sdk/dotnet-nuget-add-source.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-add-source" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-nuget-add-source" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget add source
.PP
diff --git a/documentation/manpages/sdk/dotnet-nuget-delete.1 b/documentation/manpages/sdk/dotnet-nuget-delete.1
index 8a8e3346802c..6e27e290c315 100644
--- a/documentation/manpages/sdk/dotnet-nuget-delete.1
+++ b/documentation/manpages/sdk/dotnet-nuget-delete.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-delete" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-nuget-delete" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget delete
.PP
@@ -81,7 +81,9 @@ The API key for the server.
\f[B]\f[VB]--no-service-endpoint\f[B]\f[R]
.RS 2
.PP
-Doesn\[cq]t append \[lq]api/v2/package\[rq] to the source URL.
+By default, the command appends \[lq]/api/v2/package\[rq] to the specified URL.
+This option is for custom feeds that must use the exact source URL as specified with the \f[V]--source\f[R] option.
+For more information, see the \f[V]--source\f[R] option later in this article.
.RE
.IP \[bu] 2
\f[B]\f[VB]--non-interactive\f[B]\f[R]
@@ -94,8 +96,8 @@ Doesn\[cq]t prompt for user input or confirmations.
.RS 2
.PP
Specifies the server URL.
-Supported URLs for nuget.org include \f[V]https://www.nuget.org\f[R], \f[V]https://www.nuget.org/api/v3\f[R], and \f[V]https://www.nuget.org/api/v2/package\f[R].
-For private feeds, replace the host name (for example, \f[V]%hostname%/api/v3\f[R]).
+The URL specified by using this option can be either V2 (\f[V]https://www.nuget.org/api/v2/\f[R]) or V3 (\f[V]https://api.nuget.org/v3/index.json\f[R]).
+For private feeds, replace the host name (for example, \f[V]%hostname%/api/v3/index.json\f[R]).
.RE
.SH EXAMPLES
.IP \[bu] 2
diff --git a/documentation/manpages/sdk/dotnet-nuget-disable-source.1 b/documentation/manpages/sdk/dotnet-nuget-disable-source.1
index ac796bbc642d..6b4f05d62f07 100644
--- a/documentation/manpages/sdk/dotnet-nuget-disable-source.1
+++ b/documentation/manpages/sdk/dotnet-nuget-disable-source.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-disable-source" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-nuget-disable-source" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget disable source
.PP
diff --git a/documentation/manpages/sdk/dotnet-nuget-enable-source.1 b/documentation/manpages/sdk/dotnet-nuget-enable-source.1
index 6578e524ed79..d2652bff07bd 100644
--- a/documentation/manpages/sdk/dotnet-nuget-enable-source.1
+++ b/documentation/manpages/sdk/dotnet-nuget-enable-source.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-enable-source" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-nuget-enable-source" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget enable source
.PP
diff --git a/documentation/manpages/sdk/dotnet-nuget-list-source.1 b/documentation/manpages/sdk/dotnet-nuget-list-source.1
index e4440bdf7a03..23136dca18b9 100644
--- a/documentation/manpages/sdk/dotnet-nuget-list-source.1
+++ b/documentation/manpages/sdk/dotnet-nuget-list-source.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-list-source" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-nuget-list-source" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget list source
.PP
diff --git a/documentation/manpages/sdk/dotnet-nuget-locals.1 b/documentation/manpages/sdk/dotnet-nuget-locals.1
index cadbc4cde878..2d1f4061ea8f 100644
--- a/documentation/manpages/sdk/dotnet-nuget-locals.1
+++ b/documentation/manpages/sdk/dotnet-nuget-locals.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-locals" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-nuget-locals" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget locals
.PP
diff --git a/documentation/manpages/sdk/dotnet-nuget-push.1 b/documentation/manpages/sdk/dotnet-nuget-push.1
index 43a9ba2cf800..48a4919393ac 100644
--- a/documentation/manpages/sdk/dotnet-nuget-push.1
+++ b/documentation/manpages/sdk/dotnet-nuget-push.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-push" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-nuget-push" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget push
.PP
@@ -45,6 +45,24 @@ NuGet\[cq]s default configuration is obtained by loading \f[I]%AppData%.config\f
The command pushes an existing package.
It doesn\[cq]t create a package.
To create a package, use \f[V]dotnet pack\f[R].
+.SS Hierarchical folder structure
+.PP
+This command can store packages in a hierarchical folder structure, which is recommended to optimize performance.
+It stores packages in a hierarchical folder structure when publishing to a local folder (feed), like \f[V]nuget add\f[R] does, if there already is at least one package in the feed that is in a hierarchical folder structure.
+If the feed has a hierarchical folder structured package already in it, \f[V]dotnet nuget push\f[R] respects that structure.
+So, if you want to publish to a local feed using the .NET CLI instead of the NuGet CLI:
+.IP \[bu] 2
+Before you publish the first package, go to your global packages folder, at *%userprofile%.nuget, and select the root folder of a package id.
+It can be any package that is not part of a framework, like .NET standard or ASP.NET.
+.IP \[bu] 2
+Copy the selected package folder into the root folder of the local feed.
+.IP \[bu] 2
+Use \f[V]dotnet nuget push\f[R] to publish your package to the local feed.
+.IP \[bu] 2
+You can now delete the folder you previously copied in, and you can freely use \f[V]dotnet nuget push\f[R] to publish to your local feed.
+.PP
+Alternatively, use the NuGet CLI for the first package, then you can use \f[V]dotnet nuget push\f[R] for the rest.
+For more information, see Local feeds.
.SH ARGUMENTS
.IP \[bu] 2
\f[B]\f[VB]ROOT\f[B]\f[R]
@@ -110,7 +128,7 @@ For more information, see Configuring NuGet behavior.
\f[B]\f[VB]--skip-duplicate\f[B]\f[R]
.RS 2
.PP
-When pushing multiple packages to an HTTP(S) server, treats any 409 Conflict response as a warning so that the push can continue.
+When pushing multiple packages to an HTTP(S) server, treats any 409 Conflict response as a warning so that other pushes can continue.
.RE
.IP \[bu] 2
\f[B]\f[VB]-sk|--symbol-api-key \f[B]\f[R]
@@ -235,8 +253,3 @@ dotnet nuget push \[dq]*.nupkg\[dq] -s c:\[rs]mydir
.RE
.IP \[bu] 2
For pushing to Azure Artifacts, see Azure Artifacts\[cq] push documentation.
-.RS 2
-.PP
-This command doesn\[cq]t store packages in a hierarchical folder structure, which is recommended to optimize performance.
-For more information, see Local feeds.
-.RE
diff --git a/documentation/manpages/sdk/dotnet-nuget-remove-source.1 b/documentation/manpages/sdk/dotnet-nuget-remove-source.1
index d6f88e523482..03dd9e0d5287 100644
--- a/documentation/manpages/sdk/dotnet-nuget-remove-source.1
+++ b/documentation/manpages/sdk/dotnet-nuget-remove-source.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-remove-source" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-nuget-remove-source" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget remove source
.PP
diff --git a/documentation/manpages/sdk/dotnet-nuget-sign.1 b/documentation/manpages/sdk/dotnet-nuget-sign.1
index 96bba18931ca..d5537f3da9fa 100644
--- a/documentation/manpages/sdk/dotnet-nuget-sign.1
+++ b/documentation/manpages/sdk/dotnet-nuget-sign.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-sign" "1" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-nuget-sign" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget sign
.PP
@@ -49,7 +49,8 @@ The \f[V]dotnet nuget sign\f[R] command signs all the packages matching the firs
The certificate with the private key can be obtained from a file or from a certificate installed in a certificate store by providing a subject name or a SHA-1 fingerprint.
.RS
.PP
-This command requires a certificate root store that\[cq]s valid for both code signing and timestamping.
+This command requires a certificate root store that is valid for both code signing and timestamping.
+Also, this command may not be supported on some combinations of operating system and .NET SDK.
For more information, see NuGet signed package verification.
.RE
.SH ARGUMENTS
@@ -92,7 +93,7 @@ This option should be used when specifying the certificate via \f[V]--certificat
.RS 2
.PP
Specifies the subject name of the certificate used to search a local certificate store for the certificate.
-The search is a case-insensitive string comparison using the supplied value, which will find all certificates with the subject name containing that string, regardless of other subject values.
+The search is a case-insensitive string comparison using the supplied value, which finds all certificates with the subject name containing that string, regardless of other subject values.
The certificate store can be specified by \f[V]--certificate-store-name\f[R] and \f[V]--certificate-store-location\f[R] options.
.RS
.PP
@@ -131,7 +132,7 @@ Possible values are SHA256, SHA384, and SHA512.
.RS 2
.PP
Specifies the directory where the signed package should be saved.
-If this option is not specified, by default the original package is overwritten by the signed package.
+If this option isn\[cq]t specified, by default the original package is overwritten by the signed package.
.RE
.IP \[bu] 2
\f[B]\f[VB]--overwrite\f[B]\f[R]
diff --git a/documentation/manpages/sdk/dotnet-nuget-trust.1 b/documentation/manpages/sdk/dotnet-nuget-trust.1
index 6423b949f07e..ce123cf49db7 100644
--- a/documentation/manpages/sdk/dotnet-nuget-trust.1
+++ b/documentation/manpages/sdk/dotnet-nuget-trust.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-trust" "1" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-nuget-trust" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget trust
.PP
@@ -41,7 +41,8 @@ For details on what the nuget.config schema looks like, refer to the NuGet confi
.RS
.PP
This command requires a certificate root store that is valid for both code signing and timestamping.
-See NuGet signed package verification for details.
+Also, this command may not be supported on some combinations of operating system and .NET SDK.
+For more information, see NuGet signed package verification.
.RE
.SH OPTIONS
.IP \[bu] 2
diff --git a/documentation/manpages/sdk/dotnet-nuget-update-source.1 b/documentation/manpages/sdk/dotnet-nuget-update-source.1
index 6c5a5f83d324..61731576a932 100644
--- a/documentation/manpages/sdk/dotnet-nuget-update-source.1
+++ b/documentation/manpages/sdk/dotnet-nuget-update-source.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-update-source" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-nuget-update-source" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget update source
.PP
diff --git a/documentation/manpages/sdk/dotnet-nuget-verify.1 b/documentation/manpages/sdk/dotnet-nuget-verify.1
index 46eb2d0f0909..9c44b5d070a4 100644
--- a/documentation/manpages/sdk/dotnet-nuget-verify.1
+++ b/documentation/manpages/sdk/dotnet-nuget-verify.1
@@ -15,7 +15,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-nuget-verify" "1" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-nuget-verify" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet nuget verify
.PP
@@ -42,7 +42,8 @@ The \f[V]dotnet nuget verify\f[R] command verifies a signed NuGet package.
.RS
.PP
This command requires a certificate root store that is valid for both code signing and timestamping.
-See NuGet signed package verification for details.
+Also, this command may not be supported on some combinations of operating system and .NET SDK.
+For more information, see NuGet signed package verification.
.RE
.SH ARGUMENTS
.IP \[bu] 2
diff --git a/documentation/manpages/sdk/dotnet-pack.1 b/documentation/manpages/sdk/dotnet-pack.1
index fdc31efb1762..3e79b0ea945c 100644
--- a/documentation/manpages/sdk/dotnet-pack.1
+++ b/documentation/manpages/sdk/dotnet-pack.1
@@ -15,7 +15,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-pack" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-pack" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet pack
.PP
@@ -49,7 +49,7 @@ If you want to generate a package that contains the debug symbols, you have two
\f[V]--include-source\f[R] - it creates the symbols package with a \f[V]src\f[R] folder inside containing the source files.
.PP
NuGet dependencies of the packed project are added to the \f[I].nuspec\f[R] file, so they\[cq]re properly resolved when the package is installed.
-If the packed project has references to other projects, the other projects are not included in the package.
+If the packed project has references to other projects, the other projects aren\[cq]t included in the package.
Currently, you must have a package per project if you have project-to-project dependencies.
.PP
By default, \f[V]dotnet pack\f[R] builds the project first.
@@ -164,6 +164,13 @@ Doesn\[cq]t display the startup banner or the copyright message.
.RS 2
.PP
Places the built packages in the directory specified.
+.IP \[bu] 2
+\&.NET 7.0.200 SDK
+.RS 2
+.PP
+In the 7.0.200 SDK, if you specify the \f[V]--output\f[R] option when running this command on a solution, the CLI will emit an error.
+This is a regression and was fixed in 7.0.201 and later versions of the .NET SDK.
+.RE
.RE
.IP \[bu] 2
\f[B]\f[VB]--runtime \f[B]\f[R]
diff --git a/documentation/manpages/sdk/dotnet-publish.1 b/documentation/manpages/sdk/dotnet-publish.1
index cf31e8276537..bc7601dd03f8 100644
--- a/documentation/manpages/sdk/dotnet-publish.1
+++ b/documentation/manpages/sdk/dotnet-publish.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-publish" "1" "2022-10-24" "" ".NET Documentation"
+.TH "dotnet-publish" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet publish
.PP
@@ -27,7 +27,7 @@ dotnet-publish - Publishes the application and its dependencies to a folder for
.nf
\f[C]
dotnet publish [|] [-a|--arch ]
- [-c|--configuration ]
+ [-c|--configuration ] [--disable-build-servers]
[-f|--framework ] [--force] [--interactive]
[--manifest ] [--no-build] [--no-dependencies]
[--no-restore] [--nologo] [-o|--output ]
@@ -74,6 +74,7 @@ The \f[V]-c\f[R] and \f[V]-o\f[R] parameters map to MSBuild\[cq]s \f[V]Configura
.PP
The \f[V]dotnet publish\f[R] command accepts MSBuild options, such as \f[V]-p\f[R] for setting properties and \f[V]-l\f[R] to define a logger.
For example, you can set an MSBuild property by using the format: \f[V]-p:=\f[R].
+.SS .pubxml files
.PP
You can also set publish-related properties by referring to a \f[I].pubxml\f[R] file.
For example:
@@ -85,10 +86,43 @@ dotnet publish -p:PublishProfile=FolderProfile
.fi
.PP
The preceding example uses the \f[I]FolderProfile.pubxml\f[R] file that is found in the \f[I]/Properties/PublishProfiles\f[R] folder.
-If you specify a path and file extension when setting the \f[V]PublishProfile\f[R] property, they are ignored.
+If you specify a path and file extension when setting the \f[V]PublishProfile\f[R] property, they\[cq]re ignored.
MSBuild by default looks in the \f[I]Properties/PublishProfiles\f[R] folder and assumes the \f[I]pubxml\f[R] file extension.
To specify the path and filename including extension, set the \f[V]PublishProfileFullPath\f[R] property instead of the \f[V]PublishProfile\f[R] property.
.PP
+In the \f[I].pubxml\f[R] file:
+.IP \[bu] 2
+\f[V]PublishUrl\f[R] is used by Visual Studio to denote the Publish target.
+.IP \[bu] 2
+\f[V]PublishDir\f[R] is used by the CLI to denote the Publish target.
+.PP
+If you want the scenario to work in all places, you can initialize both these properties to the same value in the \f[I].pubxml\f[R] file.
+When GitHub issue dotnet/sdk#20931 (https://github.com/dotnet/sdk/issues/20931) is resolved, only one of these properties will need to be set.
+.PP
+Some properties in the \f[I].pubxml\f[R] file are honored only by Visual Studio and have no effect on \f[V]dotnet publish\f[R].
+We\[cq]re working to bring the CLI more into alignment with Visual Studio\[cq]s behavior.
+But some properties will never be used by the CLI.
+The CLI and Visual Studio both do the packaging aspect of publishing, and dotnet/sdk#29817 (https://github.com/dotnet/sdk/pull/29817) plans to add support for more properties related to that.
+But the CLI doesn\[cq]t do the deployment automation aspect of publishing, and properties related to that aren\[cq]t supported.
+The most notable \f[I].pubxml\f[R] properties that aren\[cq]t supported by \f[V]dotnet publish\f[R] are the following ones that impact the build:
+.IP \[bu] 2
+\f[V]LastUsedBuildConfiguration\f[R]
+.IP \[bu] 2
+\f[V]Configuration\f[R]
+.IP \[bu] 2
+\f[V]Platform\f[R]
+.IP \[bu] 2
+\f[V]LastUsedPlatform\f[R]
+.IP \[bu] 2
+\f[V]TargetFramework\f[R]
+.IP \[bu] 2
+\f[V]TargetFrameworks\f[R]
+.IP \[bu] 2
+\f[V]RuntimeIdentifier\f[R]
+.IP \[bu] 2
+\f[V]RuntimeIdentifiers\f[R]
+.SS MSBuild properties
+.PP
The following MSBuild properties change the output of \f[V]dotnet publish\f[R].
.IP \[bu] 2
\f[V]PublishReadyToRun\f[R]
@@ -166,6 +200,15 @@ Defines the build configuration.
The default for most projects is \f[V]Debug\f[R], but you can override the build configuration settings in your project.
.RE
.IP \[bu] 2
+\f[B]\f[VB]--disable-build-servers\f[B]\f[R]
+.RS 2
+.PP
+Forces the command to ignore any persistent build servers.
+This option provides a consistent way to disable all use of build caching, which forces a build from scratch.
+A build that doesn\[cq]t rely on caches is useful when the caches might be corrupted or incorrect for some reason.
+Available since .NET 7 SDK.
+.RE
+.IP \[bu] 2
\f[B]\f[VB]-f|--framework \f[B]\f[R]
.RS 2
.PP
@@ -237,7 +280,7 @@ It defaults to \f[I][project_file_folder]/bin/[configuration]/[framework]/[runti
.PP
In a web project, if the output folder is in the project folder, successive \f[V]dotnet publish\f[R] commands result in nested output folders.
For example, if the project folder is \f[I]myproject\f[R], and the publish output folder is \f[I]myproject/publish\f[R], and you run \f[V]dotnet publish\f[R] twice, the second run puts content files such as \f[I].config\f[R] and \f[I].json\f[R] files in \f[I]myproject/publish/publish\f[R].
-To avoid nesting publish folders, specify a publish folder that is not \f[B]directly\f[R] under the project folder, or exclude the publish folder from the project.
+To avoid nesting publish folders, specify a publish folder that isn\[cq]t \f[B]directly\f[R] under the project folder, or exclude the publish folder from the project.
To exclude a publish folder named \f[I]publishoutput\f[R], add the following element to a \f[V]PropertyGroup\f[R] element in the \f[I].csproj\f[R] file:
.IP
.nf
@@ -246,6 +289,14 @@ To exclude a publish folder named \f[I]publishoutput\f[R], add the following ele
\f[R]
.fi
.IP \[bu] 2
+\&.NET 7.0.200 SDK and later
+.RS 2
+.PP
+If you specify the \f[V]--output\f[R] option when running this command on a solution, the CLI will emit a warning (an error in 7.0.200) due to the unclear semantics of the output path.
+The \f[V]--output\f[R] option is disallowed because all outputs of all built projects would be copied into the specified directory, which isn\[cq]t compatible with multi-targeted projects, as well as projects that have different versions of direct and transitive dependencies.
+For more information, see Solution-level \f[V]--output\f[R] option no longer valid for build-related commands.
+.RE
+.IP \[bu] 2
\&.NET Core 3.x SDK and later
.RS 2
.PP
@@ -408,6 +459,8 @@ Target frameworks
.IP \[bu] 2
Runtime Identifier (RID) catalog
.IP \[bu] 2
+Containerize a .NET app with dotnet publish
+.IP \[bu] 2
Working with macOS Catalina Notarization
.IP \[bu] 2
Directory structure of a published application
@@ -418,4 +471,4 @@ Visual Studio publish profiles (.pubxml) for ASP.NET Core app deployment
.IP \[bu] 2
dotnet msbuild
.IP \[bu] 2
-ILLInk.Tasks
+Trim self-contained deployments
diff --git a/documentation/manpages/sdk/dotnet-remove-package.1 b/documentation/manpages/sdk/dotnet-remove-package.1
index c2677958e921..dd1a66064f1b 100644
--- a/documentation/manpages/sdk/dotnet-remove-package.1
+++ b/documentation/manpages/sdk/dotnet-remove-package.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-remove-package" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-remove-package" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet remove package
.PP
diff --git a/documentation/manpages/sdk/dotnet-remove-reference.1 b/documentation/manpages/sdk/dotnet-remove-reference.1
index da22d2bb3c05..e02531e32e63 100644
--- a/documentation/manpages/sdk/dotnet-remove-reference.1
+++ b/documentation/manpages/sdk/dotnet-remove-reference.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-remove-reference" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-remove-reference" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet remove reference
.PP
diff --git a/documentation/manpages/sdk/dotnet-restore.1 b/documentation/manpages/sdk/dotnet-restore.1
index 9253c251f336..0424884f827b 100644
--- a/documentation/manpages/sdk/dotnet-restore.1
+++ b/documentation/manpages/sdk/dotnet-restore.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-restore" "1" "2022-11-08" "" ".NET Documentation"
+.TH "dotnet-restore" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet restore
.PP
@@ -26,20 +26,27 @@ dotnet-restore - Restores the dependencies and tools of a project.
.IP
.nf
\f[C]
-dotnet restore [] [--configfile ] [--disable-parallel]
+dotnet restore [] [--configfile ] [--disable-build-servers]
+ [--disable-parallel]
[-f|--force] [--force-evaluate] [--ignore-failed-sources]
[--interactive] [--lock-file-path ] [--locked-mode]
[--no-cache] [--no-dependencies] [--packages ]
[-r|--runtime ] [-s|--source ]
- [--use-lock-file] [-v|--verbosity ]
+ [--use-current-runtime, --ucr [true|false]] [--use-lock-file]
+ [-v|--verbosity ]
dotnet restore -h|--help
\f[R]
.fi
.SH DESCRIPTION
.PP
-The \f[V]dotnet restore\f[R] command uses NuGet to restore dependencies as well as project-specific tools that are specified in the project file.
-In most cases, you don\[cq]t need to explicitly use the \f[V]dotnet restore\f[R] command, since a NuGet restore is run implicitly if necessary when you run the following commands:
+A .NET project typically references external libraries in NuGet (https://www.nuget.org) packages that provide additional functionality.
+These external dependencies are referenced in the project file (\f[I].csproj\f[R] or \f[I].vbproj\f[R]).
+When you run the \f[V]dotnet restore\f[R] command, the .NET CLI uses NuGet to look for these dependencies and download them if necessary.
+It also ensures that all the dependencies required by the project are compatible with each other and that there are no conflicts between them.
+Once the command is completed, all the dependencies required by the project are available in a local cache and can be used by the .NET CLI to build and run the application.
+.PP
+In most cases, you don\[cq]t need to explicitly use the \f[V]dotnet restore\f[R] command, since if a NuGet restore is necessary, the following commands run it implicitly:
.IP \[bu] 2
\f[V]dotnet new\f[R]
.IP \[bu] 2
@@ -57,11 +64,11 @@ In most cases, you don\[cq]t need to explicitly use the \f[V]dotnet restore\f[R]
.PP
Sometimes, it might be inconvenient to run the implicit NuGet restore with these commands.
For example, some automated systems, such as build systems, need to call \f[V]dotnet restore\f[R] explicitly to control when the restore occurs so that they can control network usage.
-To prevent the implicit NuGet restore, you can use the \f[V]--no-restore\f[R] flag with any of these commands to disable implicit restore.
+To prevent the implicit NuGet restore, you can use the \f[V]--no-restore\f[R] flag with any of these commands.
.RS
.PP
Signed package verification during restore operations requires a certificate root store that is valid for both code signing and timestamping.
-See NuGet signed package verification for details.
+For more inforomation, see NuGet signed package verification.
.RE
.SS Specify feeds
.PP
@@ -136,6 +143,15 @@ If not specified, the hierarchy of configuration files from the current director
For more information, see Common NuGet Configurations.
.RE
.IP \[bu] 2
+\f[B]\f[VB]--disable-build-servers\f[B]\f[R]
+.RS 2
+.PP
+Forces the command to ignore any persistent build servers.
+This option provides a consistent way to disable all use of build caching, which forces a build from scratch.
+A build that doesn\[cq]t rely on caches is useful when the caches might be corrupted or incorrect for some reason.
+Available since .NET 7 SDK.
+.RE
+.IP \[bu] 2
\f[B]\f[VB]--disable-parallel\f[B]\f[R]
.RS 2
.PP
@@ -221,6 +237,14 @@ This setting overrides all of the sources specified in the \f[I]nuget.config\f[R
Multiple sources can be provided by specifying this option multiple times.
.RE
.IP \[bu] 2
+\f[B]\f[VB]--use-current-runtime, --ucr [true|false]\f[B]\f[R]
+.RS 2
+.PP
+Sets the \f[V]RuntimeIdentifier\f[R] to a platform portable \f[V]RuntimeIdentifier\f[R] based on the one of your machine.
+This happens implicitly with properties that require a \f[V]RuntimeIdentifier\f[R], such as \f[V]SelfContained\f[R], \f[V]PublishAot\f[R], \f[V]PublishSelfContained\f[R], \f[V]PublishSingleFile\f[R], and \f[V]PublishReadyToRun\f[R].
+If the property is set to false, that implicit resolution will no longer occur.
+.RE
+.IP \[bu] 2
\f[B]\f[VB]--use-lock-file\f[B]\f[R]
.RS 2
.PP
@@ -286,3 +310,22 @@ dotnet restore --verbosity detailed
\f[R]
.fi
.RE
+.SS Audit for security vulnerabilities
+.PP
+Starting in .NET 8, you can opt into NuGet security auditing for \f[V]dotnet restore\f[R].
+This auditing produces a report of security vulnerabilities with the affected package name, the severity of the vulnerability, and a link to the advisory for more details.
+.PP
+To opt into security auditing, set the \f[V]\f[R] MSBuild property to \f[V]true\f[R] in your project file.
+Additionally, to retrieve the known vulnerability dataset, ensure that you have the NuGet.org central registry defined as one of your package sources:
+.IP
+.nf
+\f[C]
+
+
+
+\f[R]
+.fi
+.PP
+You can configure the level at which auditing will fail by setting the \f[V]\f[R] MSBuild property.
+Possible values are \f[V]low\f[R], \f[V]moderate\f[R], \f[V]high\f[R], and \f[V]critical\f[R].
+For example if you only want to see moderate, high, and critical advisories, you can set the property to \f[V]moderate\f[R].
diff --git a/documentation/manpages/sdk/dotnet-run.1 b/documentation/manpages/sdk/dotnet-run.1
index 1b79a1de052a..f2d444d68fca 100644
--- a/documentation/manpages/sdk/dotnet-run.1
+++ b/documentation/manpages/sdk/dotnet-run.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-run" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-run" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet run
.PP
diff --git a/documentation/manpages/sdk/dotnet-sdk-check.1 b/documentation/manpages/sdk/dotnet-sdk-check.1
index a0cc0b009c1b..9ad18fa199e8 100644
--- a/documentation/manpages/sdk/dotnet-sdk-check.1
+++ b/documentation/manpages/sdk/dotnet-sdk-check.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-sdk-check" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-sdk-check" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet sdk check
.PP
@@ -45,29 +45,26 @@ Here\[cq]s an example of output from the command:
.nf
\f[C]
\&.NET SDKs:
-Version Status
------------------------------------------------------------
-2.1.816 Up to date.
-2.2.401 .NET 2.2 is out of support.
-3.1.410 Up to date.
-5.0.204 Up to date.
-5.0.301 Up to date.
+Version Status
+----------------------------------------
+3.1.426 .NET 3.1 is out of support.
+7.0.103 Up to date.
+7.0.200 Patch 7.0.201 is available.
\&.NET Runtimes:
-Name Version Status
--------------------------------------------------------------------------------------------
-Microsoft.AspNetCore.All 2.1.28 Up to date.
-Microsoft.AspNetCore.App 2.1.28 Up to date.
-Microsoft.NETCore.App 2.1.28 Up to date.
-Microsoft.AspNetCore.All 2.2.6 .NET 2.2 is out of support.
-Microsoft.AspNetCore.App 2.2.6 .NET 2.2 is out of support.
-Microsoft.NETCore.App 2.2.6 .NET 2.2 is out of support.
-Microsoft.AspNetCore.App 3.1.16 Up to date.
-Microsoft.NETCore.App 3.1.16 Up to date.
-Microsoft.WindowsDesktop.App 3.1.16 Up to date.
-Microsoft.AspNetCore.App 5.0.7 Up to date.
-Microsoft.NETCore.App 5.0.7 Up to date.
-Microsoft.WindowsDesktop.App 5.0.7 Up to date.
+Name Version Status
+--------------------------------------------------------------------------
+Microsoft.AspNetCore.App 5.0.17 .NET 5.0 is out of support.
+Microsoft.NETCore.App 5.0.17 .NET 5.0 is out of support.
+Microsoft.WindowsDesktop.App 5.0.17 .NET 5.0 is out of support.
+Microsoft.NETCore.App 6.0.10 Patch 6.0.14 is available.
+Microsoft.NETCore.App 6.0.11 Patch 6.0.14 is available.
+Microsoft.NETCore.App 6.0.13 Patch 6.0.14 is available.
+Microsoft.AspNetCore.App 7.0.3 Up to date.
+Microsoft.NETCore.App 7.0.3 Up to date.
+Microsoft.WindowsDesktop.App 7.0.3 Up to date.
+
+The latest versions of .NET can be installed from https://aka.ms/dotnet-core-download. For more information about .NET lifecycles, see https://aka.ms/dotnet-core-support.
\f[R]
.fi
.SH OPTIONS
diff --git a/documentation/manpages/sdk/dotnet-sln.1 b/documentation/manpages/sdk/dotnet-sln.1
index 86fe17611c7e..3061cc3fa0e5 100644
--- a/documentation/manpages/sdk/dotnet-sln.1
+++ b/documentation/manpages/sdk/dotnet-sln.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-sln" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-sln" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet sln
.PP
diff --git a/documentation/manpages/sdk/dotnet-store.1 b/documentation/manpages/sdk/dotnet-store.1
index 56054106158b..71118ee254e0 100644
--- a/documentation/manpages/sdk/dotnet-store.1
+++ b/documentation/manpages/sdk/dotnet-store.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-store" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-store" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet store
.PP
diff --git a/documentation/manpages/sdk/dotnet-test.1 b/documentation/manpages/sdk/dotnet-test.1
index 04332ef15a98..049753cd67de 100644
--- a/documentation/manpages/sdk/dotnet-test.1
+++ b/documentation/manpages/sdk/dotnet-test.1
@@ -15,7 +15,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-test" "1" "2022-11-11" "" ".NET Documentation"
+.TH "dotnet-test" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet test
.PP
@@ -114,7 +114,7 @@ If not specified, the effect is the same as using the \f[V]DIRECTORY\f[R] argume
.IP \[bu] 2
Starting in .NET 7: switch \f[V]-a\f[R] to alias \f[V]--arch\f[R] instead of \f[V]--test-adapter-path\f[R]
.IP \[bu] 2
-Starting in .NET 7: switch \f[V]-r\f[R] to alias \f[V]--runtime\f[R] instead of \f[V]--results-dir\f[R]
+Starting in .NET 7: switch \f[V]-r\f[R] to alias \f[V]--runtime\f[R] instead of \f[V]--results-directory\f[R]
.RE
.IP \[bu] 2
\f[B]\f[VB]--test-adapter-path \f[B]\f[R]
@@ -231,10 +231,10 @@ The default for most projects is \f[V]Debug\f[R], but you can override the build
Enables data collector for the test run.
For more information, see Monitor and analyze test run (https://aka.ms/vstest-collect).
.PP
-On Windows (x86, x64 and Arm64), Linux (x64) and macOS (x64), you can collect code coverage by using the \f[V]--collect \[dq]Code Coverage\[dq]\f[R] option.
-For more information, see Use code coverage and Customize code coverage analysis.
+For example you can collect code coverage by using the \f[V]--collect \[dq]Code Coverage\[dq]\f[R] option.
+For more information, see Use code coverage, Customize code coverage analysis, and GitHub issue dotnet/docs#34479 (https://github.com/dotnet/docs/issues/34479).
.PP
-To collect code coverage on any platform that is supported by .NET Core, install Coverlet (https://github.com/coverlet-coverage/coverlet/blob/master/README.md) and use the \f[V]--collect \[dq]XPlat Code Coverage\[dq]\f[R] option.
+To collect code coverage you can also use Coverlet (https://github.com/coverlet-coverage/coverlet/blob/master/README.md) by using the \f[V]--collect \[dq]XPlat Code Coverage\[dq]\f[R] option.
.RE
.IP \[bu] 2
\f[B]\f[VB]-d|--diag \f[B]\f[R]
@@ -263,7 +263,8 @@ The target framework must also be specified in the project file.
\f[B]\f[VB]--filter \f[B]\f[R]
.RS 2
.PP
-Filters out tests in the current project using the given expression.
+Filters tests in the current project using the given expression.
+Only tests that match the filter expression are run.
For more information, see the Filter option details section.
For more information and examples on how to use selective unit test filtering, see Running selective unit tests.
.RE
@@ -285,10 +286,21 @@ Available since .NET Core 3.0 SDK.
\f[B]\f[VB]-l|--logger \f[B]\f[R]
.RS 2
.PP
-Specifies a logger for test results.
-Unlike MSBuild, \f[V]dotnet test\f[R] doesn\[cq]t accept abbreviations: instead of \f[V]-l \[dq]console;v=d\[dq]\f[R] use \f[V]-l \[dq]console;verbosity=detailed\[dq]\f[R].
-Specify the parameter multiple times to enable multiple loggers.
-For more information, see Reporting test results (https://github.com/Microsoft/vstest-docs/blob/main/docs/report.md), Switches for loggers, and the examples later in this article.
+Specifies a logger for test results and optionally switches for the logger.
+Specify this parameter multiple times to enable multiple loggers.
+For more information, see Reporting test results (https://github.com/microsoft/vstest/blob/main/docs/report.md#available-test-loggers), Switches for loggers, and the examples later in this article.
+.PP
+In order to pass command-line switches to the logger:
+.IP \[bu] 2
+Use the full name of the switch, not the abbreviated form (for example, \f[V]verbosity\f[R] instead of \f[V]v\f[R]).
+.IP \[bu] 2
+Omit any leading dashes.
+.IP \[bu] 2
+Replace the space separating each switch with a semicolon \f[V];\f[R].
+.IP \[bu] 2
+If the switch has a value, replace the colon separator between that switch and its value with the equals sign \f[V]=\f[R].
+.PP
+For example, \f[V]-v:detailed --consoleLoggerParameters:ErrorsOnly\f[R] would become \f[V]verbosity=detailed;consoleLoggerParameters=ErrorsOnly\f[R].
.RE
.IP \[bu] 2
\f[B]\f[VB]--no-build\f[B]\f[R]
@@ -319,6 +331,14 @@ If not specified, the default path is \f[V]./bin///\f[
For projects with multiple target frameworks (via the \f[V]TargetFrameworks\f[R] property), you also need to define \f[V]--framework\f[R] when you specify this option.
\f[V]dotnet test\f[R] always runs tests from the output directory.
You can use to consume test assets in the output directory.
+.IP \[bu] 2
+\&.NET 7.0.200 SDK and later
+.RS 2
+.PP
+If you specify the \f[V]--output\f[R] option when running this command on a solution, the CLI will emit a warning (an error in 7.0.200) due to the unclear semantics of the output path.
+The \f[V]--output\f[R] option is disallowed because all outputs of all built projects would be copied into the specified directory, which isn\[cq]t compatible with multi-targeted projects, as well as projects that have different versions of direct and transitive dependencies.
+For more information, see Solution-level \f[V]--output\f[R] option no longer valid for build-related commands.
+.RE
.RE
.IP \[bu] 2
\f[B]\f[VB]--os \f[B]\f[R]
@@ -640,4 +660,4 @@ Frameworks and Targets
.IP \[bu] 2
\&.NET Runtime Identifier (RID) catalog
.IP \[bu] 2
-Passing runsettings arguments through commandline (https://github.com/Microsoft/vstest-docs/blob/main/docs/RunSettingsArguments.md)
+Passing runsettings arguments through commandline (https://github.com/microsoft/vstest/blob/main/docs/RunSettingsArguments.md)
diff --git a/documentation/manpages/sdk/dotnet-tool-install.1 b/documentation/manpages/sdk/dotnet-tool-install.1
index 005195581797..bba2f1319ad2 100644
--- a/documentation/manpages/sdk/dotnet-tool-install.1
+++ b/documentation/manpages/sdk/dotnet-tool-install.1
@@ -15,7 +15,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-tool-install" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-tool-install" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet tool install
.PP
@@ -28,6 +28,7 @@ dotnet-tool-install - Installs the specified .NET tool on your machine.
.nf
\f[C]
dotnet tool install -g|--global
+ [-a|--arch ]
[--add-source ] [--configfile ] [--disable-parallel]
[--framework ] [--ignore-failed-sources] [--interactive]
[--no-cache] [--prerelease]
@@ -35,6 +36,7 @@ dotnet tool install -g|--global
[--version ]
dotnet tool install --tool-path
+ [-a|--arch ]
[--add-source ] [--configfile ] [--disable-parallel]
[--framework ] [--ignore-failed-sources] [--interactive]
[--no-cache] [--prerelease]
@@ -42,7 +44,9 @@ dotnet tool install --tool-path
[--version ]
dotnet tool install [--local]
- [--add-source ] [--configfile ] [--disable-parallel]
+ [-a|--arch ]
+ [--add-source ] [--configfile ]
+ [--create-manifest-if-needed] [--disable-parallel]
[--framework ] [--ignore-failed-sources] [--interactive]
[--no-cache] [--prerelease]
[--tool-manifest ] [-v|--verbosity ]
@@ -61,6 +65,8 @@ To install a global tool in the default location, use the \f[V]--global\f[R] opt
To install a global tool in a custom location, use the \f[V]--tool-path\f[R] option.
.IP \[bu] 2
To install a local tool, omit the \f[V]--global\f[R] and \f[V]--tool-path\f[R] options.
+.SS Installation locations
+.SS Global tools
.PP
Global tools are installed in the following directories by default when you specify the \f[V]-g\f[R] or \f[V]--global\f[R] option:
.PP
@@ -85,8 +91,18 @@ T}@T{
T}
.TE
.PP
-Local tools are added to a \f[I]dotnet-tools.json\f[R] file in a \f[I].config\f[R] directory under the current directory.
-If a manifest file doesn\[cq]t exist yet, create it by running the following command:
+Executables are generated in these folders for each globally installed tool, although the actual tool binaries are nested deep into the sibling \f[V].store\f[R] directory.
+.SS \f[V]--tool-path\f[R] tools
+.PP
+Local tools with explicit tool paths are stored wherever you specified the \f[V]--tool-path\f[R] parameter to point to.
+They\[cq]re stored in the same way as global tools: an executable binary with the actual binaries in a sibling \f[V].store\f[R] directory.
+.SS Local tools
+.PP
+Local tools are stored in the NuGet global directory, whatever you\[cq]ve set that to be.
+There are shim files in \f[V]$HOME/.dotnet/toolResolverCache\f[R] for each local tool that point to where the tools are within that location.
+.PP
+References to local tools are added to a \f[I]dotnet-tools.json\f[R] file in a \f[I].config\f[R] directory under the current directory.
+If a manifest file doesn\[cq]t exist yet, create it by using the \f[V]--create-manifest-if-needed\f[R] option or by running the following command:
.IP
.nf
\f[C]
@@ -104,6 +120,14 @@ Name/ID of the NuGet package that contains the .NET tool to install.
.RE
.SH OPTIONS
.IP \[bu] 2
+\f[B]\f[VB]-a|--arch \f[B]\f[R]
+.RS 2
+.PP
+Specifies the target architecture.
+This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID.
+For example, on a \f[V]win-x64\f[R] machine, specifying \f[V]--arch x86\f[R] sets the RID to \f[V]win-x86\f[R].
+.RE
+.IP \[bu] 2
\f[B]\f[VB]--add-source \f[B]\f[R]
.RS 2
.PP
@@ -122,6 +146,26 @@ If not specified, the hierarchy of configuration files from the current director
For more information, see Common NuGet Configurations.
.RE
.IP \[bu] 2
+\f[B]\f[VB]--create-manifest-if-needed\f[B]\f[R]
+.RS 2
+.PP
+Applies to local tools.
+To find a manifest, the search algorithm searches up the directory tree for \f[V]dotnet-tools.json\f[R] or a \f[V].config\f[R] folder that contains a \f[V]dotnet-tools.json\f[R] file.
+.PP
+If a tool-manifest can\[cq]t be found and the \f[V]--create-manifest-if-needed\f[R] option is set to false, the \f[V]CannotFindAManifestFile\f[R] error occurs.
+.PP
+If a tool-manifest can\[cq]t be found and the \f[V]--create-manifest-if-needed\f[R] option is set to true, the tool creates a manifest automatically.
+It chooses a folder for the manifest as follows:
+.IP \[bu] 2
+Walk up the directory tree searching for a directory that has a \f[V].git\f[R] subfolder.
+If one is found, create the manifest in that directory.
+.IP \[bu] 2
+If the previous step doesn\[cq]t find a directory, walk up the directory tree searching for a directory that has a \f[V].sln/git\f[R] file.
+If one is found, create the manifest in that directory.
+.IP \[bu] 2
+If neither of the previous two steps finds a directory, create the manifest in the current working directory.
+.RE
+.IP \[bu] 2
\f[B]\f[VB]--disable-parallel\f[B]\f[R]
.RS 2
.PP
@@ -172,7 +216,7 @@ Can\[cq]t be combined with the \f[V]--global\f[R] option or the \f[V]--tool-path
\f[B]\f[VB]--no-cache\f[B]\f[R]
.RS 2
.PP
-Do not cache packages and HTTP requests.
+Don\[cq]t cache packages and HTTP requests.
.RE
.IP \[bu] 2
\f[B]\f[VB]--prerelease\f[B]\f[R]
diff --git a/documentation/manpages/sdk/dotnet-tool-list.1 b/documentation/manpages/sdk/dotnet-tool-list.1
index 7e3506359832..4d892b2e1c90 100644
--- a/documentation/manpages/sdk/dotnet-tool-list.1
+++ b/documentation/manpages/sdk/dotnet-tool-list.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-tool-list" "1" "2022-10-24" "" ".NET Documentation"
+.TH "dotnet-tool-list" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet tool list
.PP
@@ -32,6 +32,8 @@ dotnet tool list --tool-path
dotnet tool list --local
+dotnet tool list []
+
dotnet tool list
dotnet tool list -h|--help
@@ -39,7 +41,7 @@ dotnet tool list -h|--help
.fi
.SH DESCRIPTION
.PP
-The \f[V]dotnet tool list\f[R] command provides a way for you to list all .NET global, tool-path, or local tools installed on your machine.
+The \f[V]dotnet tool list\f[R] command provides a way for you to list .NET global, tool-path, or local tools installed on your machine.
The command lists the package name, version installed, and the tool command.
To use the command, you specify one of the following:
.IP \[bu] 2
@@ -48,6 +50,18 @@ To list global tools installed in the default location, use the \f[V]--global\f[
To list global tools installed in a custom location, use the \f[V]--tool-path\f[R] option.
.IP \[bu] 2
To list local tools, use the \f[V]--local\f[R] option or omit the \f[V]--global\f[R], \f[V]--tool-path\f[R], and \f[V]--local\f[R] options.
+.IP \[bu] 2
+To list a specific tool, use the optional \f[V]PACKAGE_ID\f[R] argument.
+.SH ARGUMENTS
+.IP \[bu] 2
+\f[B]\f[VB]PACKAGE_ID\f[B]\f[R]
+.RS 2
+.PP
+Lists the tool that has the supplied package ID if the tool is installed.
+Can be used in conjunction with options.
+Provides a way to check if a specific tool was installed.
+The command returns 1 if no tool with the specified package ID is found; returns 0 otherwise.
+.RE
.SH OPTIONS
.IP \[bu] 2
\f[B]\f[VB]-g|--global\f[B]\f[R]
@@ -105,6 +119,18 @@ Lists the global tools from a specific Linux/macOS directory.
.PP
Lists all local tools available in the current directory.
.RE
+.IP \[bu] 2
+\f[B]\f[VB]dotnet tool list -g dotnetsay\f[B]\f[R]
+.RS 2
+.PP
+Lists the global tool with the package id dotnetsay (https://www.nuget.org/packages/dotnetsay/)
+.RE
+.IP \[bu] 2
+\f[B]\f[VB]dotnet tool list dotnetsay\f[B]\f[R]
+.RS 2
+.PP
+Lists the local tool with the package id dotnetsay (https://www.nuget.org/packages/dotnetsay/)
+.RE
.SH SEE ALSO
.IP \[bu] 2
\&.NET tools
diff --git a/documentation/manpages/sdk/dotnet-tool-restore.1 b/documentation/manpages/sdk/dotnet-tool-restore.1
index cb148aff47cc..fa7dff98877f 100644
--- a/documentation/manpages/sdk/dotnet-tool-restore.1
+++ b/documentation/manpages/sdk/dotnet-tool-restore.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-tool-restore" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-tool-restore" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet tool restore
.PP
@@ -39,6 +39,8 @@ dotnet tool restore -h|--help
.PP
The \f[V]dotnet tool restore\f[R] command finds the tool manifest file that is in scope for the current directory and installs the tools that are listed in it.
For information about manifest files, see Install a local tool and Invoke a local tool.
+.PP
+For information about where local tools are stored, see dotnet tool install.
.SH OPTIONS
.IP \[bu] 2
\f[B]\f[VB]--configfile \f[B]\f[R]
diff --git a/documentation/manpages/sdk/dotnet-tool-run.1 b/documentation/manpages/sdk/dotnet-tool-run.1
index 6dd2eaed1d94..7f40c7ed2a87 100644
--- a/documentation/manpages/sdk/dotnet-tool-run.1
+++ b/documentation/manpages/sdk/dotnet-tool-run.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-tool-run" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-tool-run" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet tool run
.PP
diff --git a/documentation/manpages/sdk/dotnet-tool-search.1 b/documentation/manpages/sdk/dotnet-tool-search.1
index d3e9283c3d77..c2d4d0e5af6c 100644
--- a/documentation/manpages/sdk/dotnet-tool-search.1
+++ b/documentation/manpages/sdk/dotnet-tool-search.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-tool-search" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-tool-search" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet tool search
.PP
diff --git a/documentation/manpages/sdk/dotnet-tool-uninstall.1 b/documentation/manpages/sdk/dotnet-tool-uninstall.1
index c53f87c58bef..4ed65d5bedfc 100644
--- a/documentation/manpages/sdk/dotnet-tool-uninstall.1
+++ b/documentation/manpages/sdk/dotnet-tool-uninstall.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-tool-uninstall" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-tool-uninstall" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet tool uninstall
.PP
@@ -28,7 +28,7 @@ dotnet-tool-uninstall - Uninstalls the specified .NET tool from your machine.
\f[C]
dotnet tool uninstall -g|--global
-dotnet tool uninstall --tool-path
+dotnet tool uninstall --tool-path [--tool-manifest ]
dotnet tool uninstall
@@ -77,6 +77,14 @@ PATH can be absolute or relative.
Can\[cq]t be combined with the \f[V]--global\f[R] option.
Omitting both \f[V]--global\f[R] and \f[V]--tool-path\f[R] specifies that the tool to be removed is a local tool.
.RE
+.IP \[bu] 2
+\f[B]\f[VB]--tool-manifest \f[B]\f[R]
+.RS 2
+.PP
+Specifies the manifest file that the tool is to be removed from.
+PATH can be absolute or relative.
+Can\[cq]t be combined with the \f[V]--global\f[R] option.
+.RE
.SH EXAMPLES
.IP \[bu] 2
\f[B]\f[VB]dotnet tool uninstall -g dotnetsay\f[B]\f[R]
diff --git a/documentation/manpages/sdk/dotnet-tool-update.1 b/documentation/manpages/sdk/dotnet-tool-update.1
index 1184c880d083..f677365fa8c5 100644
--- a/documentation/manpages/sdk/dotnet-tool-update.1
+++ b/documentation/manpages/sdk/dotnet-tool-update.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-tool-update" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-tool-update" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet tool update
.PP
@@ -29,19 +29,22 @@ dotnet-tool-update - Updates the specified .NET tool on your machine.
dotnet tool update -g|--global
[--add-source ] [--configfile ]
[--disable-parallel] [--framework ]
- [--ignore-failed-sources] [--interactive] [--no-cache]
+ [--ignore-failed-sources] [--interactive]
+ [--no-cache] [--prerelease]
[-v|--verbosity ] [--version ]
dotnet tool update --tool-path
[--add-source ] [--configfile ]
[--disable-parallel] [--framework ]
- [--ignore-failed-sources] [--interactive] [--no-cache]
+ [--ignore-failed-sources] [--interactive]
+ [--no-cache] [--prerelease]
[-v|--verbosity ] [--version ]
dotnet tool update --local
[--add-source ] [--configfile ]
[--disable-parallel] [--framework ]
- [--ignore-failed-sources] [--interactive] [--no-cache]
+ [--ignore-failed-sources] [--interactive]
+ [--no-cache] [--prerelease]
[--tool-manifest ]
[-v|--verbosity ] [--version ]
@@ -139,6 +142,12 @@ Can\[cq]t be combined with the \f[V]--global\f[R] option or the \f[V]--tool-path
Do not cache packages and HTTP requests.
.RE
.IP \[bu] 2
+\f[B]\f[VB]--prerelease\f[B]\f[R]
+.RS 2
+.PP
+Include prerelease versions.
+.RE
+.IP \[bu] 2
\f[B]\f[VB]--tool-manifest \f[B]\f[R]
.RS 2
.PP
diff --git a/documentation/manpages/sdk/dotnet-vstest.1 b/documentation/manpages/sdk/dotnet-vstest.1
index 36446c04cbea..e5f6a27f8dc8 100644
--- a/documentation/manpages/sdk/dotnet-vstest.1
+++ b/documentation/manpages/sdk/dotnet-vstest.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-vstest" "1" "2022-06-23" "" ".NET Documentation"
+.TH "dotnet-vstest" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet vstest
.PP
diff --git a/documentation/manpages/sdk/dotnet-watch.1 b/documentation/manpages/sdk/dotnet-watch.1
index e1016d422a79..f4e30e873ce1 100644
--- a/documentation/manpages/sdk/dotnet-watch.1
+++ b/documentation/manpages/sdk/dotnet-watch.1
@@ -14,19 +14,20 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-watch" "1" "2022-11-10" "" ".NET Documentation"
+.TH "dotnet-watch" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet watch
.PP
\f[B]This article applies to:\f[R] \[u2714]\[uFE0F] .NET Core 3.1 SDK and later versions
.SH NAME
.PP
-dotnet-watch - Restarts or hot reloads the specified application when changes in the source code are detected.
+dotnet-watch - Restarts or hot reloads the specified application, or runs a specified dotnet command, when changes in source code are detected.
.SH SYNOPSIS
.IP
.nf
\f[C]
-dotnet watch [--list]
+dotnet watch []
+ [--list]
[--no-hot-reload] [--non-interactive]
[--project ]
[-q|--quiet] [-v|--verbose]
@@ -39,8 +40,9 @@ dotnet watch -?|-h|--help
.SH DESCRIPTION
.PP
The \f[V]dotnet watch\f[R] command is a file watcher.
-When it detects a change that is supported for hot reload, it hot reloads the specified application.
-When it detects an unsupported change, it restarts the application.
+When it detects a change, it runs the \f[V]dotnet run\f[R] command or a specified \f[V]dotnet\f[R] command.
+If it runs \f[V]dotnet run\f[R], and the change is supported for hot reload, it hot reloads the specified application.
+If the change isn\[cq]t supported, it restarts the application.
This process enables fast iterative development from the command line.
.PP
While running \f[V]dotnet watch\f[R], you can force the app to rebuild and restart by pressing Ctrl+R in the command shell.
@@ -72,13 +74,21 @@ As an alternative to disabling response compression, manually add the browser re
.fi
.SH ARGUMENTS
.IP \[bu] 2
-\f[B]\f[VB]forwarded arguments\f[B]\f[R]
+\f[B]\f[VB]command\f[B]\f[R]
.RS 2
.PP
-Arguments to pass to the child \f[V]dotnet\f[R] process.
-For example: \f[V]run\f[R] with options for dotnet run or \f[V]test\f[R] with options for dotnet test.
+\f[V]dotnet watch\f[R] can run any command that is dispatched via the \f[V]dotnet\f[R] executable, such as built-in CLI commands and global tools.
+If you can run \f[V]dotnet \f[R], you can run \f[V]dotnet watch \f[R].
If the child command isn\[cq]t specified, the default is \f[V]run\f[R] for \f[V]dotnet run\f[R].
.RE
+.IP \[bu] 2
+\f[B]\f[VB]forwarded arguments\f[B]\f[R]
+.RS 2
+.PP
+Arguments provided after a double dash (\f[V]--\f[R]) are passed to the child \f[V]dotnet\f[R] process.
+If you\[cq]re running \f[V]dotnet watch run\f[R], these arguments are options for dotnet run.
+If you\[cq]re running \f[V]dotnet watch test\f[R], these arguments are options for dotnet test.
+.RE
.SH OPTIONS
.IP \[bu] 2
\f[B]\f[VB]--list\f[B]\f[R]
@@ -218,6 +228,12 @@ If this variable is set to \f[V]1\f[R] or \f[V]true\f[R], these optimizations ar
When set to \f[V]1\f[R] or \f[V]true\f[R], \f[V]dotnet watch\f[R] won\[cq]t do special handling for static content files.
\f[V]dotnet watch\f[R] sets MSBuild property \f[V]DotNetWatchContentFiles\f[R] to \f[V]false\f[R].
.RE
+.IP \[bu] 2
+\f[B]\f[VB]DOTNET_WATCH_RESTART_ON_RUDE_EDIT\f[B]\f[R]
+.RS 2
+.PP
+When set to \f[V]1\f[R] or \f[V]true\f[R], \f[V]dotnet watch\f[R] will always restart on rude edits instead of asking.
+.RE
.SS Files watched by default
.PP
\f[V]dotnet watch\f[R] watches all items in the \f[V]Watch\f[R] item group in the project file.
diff --git a/documentation/manpages/sdk/dotnet-workload-install.1 b/documentation/manpages/sdk/dotnet-workload-install.1
index 60863d90eb84..b2274d460ced 100644
--- a/documentation/manpages/sdk/dotnet-workload-install.1
+++ b/documentation/manpages/sdk/dotnet-workload-install.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-workload-install" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-workload-install" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet workload install
.PP
diff --git a/documentation/manpages/sdk/dotnet-workload-list.1 b/documentation/manpages/sdk/dotnet-workload-list.1
index b3d433be1008..65d5d791ae6e 100644
--- a/documentation/manpages/sdk/dotnet-workload-list.1
+++ b/documentation/manpages/sdk/dotnet-workload-list.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-workload-list" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-workload-list" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet workload list
.PP
diff --git a/documentation/manpages/sdk/dotnet-workload-repair.1 b/documentation/manpages/sdk/dotnet-workload-repair.1
index 5badb80746e6..9aca76eaf5fe 100644
--- a/documentation/manpages/sdk/dotnet-workload-repair.1
+++ b/documentation/manpages/sdk/dotnet-workload-repair.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-workload-repair" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-workload-repair" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet workload repair
.PP
diff --git a/documentation/manpages/sdk/dotnet-workload-restore.1 b/documentation/manpages/sdk/dotnet-workload-restore.1
index 2d7a8bc16f90..041a4fe4fde9 100644
--- a/documentation/manpages/sdk/dotnet-workload-restore.1
+++ b/documentation/manpages/sdk/dotnet-workload-restore.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-workload-restore" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-workload-restore" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet workload restore
.PP
diff --git a/documentation/manpages/sdk/dotnet-workload-search.1 b/documentation/manpages/sdk/dotnet-workload-search.1
index 63cbe6926e66..13a34cd9f126 100644
--- a/documentation/manpages/sdk/dotnet-workload-search.1
+++ b/documentation/manpages/sdk/dotnet-workload-search.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-workload-search" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-workload-search" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet workload search
.PP
diff --git a/documentation/manpages/sdk/dotnet-workload-uninstall.1 b/documentation/manpages/sdk/dotnet-workload-uninstall.1
index 5addb567d442..7ae3bc585ad5 100644
--- a/documentation/manpages/sdk/dotnet-workload-uninstall.1
+++ b/documentation/manpages/sdk/dotnet-workload-uninstall.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-workload-uninstall" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-workload-uninstall" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet workload uninstall
.PP
diff --git a/documentation/manpages/sdk/dotnet-workload-update.1 b/documentation/manpages/sdk/dotnet-workload-update.1
index 6a6c7fccb878..2fcb73636e2b 100644
--- a/documentation/manpages/sdk/dotnet-workload-update.1
+++ b/documentation/manpages/sdk/dotnet-workload-update.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-workload-update" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet-workload-update" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet workload update
.PP
diff --git a/documentation/manpages/sdk/dotnet-workload.1 b/documentation/manpages/sdk/dotnet-workload.1
index afa4bffa724b..2ebcc28169e7 100644
--- a/documentation/manpages/sdk/dotnet-workload.1
+++ b/documentation/manpages/sdk/dotnet-workload.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet-workload" "1" "2022-10-26" "" ".NET Documentation"
+.TH "dotnet-workload" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet workload command
.PP
diff --git a/documentation/manpages/sdk/dotnet.1 b/documentation/manpages/sdk/dotnet.1
index 3192ae079b47..2399938b617f 100644
--- a/documentation/manpages/sdk/dotnet.1
+++ b/documentation/manpages/sdk/dotnet.1
@@ -15,7 +15,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "dotnet" "1" "2022-10-10" "" ".NET Documentation"
+.TH "dotnet" "1" "2023-10-25" "" ".NET Documentation"
.hy
.SH dotnet command
.PP
@@ -178,7 +178,7 @@ For more information, see Runtime Configuration Files (https://github.com/dotnet
.RE
.PP
.IP \[bu] 2
-\f[B]\f[VB]--roll-forward \f[B]\f[R] **
+\f[B]\f[VB]--roll-forward \f[B]\f[R]
.RS 2
.PP
Controls how roll forward is applied to the app.
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 59df8657f611..03b407cd09dd 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,59 +1,59 @@
-
- https://dev.azure.com/dnceng/internal/_git/dotnet-templating
- 4085146587b833948a22587b36a108bcdb3f04a3
+
+ https://github.com/dotnet/templating
+ fbeda4751af816d3555ea4dff95dbb3a5da35543
-
- https://dev.azure.com/dnceng/internal/_git/dotnet-templating
- 4085146587b833948a22587b36a108bcdb3f04a3
+
+ https://github.com/dotnet/templating
+ fbeda4751af816d3555ea4dff95dbb3a5da35543
-
- https://dev.azure.com/dnceng/internal/_git/dotnet-templating
- 4085146587b833948a22587b36a108bcdb3f04a3
+
+ https://github.com/dotnet/templating
+ fbeda4751af816d3555ea4dff95dbb3a5da35543
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- 5535e31a712343a63f5d7d796cd874e563e5ac14
+ bf5e279d9239bfef5bb1b8d6212f1b971c434606
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- 5535e31a712343a63f5d7d796cd874e563e5ac14
+ bf5e279d9239bfef5bb1b8d6212f1b971c434606
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- 5535e31a712343a63f5d7d796cd874e563e5ac14
+ bf5e279d9239bfef5bb1b8d6212f1b971c434606
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- 5535e31a712343a63f5d7d796cd874e563e5ac14
+ bf5e279d9239bfef5bb1b8d6212f1b971c434606
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- 5535e31a712343a63f5d7d796cd874e563e5ac14
+ bf5e279d9239bfef5bb1b8d6212f1b971c434606
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- 5535e31a712343a63f5d7d796cd874e563e5ac14
+ bf5e279d9239bfef5bb1b8d6212f1b971c434606
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- 5535e31a712343a63f5d7d796cd874e563e5ac14
+ bf5e279d9239bfef5bb1b8d6212f1b971c434606https://dev.azure.com/dnceng/internal/_git/dotnet-runtime5535e31a712343a63f5d7d796cd874e563e5ac14
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- 5535e31a712343a63f5d7d796cd874e563e5ac14
+ bf5e279d9239bfef5bb1b8d6212f1b971c434606
-
+ https://github.com/dotnet/emsdk
- 2406616d0e3a31d80b326e27c156955bfa41c791
+ 201f4dae9d1a1e105d8ba86d7ece61eed1f665e0https://github.com/dotnet/msbuild
@@ -68,56 +68,56 @@
195e7f5a3a8e51c37d83cd9e54cb99dc3fc69c22
-
+ https://github.com/dotnet/fsharp
- f41fe153f68dd6b20cf4f91de9ea1e55fc09bb20
+ 424e4b7cffb7656efd63f7a905a2498e39011104
-
+ https://github.com/dotnet/fsharp
- f41fe153f68dd6b20cf4f91de9ea1e55fc09bb20
+ 424e4b7cffb7656efd63f7a905a2498e39011104
-
- https://dev.azure.com/dnceng/internal/_git/dotnet-format
- 2651752953c0d41c8c7b8d661cf2237151af33d0
+
+ https://github.com/dotnet/format
+ 28925c0e519d66c80328aacf973b74e40bb1d5bd
-
+ https://github.com/dotnet/roslyn
- f43cd10b737b6343956dee421cff8c50b602c788
+ 7b75981cf3bd520b86ec4ed00ec156c8bc48e4eb
-
+ https://github.com/dotnet/roslyn
- f43cd10b737b6343956dee421cff8c50b602c788
+ 7b75981cf3bd520b86ec4ed00ec156c8bc48e4eb
-
+ https://github.com/dotnet/roslyn
- f43cd10b737b6343956dee421cff8c50b602c788
+ 7b75981cf3bd520b86ec4ed00ec156c8bc48e4eb
-
+ https://github.com/dotnet/roslyn
- f43cd10b737b6343956dee421cff8c50b602c788
+ 7b75981cf3bd520b86ec4ed00ec156c8bc48e4eb
-
+ https://github.com/dotnet/roslyn
- f43cd10b737b6343956dee421cff8c50b602c788
+ 7b75981cf3bd520b86ec4ed00ec156c8bc48e4eb
-
+ https://github.com/dotnet/roslyn
- f43cd10b737b6343956dee421cff8c50b602c788
+ 7b75981cf3bd520b86ec4ed00ec156c8bc48e4eb
-
+ https://github.com/dotnet/roslyn
- f43cd10b737b6343956dee421cff8c50b602c788
+ 7b75981cf3bd520b86ec4ed00ec156c8bc48e4eb
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1chttps://github.com/nuget/nuget.client
@@ -183,22 +183,22 @@
https://github.com/nuget/nuget.client0dd5a1ea536201af94725353e4bc711d7560b246
-
+ https://github.com/microsoft/vstest
- ae25c3b96fe433c60af70e3991ace49fcbf7e970
+ 3259862fadd5e784564e7d920a2d61a75f415a79
-
+ https://github.com/microsoft/vstest
- ae25c3b96fe433c60af70e3991ace49fcbf7e970
+ 3259862fadd5e784564e7d920a2d61a75f415a79
-
+ https://github.com/microsoft/vstest
- ae25c3b96fe433c60af70e3991ace49fcbf7e970
+ 3259862fadd5e784564e7d920a2d61a75f415a79
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
- 5535e31a712343a63f5d7d796cd874e563e5ac14
+ bf5e279d9239bfef5bb1b8d6212f1b971c434606https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
@@ -216,99 +216,99 @@
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime5535e31a712343a63f5d7d796cd874e563e5ac14
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop
- c0170915ed6c164a594cd9d558d44aaf98fc6961
+ a0e7b5d8673f28c41bcac6e2001b39ba2c8fab54
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop
- c0170915ed6c164a594cd9d558d44aaf98fc6961
+ a0e7b5d8673f28c41bcac6e2001b39ba2c8fab54
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop
- c0170915ed6c164a594cd9d558d44aaf98fc6961
+ a0e7b5d8673f28c41bcac6e2001b39ba2c8fab54
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop
- c0170915ed6c164a594cd9d558d44aaf98fc6961
+ a0e7b5d8673f28c41bcac6e2001b39ba2c8fab54
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-wpf
- 239f8da8fbf8cf2a6cd0c793f0d02679bf4ccf6a
+ ac40bed7a33baf164d3984ca90c2aedba996a7b2
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://github.com/dotnet/razor
- 94fc3bd6fb6c8611fd4495e350db0560f46ece19
+ 8c7fb27bf8e8d4f9ff8080b624b35bca5e812e97
-
+ https://github.com/dotnet/razor
- 94fc3bd6fb6c8611fd4495e350db0560f46ece19
+ 8c7fb27bf8e8d4f9ff8080b624b35bca5e812e97
-
+ https://github.com/dotnet/razor
- 94fc3bd6fb6c8611fd4495e350db0560f46ece19
+ 8c7fb27bf8e8d4f9ff8080b624b35bca5e812e97
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1c
-
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
- 3f1acb59718cadf111a0a796681e3d3509bb3381
+ 8e941eb42f819adb116b881195158b3887a70a1chttps://github.com/dotnet/xdt
@@ -337,44 +337,44 @@
02fe27cd6a9b001c8feb7938e6ef4b3799745759
-
+ https://github.com/dotnet/source-build-externals
- 3dc05150cf234f76f6936dcb2853d31a0da1f60e
+ e844aa02a05b90d8cbe499676ec6ee0f19ec4980
-
+ https://github.com/dotnet/source-build-reference-packages
- b4fa7f2e1e65ef49881be2ab2df27624280a8c55
+ 95f83e27806330fec09edd96e06bba3acabe3f35https://github.com/dotnet/deployment-tools5957c5c5f85f17c145e7fab4ece37ad6aafcded9
-
+ https://github.com/dotnet/sourcelink
- e2f4720f9e7411122675568b984606c405b3bb53
+ f6b97c9ef635ad82b195a952ac0e0a969b9cf39c
-
+ https://github.com/dotnet/sourcelink
- e2f4720f9e7411122675568b984606c405b3bb53
+ f6b97c9ef635ad82b195a952ac0e0a969b9cf39c
-
+ https://github.com/dotnet/sourcelink
- e2f4720f9e7411122675568b984606c405b3bb53
+ f6b97c9ef635ad82b195a952ac0e0a969b9cf39c
-
+ https://github.com/dotnet/sourcelink
- e2f4720f9e7411122675568b984606c405b3bb53
+ f6b97c9ef635ad82b195a952ac0e0a969b9cf39c
-
+ https://github.com/dotnet/sourcelink
- e2f4720f9e7411122675568b984606c405b3bb53
+ f6b97c9ef635ad82b195a952ac0e0a969b9cf39c
-
+ https://github.com/dotnet/sourcelink
- e2f4720f9e7411122675568b984606c405b3bb53
+ f6b97c9ef635ad82b195a952ac0e0a969b9cf39c
@@ -413,24 +413,88 @@
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime5535e31a712343a63f5d7d796cd874e563e5ac14
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ bf5e279d9239bfef5bb1b8d6212f1b971c434606
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore
+ 8e941eb42f819adb116b881195158b3887a70a1c
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-winforms
+ e4ede9b8979b9d2b1b1d4383f30a791414f0625b
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
+
+ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
+ 5535e31a712343a63f5d7d796cd874e563e5ac14
+
-
+ https://github.com/dotnet/arcade
- 39042b4048580366d35a7c1c4f4ce8fc0dbea4b4
+ 080141bf0f9f15408bb6eb8e301b23bddf81d054
-
+ https://github.com/dotnet/arcade
- 39042b4048580366d35a7c1c4f4ce8fc0dbea4b4
+ 080141bf0f9f15408bb6eb8e301b23bddf81d054
-
+ https://github.com/dotnet/arcade
- 39042b4048580366d35a7c1c4f4ce8fc0dbea4b4
+ 080141bf0f9f15408bb6eb8e301b23bddf81d054
-
+ https://github.com/dotnet/arcade
- 39042b4048580366d35a7c1c4f4ce8fc0dbea4b4
+ 080141bf0f9f15408bb6eb8e301b23bddf81d054https://dev.azure.com/dnceng/internal/_git/dotnet-runtime
diff --git a/eng/Versions.props b/eng/Versions.props
index a73a57eff9b7..bed1ff75f7b3 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -11,7 +11,7 @@
- 8.0.100
+ 8.0.1018.0.100true
@@ -26,7 +26,6 @@
1.0.0-20230414.1
- 2.1.0-preview2-26306-032.21.02.0.1-servicing-26011-0113.0.3
@@ -34,13 +33,12 @@
7.0.04.0.07.0.0
- 8.0.0-beta.23516.4
+ 8.0.0-beta.23556.57.0.0-preview.22423.28.0.04.3.04.3.04.0.5
- 7.0.38.0.04.6.02.0.0-beta4.23307.1
@@ -49,20 +47,35 @@
- 8.0.0
- 8.0.0-rtm.23531.3
- 8.0.0
+ 8.0.1
+ 8.0.1-servicing.23580.1
+ 8.0.1$(MicrosoftNETCoreAppRuntimewinx64PackageVersion)8.0.0
- 8.0.0
- 8.0.0-rtm.23531.3
+ 8.0.1
+ 8.0.1-servicing.23580.18.0.0
- $(MicrosoftExtensionsDependencyModelPackageVersion)8.0.08.0.08.0.0
- 8.0.0
+ 8.0.1
+ 8.0.0
+ 8.0.0
+ 8.0.1
+ 8.0.0
+ 8.0.0
+ 8.0.0
+ 8.0.0
+ 8.0.0
+ 8.0.0
+ 8.0.0
+ 8.0.0
+ 8.0.0
+ 8.0.0
+ 8.0.08.0.0
+ 8.0.1
+ 8.0.0
@@ -83,9 +96,9 @@
- 17.8.0-release-23523-03
- 17.8.0-release-23523-03
- 17.8.0-release-23523-03
+ 17.8.0-release-23578-02
+ 17.8.0-release-23578-02
+ 17.8.0-release-23578-02
@@ -95,7 +108,7 @@
- 8.0.453106
+ 8.0.456602
@@ -120,51 +133,51 @@
- 8.0.100
+ 8.0.101$(MicrosoftTemplateEngineAbstractionsPackageVersion)$(MicrosoftTemplateEngineAbstractionsPackageVersion)$(MicrosoftTemplateEngineAbstractionsPackageVersion)$(MicrosoftTemplateEngineAbstractionsPackageVersion)
- 8.0.100-rtm.23531.6
+ 8.0.101-servicing.23570.18$(MicrosoftTemplateEngineMocksPackageVersion)$(MicrosoftTemplateEngineAbstractionsPackageVersion)$(MicrosoftTemplateEngineMocksPackageVersion)
- 12.8.0-beta.23523.6
+ 12.8.0-beta.23563.2
- 4.8.0-3.23524.11
- 4.8.0-3.23524.11
- 4.8.0-3.23524.11
- 4.8.0-3.23524.11
- 4.8.0-3.23524.11
- 4.8.0-3.23524.11
- 4.8.0-3.23524.11
+ 4.8.0-7.23572.1
+ 4.8.0-7.23572.1
+ 4.8.0-7.23572.1
+ 4.8.0-7.23572.1
+ 4.8.0-7.23572.1
+ 4.8.0-7.23572.1
+ 4.8.0-7.23572.1$(MicrosoftNetCompilersToolsetPackageVersion)
- 8.0.0
- 8.0.0-rtm.23531.12
- 8.0.0-rtm.23531.12
- 8.0.0-rtm.23531.12
- 8.0.0-rtm.23531.12
- 8.0.0-rtm.23531.12
- 8.0.0
+ 8.0.1
+ 8.0.1-servicing.23580.8
+ 8.0.1-servicing.23580.8
+ 8.0.1-servicing.23580.8
+ 8.0.1-servicing.23580.8
+ 8.0.1-servicing.23580.8
+ 8.0.1
- 7.0.0-preview.23520.1
- 7.0.0-preview.23520.1
- 7.0.0-preview.23520.1
+ 7.0.0-preview.23580.2
+ 7.0.0-preview.23580.2
+ 7.0.0-preview.23580.2
- 8.0.0-rtm.23531.4
+ 8.0.1-servicing.23580.5
@@ -177,12 +190,12 @@
- 8.0.0-beta.23510.2
- 8.0.0-beta.23510.2
- 8.0.0-beta.23510.2
- 8.0.0-beta.23510.2
- 8.0.0-beta.23510.2
- 8.0.0-beta.23510.2
+ 8.0.0-beta.23578.1
+ 8.0.0-beta.23578.1
+ 8.0.0-beta.23578.1
+ 8.0.0-beta.23578.1
+ 8.0.0-beta.23578.1
+ 8.0.0-beta.23578.1
@@ -192,7 +205,7 @@
6.12.06.1.0
- 8.0.0-beta.23516.4
+ 8.0.0-beta.23556.54.18.41.3.26.0.0-beta.22262.1
@@ -208,7 +221,7 @@
- 8.0.0
+ 8.0.1$(MicrosoftNETWorkloadEmscriptenCurrentManifest80100PackageVersion)8.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-rtm|-[A-z]*\.*\d*`))
diff --git a/eng/build.yml b/eng/build.yml
index 3126b7b5c240..6582582f2cd4 100644
--- a/eng/build.yml
+++ b/eng/build.yml
@@ -21,7 +21,7 @@ jobs:
CreatePr: true
LclSource: lclFilesfromPackage
LclPackageId: 'LCL-JUNO-PROD-DOTNETSDK'
- MirrorBranch: release/8.0.1xx
+ MirrorBranch: release/8.0.2xx
MirrorRepo: sdk
- ${{ if not(contains(parameters.agentOs, 'TemplateEngine')) }}:
diff --git a/global.json b/global.json
index bd02f9a3b75e..061310eee146 100644
--- a/global.json
+++ b/global.json
@@ -14,7 +14,7 @@
}
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23516.4",
- "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23516.4"
+ "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23556.5",
+ "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23556.5"
}
}
diff --git a/src/BuiltInTools/dotnet-watch/Filters/BrowserRefreshFilter.cs b/src/BuiltInTools/dotnet-watch/Filters/BrowserRefreshFilter.cs
index 11a733f0fb43..0e4632164581 100644
--- a/src/BuiltInTools/dotnet-watch/Filters/BrowserRefreshFilter.cs
+++ b/src/BuiltInTools/dotnet-watch/Filters/BrowserRefreshFilter.cs
@@ -10,6 +10,8 @@ namespace Microsoft.DotNet.Watcher.Tools
{
internal sealed class BrowserRefreshFilter : IWatchFilter, IAsyncDisposable
{
+ // This needs to be in sync with the version BrowserRefreshMiddleware is compiled against.
+ private static readonly Version s_minimumSupportedVersion = new(6, 0);
private readonly DotNetWatchOptions _options;
private readonly IReporter _reporter;
private readonly string _muxerPath;
@@ -38,6 +40,13 @@ public async ValueTask ProcessAsync(DotNetWatchContext context, CancellationToke
_reporter.Verbose("Unable to determine if this project is a webapp.");
return;
}
+ else if (!IsSupportedVersion(context.ProjectGraph))
+ {
+ _reporter.Warn(
+ "Skipping configuring browser-refresh middleware since the target framework version is not supported." +
+ " For more information see 'https://aka.ms/dotnet/watch/unsupported-tfm'.");
+ return;
+ }
else if (IsWebApp(context.ProjectGraph))
{
_reporter.Verbose("Configuring the app to use browser-refresh middleware.");
@@ -66,6 +75,24 @@ public async ValueTask ProcessAsync(DotNetWatchContext context, CancellationToke
}
}
+ private bool IsSupportedVersion(ProjectGraph context)
+ {
+ if (context.GraphRoots.FirstOrDefault() is not { } projectNode)
+ {
+ return false;
+ }
+ if (projectNode.ProjectInstance.GetPropertyValue("_TargetFrameworkVersionWithoutV") is not string targetFrameworkVersion)
+ {
+ return false;
+ }
+ if(!Version.TryParse(targetFrameworkVersion, out var version))
+ {
+ return false;
+ }
+
+ return version >= s_minimumSupportedVersion;
+ }
+
private static bool IsWebApp(ProjectGraph projectGraph)
{
// We only want to enable browser refreshes if this is a WebApp (ASP.NET Core / Blazor app).
diff --git a/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs b/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs
index 76fabcd7b8ff..ac176a717930 100644
--- a/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs
+++ b/src/Cli/dotnet/NugetPackageDownloader/NuGetPackageDownloader.cs
@@ -527,7 +527,8 @@ public async Task GetBestPackageVersionAsync(PackageId packageId,
VersionRange versionRange,
PackageSourceLocation packageSourceLocation = null)
{
- if(versionRange.MinVersion != null && versionRange.MaxVersion != null && versionRange.MinVersion == versionRange.MaxVersion)
+ if (versionRange.MinVersion != null && !versionRange.IsFloating &&
+ (versionRange.MaxVersion == null || versionRange.MinVersion == versionRange.MaxVersion))
{
return versionRange.MinVersion;
}
diff --git a/src/Cli/dotnet/commands/dotnet-tool/install/ParseResultExtension.cs b/src/Cli/dotnet/commands/dotnet-tool/install/ParseResultExtension.cs
index 25befc5e7458..88a46d72e734 100644
--- a/src/Cli/dotnet/commands/dotnet-tool/install/ParseResultExtension.cs
+++ b/src/Cli/dotnet/commands/dotnet-tool/install/ParseResultExtension.cs
@@ -1,15 +1,9 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
-using System.Collections.Generic;
using System.CommandLine;
-using System.CommandLine.Parsing;
-using System.Linq;
using Microsoft.DotNet.Cli;
using Microsoft.DotNet.Cli.Utils;
-using Microsoft.DotNet.NugetSearch;
-using Microsoft.DotNet.ToolPackage;
-using Microsoft.DotNet.Tools.Tool.Search;
using NuGet.Versioning;
namespace Microsoft.DotNet.Tools.Tool.Install
@@ -36,6 +30,13 @@ public static VersionRange GetVersionRange(this ParseResult parseResult)
}
VersionRange versionRange = null;
+
+ // accept 'bare' versions and interpret 'bare' versions as NuGet exact versions
+ if (!string.IsNullOrEmpty(packageVersion) && NuGetVersion.TryParse(packageVersion, out NuGetVersion version2))
+ {
+ return new VersionRange(minVersion: version2, includeMinVersion: true, maxVersion: version2, includeMaxVersion: true, originalString: "[" + packageVersion + "]");
+ }
+
if (!string.IsNullOrEmpty(packageVersion) && !VersionRange.TryParse(packageVersion, out versionRange))
{
throw new GracefulException(
diff --git a/src/Containers/Microsoft.NET.Build.Containers/ImageBuilder.cs b/src/Containers/Microsoft.NET.Build.Containers/ImageBuilder.cs
index 37f94c6e8819..fc670b38519b 100644
--- a/src/Containers/Microsoft.NET.Build.Containers/ImageBuilder.cs
+++ b/src/Containers/Microsoft.NET.Build.Containers/ImageBuilder.cs
@@ -110,7 +110,7 @@ internal void AddLayer(Layer l)
///
/// Sets the USER for the image.
///
- internal void SetUser(string user) => _baseImageConfig.SetUser(user);
+ internal void SetUser(string user, bool isExplicitUserInteraction = true) => _baseImageConfig.SetUser(user, isExplicitUserInteraction);
internal static (string[] entrypoint, string[] cmd) DetermineEntrypointAndCmd(
string[] entrypoint,
@@ -227,7 +227,7 @@ internal void AssignUserFromEnvironment()
if (_baseImageConfig.EnvironmentVariables.TryGetValue(EnvironmentVariables.APP_UID, out string? appUid))
{
_logger.LogTrace("Setting user from APP_UID environment variable");
- SetUser(appUid);
+ SetUser(appUid, isExplicitUserInteraction: false);
}
}
diff --git a/src/Containers/Microsoft.NET.Build.Containers/ImageConfig.cs b/src/Containers/Microsoft.NET.Build.Containers/ImageConfig.cs
index 4c0baeee5748..340863b26b50 100644
--- a/src/Containers/Microsoft.NET.Build.Containers/ImageConfig.cs
+++ b/src/Containers/Microsoft.NET.Build.Containers/ImageConfig.cs
@@ -20,6 +20,7 @@ internal sealed class ImageConfig
private string[]? _newEntrypoint;
private string[]? _newCmd;
private string? _user;
+ private bool _userHasBeenExplicitlySet;
///
/// Models the file system of the image. Typically has a key 'type' with value 'layers' and a key 'diff_ids' with a list of layer digests.
@@ -216,7 +217,16 @@ internal void AddLayer(Layer l)
_rootFsLayers.Add(l.Descriptor.UncompressedDigest!);
}
- internal void SetUser(string user) => _user = user;
+ internal void SetUser(string user, bool isUserInteraction = false) {
+ // we don't let automatic/inferred user settings overwrite an explicit user request
+ if (_userHasBeenExplicitlySet && !isUserInteraction)
+ {
+ return;
+ }
+
+ _user = user;
+ _userHasBeenExplicitlySet = isUserInteraction;
+ }
private HashSet GetExposedPorts()
{
diff --git a/src/RazorSdk/Tasks/Microsoft.NET.Sdk.Razor.Tasks.csproj b/src/RazorSdk/Tasks/Microsoft.NET.Sdk.Razor.Tasks.csproj
index bc51087b0222..c4f7a2c449d4 100644
--- a/src/RazorSdk/Tasks/Microsoft.NET.Sdk.Razor.Tasks.csproj
+++ b/src/RazorSdk/Tasks/Microsoft.NET.Sdk.Razor.Tasks.csproj
@@ -39,7 +39,7 @@
-
+
diff --git a/src/StaticWebAssetsSdk/Tasks/Microsoft.NET.Sdk.StaticWebAssets.Tasks.csproj b/src/StaticWebAssetsSdk/Tasks/Microsoft.NET.Sdk.StaticWebAssets.Tasks.csproj
index 705da27875e8..fdeb6dbafe91 100644
--- a/src/StaticWebAssetsSdk/Tasks/Microsoft.NET.Sdk.StaticWebAssets.Tasks.csproj
+++ b/src/StaticWebAssetsSdk/Tasks/Microsoft.NET.Sdk.StaticWebAssets.Tasks.csproj
@@ -39,7 +39,7 @@
-
+
diff --git a/src/Tasks/Microsoft.NET.Build.Tasks/Microsoft.NET.Build.Tasks.csproj b/src/Tasks/Microsoft.NET.Build.Tasks/Microsoft.NET.Build.Tasks.csproj
index 18c60cc15bde..1c16e13b948b 100644
--- a/src/Tasks/Microsoft.NET.Build.Tasks/Microsoft.NET.Build.Tasks.csproj
+++ b/src/Tasks/Microsoft.NET.Build.Tasks/Microsoft.NET.Build.Tasks.csproj
@@ -72,6 +72,7 @@
+
diff --git a/src/Tests/Microsoft.NET.Build.Containers.UnitTests/ImageBuilderTests.cs b/src/Tests/Microsoft.NET.Build.Containers.UnitTests/ImageBuilderTests.cs
index dcd988eb373e..29c4b35fc6ef 100644
--- a/src/Tests/Microsoft.NET.Build.Containers.UnitTests/ImageBuilderTests.cs
+++ b/src/Tests/Microsoft.NET.Build.Containers.UnitTests/ImageBuilderTests.cs
@@ -562,6 +562,46 @@ public void CanSetPortFromEnvVarFromUser(string envVar, string envValue, params
Assert.Equal(assignedPorts, expectedPorts);
}
+
+ [Fact]
+ public void CanSetContainerUserAndOverrideAppUID()
+ {
+ var userId = "1646";
+ var baseConfigBuilder = FromBaseImageConfig($$"""
+ {
+ "architecture": "amd64",
+ "config": {
+ "Hostname": "",
+ "Domainname": "",
+ "User": "",
+ "Env": [
+ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
+ "{{ImageBuilder.EnvironmentVariables.APP_UID}}=12345"
+ ],
+ "Cmd": ["bash"],
+ "Image": "sha256:d772d27ebeec80393349a4770dc37f977be2c776a01c88b624d43f93fa369d69",
+ "WorkingDir": ""
+ },
+ "created": "2023-02-04T08:14:52.000901321Z",
+ "os": "linux",
+ "rootfs": {
+ "type": "layers",
+ "diff_ids": [
+ "sha256:bd2fe8b74db65d82ea10db97368d35b92998d4ea0e7e7dc819481fe4a68f64cf",
+ "sha256:94100d1041b650c6f7d7848c550cd98c25d0bdc193d30692e5ea5474d7b3b085",
+ "sha256:53c2a75a33c8f971b4b5036d34764373e134f91ee01d8053b4c3573c42e1cf5d",
+ "sha256:49a61320e585180286535a2545be5722b09e40ad44c7c190b20ec96c9e42e4a3",
+ "sha256:8a379cce2ac272aa71aa029a7bbba85c852ba81711d9f90afaefd3bf5036dc48"
+ ]
+ }
+ }
+ """);
+
+ baseConfigBuilder.SetUser(userId);
+ var config = JsonNode.Parse(baseConfigBuilder.Build().Config);
+ config!["config"]?["User"]?.GetValue().Should().Be(expected: userId, because: "The precedence of SetUser should override inferred user ids");
+ }
+
private ImageBuilder FromBaseImageConfig(string baseImageConfig, [CallerMemberName] string testName = "")
{
var manifest = new ManifestV2() {
diff --git a/src/Tests/dotnet.Tests/CommandTests/ToolInstallGlobalOrToolPathCommandTests.cs b/src/Tests/dotnet.Tests/CommandTests/ToolInstallGlobalOrToolPathCommandTests.cs
index c432e84c8f04..e0c4e247d4fb 100644
--- a/src/Tests/dotnet.Tests/CommandTests/ToolInstallGlobalOrToolPathCommandTests.cs
+++ b/src/Tests/dotnet.Tests/CommandTests/ToolInstallGlobalOrToolPathCommandTests.cs
@@ -369,6 +369,23 @@ public void WhenRunWithValidUnlistedVersionRangeItShouldSucceed()
toolUninstallCommand.Execute().Should().Pass();
}
+ [Fact]
+ public void WhenRunWithValidBareVersionItShouldInterpretAsNuGetExactVersion()
+ {
+ const string nugetSourcePath = "https://api.nuget.org/v3/index.json";
+ var testDir = _testAssetsManager.CreateTestDirectory().Path;
+
+ var toolInstallGlobalOrToolPathCommand = new DotnetCommand(Log, "tool", "install", "-g", UnlistedPackageId, "--version", "0.5.0", "--add-source", nugetSourcePath)
+ .WithEnvironmentVariable("DOTNET_SKIP_WORKLOAD_INTEGRITY_CHECK", "true")
+ .WithWorkingDirectory(testDir);
+
+ toolInstallGlobalOrToolPathCommand.Execute().Should().Pass();
+
+ // Uninstall the unlisted package
+ var toolUninstallCommand = new DotnetCommand(Log, "tool", "uninstall", "-g", UnlistedPackageId);
+ toolUninstallCommand.Execute().Should().Pass();
+ }
+
[Fact]
public void WhenRunWithoutValidVersionUnlistedToolItShouldThrow()
{
diff --git a/src/WebSdk/Publish/Tasks/Microsoft.NET.Sdk.Publish.Tasks.csproj b/src/WebSdk/Publish/Tasks/Microsoft.NET.Sdk.Publish.Tasks.csproj
index 2f91c038c3a5..842e82885607 100644
--- a/src/WebSdk/Publish/Tasks/Microsoft.NET.Sdk.Publish.Tasks.csproj
+++ b/src/WebSdk/Publish/Tasks/Microsoft.NET.Sdk.Publish.Tasks.csproj
@@ -38,7 +38,7 @@
-
+