diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 58971cf2d7..d40f767932 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -7,6 +7,9 @@ // Set the context to the workspace folder to allow us to copy files from it. "context": ".." }, + "mounts": [ + "type=volume,target=${containerWorkspaceFolder}/node_modules" + ], "customizations": { "vscode": { "settings": { @@ -37,7 +40,8 @@ "powershell.integratedConsole.showOnStartup": false, "powershell.startAutomatically": false, // ms-azure-devops.azure-pipelines settings - "azure-pipelines.customSchemaFile": ".vscode/dnceng-schema.json" + "azure-pipelines.customSchemaFile": ".vscode/dnceng-schema.json", + "jest.jestCommandLine": "./node_modules/.bin/jest" }, "extensions": [ "ms-dotnettools.csharp", @@ -52,5 +56,5 @@ ] } }, - "postCreateCommand": "npm ci && npx gulp installDependencies" + "postCreateCommand": "npm ci && npx gulp installDependencies && npm i -g gulp" } diff --git a/.vscode/launch.json b/.vscode/launch.json index ec9485f60a..c51872837b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -160,9 +160,9 @@ "args": ["updatePackageDependencies"], "env": { "NEW_DEPS_ID": "OmniSharp", - "NEW_DEPS_URLS": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-x64-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-x86-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-arm64-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-osx-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-win-x64-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-win-arm64-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-musl-x64-net6.0-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-musl-arm64-net6.0-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-x64-net6.0-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-arm64-net6.0-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-osx-x64-net6.0-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-osx-arm64-net6.0-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-win-x64-net6.0-1.39.11.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-win-arm64-net6.0-1.39.11.zip", - "OLD_DEPS_VERSION": "1.39.10", - "NEW_DEPS_VERSION": "1.39.11" + "NEW_DEPS_URLS": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-x64-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-x86-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-arm64-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-osx-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-win-x64-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-win-arm64-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-musl-x64-net6.0-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-musl-arm64-net6.0-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-x64-net6.0-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-arm64-net6.0-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-osx-x64-net6.0-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-osx-arm64-net6.0-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-win-x64-net6.0-1.39.12.zip,https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-win-arm64-net6.0-1.39.12.zip", + "OLD_DEPS_VERSION": "1.39.11", + "NEW_DEPS_VERSION": "1.39.12" }, "cwd": "${workspaceFolder}" }, diff --git a/.vscode/settings.json b/.vscode/settings.json index ccd7bad687..72e707902f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,5 +20,5 @@ "editor.formatOnSave": false, "eslint.lintTask.enable": true, "dotnet.defaultSolution": "disable", - "jest.autoRun": "off" + "jest.autoRun": "off", } diff --git a/CHANGELOG.md b/CHANGELOG.md index 56580433be..88142e20a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,107 @@ - Diagnostics related feature requests and improvements [#5951](https://github.com/dotnet/vscode-csharp/issues/5951) - Debug from .csproj and .sln [#5876](https://github.com/dotnet/vscode-csharp/issues/5876) -* Bump xamltools to 17.13.35521.31 (PR: [#7814](https://github.com/dotnet/vscode-csharp/pull/7814)) -# 2.58.x +# 2.61.x +* Update Razor to 9.0.0-preview.25052.3 (PR: [#7904](https://github.com/dotnet/vscode-csharp/pull/7904)) + * Offer generate handler for `@bind-XX:after` and `:set` (#11350) (PR: [#11350](https://github.com/dotnet/razor/pull/11350)) + * Support "Generate Event Handler" on event callbacks (ie `ValueChanged` and friends) (#11347) (PR: [#11347](https://github.com/dotnet/razor/pull/11347)) + * Fix completion at end of document (#11343) (PR: [#11343](https://github.com/dotnet/razor/pull/11343)) + * Fix completion in an empty document (#11344) (PR: [#11344](https://github.com/dotnet/razor/pull/11344)) + * Only show element hover information when hovering over an element in a `.razor` file (#11336) (PR: [#11336](https://github.com/dotnet/razor/pull/11336)) + * Don't format collection expressions, because Roslyn doesn't either (#11326) (PR: [#11326](https://github.com/dotnet/razor/pull/11326)) + * Update telemetry to 17.13.28 (#11315) (PR: [#11315](https://github.com/dotnet/razor/pull/11315)) + * Filter out CSS002 when it appears in an "@@" (#11313) (PR: [#11313](https://github.com/dotnet/razor/pull/11313)) + * Improve Find All Refs results (#11279) (PR: [#11279](https://github.com/dotnet/razor/pull/11279)) +* Update Roslyn to 4.13.0-3.25051.1 (PR: [#7895](https://github.com/dotnet/vscode-csharp/pull/7895)) + * Prefix 'unmerged changes' with 'TODO' (PR: [#62319](https://github.com/dotnet/roslyn/pull/62319)) + * Fix crash when classifying embedded test classifications (PR: [#76576](https://github.com/dotnet/roslyn/pull/76576)) + * Ensure 'remove unnecessary using' shows up before 'convert to program-main style program' (PR: [#76543](https://github.com/dotnet/roslyn/pull/76543)) + * Fixup OmniSharp fallback AnalyzerConfigOption updater (PR: [#76542](https://github.com/dotnet/roslyn/pull/76542)) + * Expose NotificationService to OmniSharp (PR: [#76541](https://github.com/dotnet/roslyn/pull/76541)) + * Do not offer inline hints for parameters that already named (PR: [#76532](https://github.com/dotnet/roslyn/pull/76532)) + * Have inline hints display aliases if appropriate (PR: [#76530](https://github.com/dotnet/roslyn/pull/76530)) + * Allow OmniSharp to provide ImplementType Options (PR: [#75312](https://github.com/dotnet/roslyn/pull/75312)) + * Update telemetry to 17.13.28 (PR: [#76480](https://github.com/dotnet/roslyn/pull/76480)) + * feat(lsp): add --pipe parameter (PR: [#76351](https://github.com/dotnet/roslyn/pull/76351)) + * Slightly reduce allocations in SymbolCompletionItem.AddSymbolInfo (PR: [#76418](https://github.com/dotnet/roslyn/pull/76418)) + * Small reduction in allocations in DateAndTimeLanguageDetector (PR: [#76393](https://github.com/dotnet/roslyn/pull/76393)) + * Cache the compilation states in compilation order to avoid recalculation (PR: [#76380](https://github.com/dotnet/roslyn/pull/76380)) + * Razor synchronize loader (PR: [#76357](https://github.com/dotnet/roslyn/pull/76357)) + * Reduce allocations from doing repeated adds into an ImmutableDictionary in SolutionCompilationState.ComputeFrozenSnapshot (PR: [#76361](https://github.com/dotnet/roslyn/pull/76361)) + * Reduce allocations in WithUsingNamespacesAndTypesBinder.GetForwardedToAssemblyInUsingNamespaces (PR: [#76370](https://github.com/dotnet/roslyn/pull/76370)) + * Remove an enumerator allocation in SymbolCompletionItem.CreateWorker (PR: [#76375](https://github.com/dotnet/roslyn/pull/76375)) + * Reduce allocations in ProjectState's ctor (PR: [#76369](https://github.com/dotnet/roslyn/pull/76369)) + * Reduce allocations in CompletionItem.GetEntireDisplayText (PR: [#76373](https://github.com/dotnet/roslyn/pull/76373)) + * Reduce allocations in AbstractSymbolCompletionProvider.UnionSymbols (PR: [#76368](https://github.com/dotnet/roslyn/pull/76368)) + * Reduce allocations in AbstractRecommendationServiceBasedCompletionProvider.GetSymbolsAsync (PR: [#76365](https://github.com/dotnet/roslyn/pull/76365)) + * Cache the MEF composition in the Roslyn LSP. (PR: [#76276](https://github.com/dotnet/roslyn/pull/76276)) +* Fix Razor Report An Issue (PR: [#7894](https://github.com/dotnet/vscode-csharp/pull/7894)) +* Hot Reload = Fuse On (PR: [#7873](https://github.com/dotnet/vscode-csharp/pull/7873)) +* Update Debugger Package Download Endpoints to AzureFrontDoor URL (PR: [#7879](https://github.com/dotnet/vscode-csharp/pull/7879)) +* Update OmniSharp to 1.39.12 (PR: [#7445](https://github.com/dotnet/vscode-csharp/pull/7445)) + * Update .NET SDKs (PR: [omnisharp-roslyn/#2621](https://github.com/OmniSharp/omnisharp-roslyn/pull/2621)) + * Update Roslyn to 4.12.0-1.24358.3 (PR: [omnisharp-roslyn/#2619](https://github.com/OmniSharp/omnisharp-roslyn/pull/2619)) + * Fix code fix construction (PR: [omnisharp-roslyn/#2620](https://github.com/OmniSharp/omnisharp-roslyn/pull/2620)) + * Remove NuGet.Packaging.Core, as it's an assembly that only contains forwarders (PR: [omnisharp-roslyn/#2610](https://github.com/OmniSharp/omnisharp-roslyn/pull/2610)) + * Fix inlay hints lambdas parameter type null reference exception (PR: [omnisharp-roslyn/#2604](https://github.com/OmniSharp/omnisharp-roslyn/pull/2604)) + * Update SDKs and Roslyn (PR: [omnisharp-roslyn/#2603](https://github.com/OmniSharp/omnisharp-roslyn/pull/2603)) + * Pass project path when performing a restore (PR: [omnisharp-roslyn/#2593](https://github.com/OmniSharp/omnisharp-roslyn/pull/2593)) +* Bump xamltools to 17.13.35703.12 (PR: [#7893](https://github.com/dotnet/vscode-csharp/pull/7893)) +* Don't try to send dynamicInfoChanged if the server isn't running (PR: [#7875](https://github.com/dotnet/vscode-csharp/pull/7875)) + +# 2.60.x +* Improve performance of razor/blazor component discovery (PR: [#7826](https://github.com/dotnet/vscode-csharp/pull/7826)) +* Update Razor to 9.0.0-preview.24605.1 (PR: [#7826](https://github.com/dotnet/vscode-csharp/pull/7826)) + * New Code Action! Add a code action to promote a using directive (#11241) (PR: [#11241](https://github.com/dotnet/razor/pull/11241)) + * Add more information to dynamic file publish (#11267) (PR: [#11267](https://github.com/dotnet/razor/pull/11267)) + * Remove C#s using snippet from completion (#11272) (PR: [#11272](https://github.com/dotnet/razor/pull/11272)) + * Fix extract component whitespace handling (#11262) (PR: [#11262](https://github.com/dotnet/razor/pull/11262)) + * Handle aliased usings in RazorEditHelper (#11208) (PR: [#11208](https://github.com/dotnet/razor/pull/11208)) +* Update Debugger Packages and move macOS requirement to macOS 13 (PR: [#7854](https://github.com/dotnet/vscode-csharp/pull/7854)) +* Fix spelling of successfully (PR: [#7853](https://github.com/dotnet/vscode-csharp/pull/7853)) +* Update Roslyn to 4.13.0-3.24605.12 (PR: [#7826](https://github.com/dotnet/vscode-csharp/pull/7826)) + * Fix go-to-def on an abstract explicit impl of an interface method (PR: [#76238](https://github.com/dotnet/roslyn/pull/76238)) + * Fix parameter completion item icon (PR: [#76292](https://github.com/dotnet/roslyn/pull/76292)) + * Enable LSP go to definition on string literals (PR: [#76291](https://github.com/dotnet/roslyn/pull/76291)) + * Use named pipes to connect to the BuildHost process. (PR: [#76259](https://github.com/dotnet/roslyn/pull/76259)) + * Improve Razor DynamicFile Provider (PR: [#76050](https://github.com/dotnet/roslyn/pull/76050)) + * Add option to disable LSP-based auto insert (PR: [#75224](https://github.com/dotnet/roslyn/pull/75224)) + * Report errors processing messages in the build host (PR: [#76252](https://github.com/dotnet/roslyn/pull/76252)) + * Update FAR and Go to Def to work on indexers (PR: [#76220](https://github.com/dotnet/roslyn/pull/76220)) + * Fix NFW thrown when refreshing source generated files (PR: [#76240](https://github.com/dotnet/roslyn/pull/76240)) + * Update find-refs to find references to Dispose in a using-statement (PR: [#76221](https://github.com/dotnet/roslyn/pull/76221)) + * Add support for 'find refs' finding references to 'dynamic' (PR: [#76118](https://github.com/dotnet/roslyn/pull/76118)) + * Support implementing protected members in implement interface (PR: [#76178](https://github.com/dotnet/roslyn/pull/76178)) + * Do not treat Task.Run methods as 'apparent' for 'use var' (PR: [#76229](https://github.com/dotnet/roslyn/pull/76229)) + * Support introduce variable at the top level (PR: [#76218](https://github.com/dotnet/roslyn/pull/76218)) + * Fix switch indentation for list patterns (PR: [#75953](https://github.com/dotnet/roslyn/pull/75953)) + * Keep member bodies when converting DIM property to method (PR: [#76186](https://github.com/dotnet/roslyn/pull/76186)) + * Have go-to-def flip between partial definition and implementation (PR: [#76187](https://github.com/dotnet/roslyn/pull/76187)) + * Disable 'use coalesce expression' when statements cross a PP boundary (PR: [#76173](https://github.com/dotnet/roslyn/pull/76173)) + * Support name completion on generic types (PR: [#76170](https://github.com/dotnet/roslyn/pull/76170)) + * Improve extract-local-function in the presence of pp directives (PR: [#76169](https://github.com/dotnet/roslyn/pull/76169)) + * Fix issue trying to generate fields/properties from a top level program (PR: [#76161](https://github.com/dotnet/roslyn/pull/76161)) + * Update 'introduce using' to support expression statements (PR: [#76147](https://github.com/dotnet/roslyn/pull/76147)) + * Use implicit initializer if present to generate type properties (PR: [#76162](https://github.com/dotnet/roslyn/pull/76162)) + * Fix issue with explicit interface completion and static interface members (PR: [#76150](https://github.com/dotnet/roslyn/pull/76150)) + * When converting to raw strings, do not change \r\n sequences if not explicitly requested by the user (PR: [#76120](https://github.com/dotnet/roslyn/pull/76120)) + * Exclude starting symbol when going to implementations if we find implementations (PR: [#76125](https://github.com/dotnet/roslyn/pull/76125)) +* Add option to disable auto insertion of documentation comments (PR: [#7381](https://github.com/dotnet/vscode-csharp/pull/7381)) +* Bump xamltools to 17.13.35606.23 (PR: [#7856](https://github.com/dotnet/vscode-csharp/pull/7856)) +* Restore WASM debug hook (#7843) (PR: [#7844](https://github.com/dotnet/vscode-csharp/pull/7844)) + +# 2.59.14 +* Update Roslyn to 4.13.0-3.24577.4 (PR: [#7833](https://github.com/dotnet/vscode-csharp/pull/7833)) + * Fix issue where suppressors could not correctly suppress built in analyzers (PR: [#75684](https://github.com/dotnet/roslyn/pull/75684)) + * Implement find all references to preprocessing symbols (PR: [#66425](https://github.com/dotnet/roslyn/pull/66425)) + * Postpone respecting the code-style analysis config rule until NET10 (PR: [#75978](https://github.com/dotnet/roslyn/pull/75978)) +* Delete `dotnet.dotnetPath` setting and support automatic migration to replacements (PR: [#7825](https://github.com/dotnet/vscode-csharp/pull/7825)) + * Existing `dotnet.dotnetPath` values will be migrated to the .NET Install Tool extension's `dotnetAcquisitionExtension.existingDotnetPath` setting. See [this page](https://github.com/dotnet/vscode-dotnet-runtime/blob/main/vscode-dotnet-runtime-extension/README.md#i-already-have-a-net-runtime-or-sdk-installed-and-i-want-to-use-it) for more details on configuring the .NET Install Tool. + * The OmniSharp version of `dotnet.dotnetPath` has been migrated to `omnisharp.dotnetPath` +* Bump xamltools to 17.13.35527.19 (PR: [#7831](https://github.com/dotnet/vscode-csharp/pull/7831)) + +# 2.58.20 * Update Razor to 9.0.0-preview.24569.4 (PR: [#7805](https://github.com/dotnet/vscode-csharp/pull/7805)) * Allow logging level to be changed in rzls (#11228) (PR: [#11228](https://github.com/dotnet/razor/pull/11228)) * [Fuse] bind-Value:attribute support (#11214) (PR: [#11214](https://github.com/dotnet/razor/pull/11214)) @@ -15,7 +113,7 @@ * Include list of processes that lock file in `can't write file` error message (PR: [#75946](https://github.com/dotnet/roslyn/pull/75946)) * Add server side support for refreshing source generated files (PR: [#75939](https://github.com/dotnet/roslyn/pull/75939)) -# 2.57.x +# 2.57.28 * Update Razor to 9.0.0-preview.24565.1 (PR: [#7793])(https://github.com/dotnet/vscode-csharp/pull/7793) * Fine tuning of what types of project update affect what state (#11213) (PR: [#11213](https://github.com/dotnet/razor/pull/11213)) * Fix request duration logging (#11198) (PR: [#11198](https://github.com/dotnet/razor/pull/11198)) @@ -37,7 +135,7 @@ * Fix Razor preview panel button colors to have more visible contrast ratio (PR: [#7766](https://github.com/dotnet/vscode-csharp/pull/7766)) * Bump xamltools to 17.13.35513.19 (PR: [#7777](https://github.com/dotnet/vscode-csharp/pull/7777)) -# 2.56.x +# 2.56.31 * Update Roslyn to 4.13.0-2.24561.3 (PR: [#7765](https://github.com/dotnet/vscode-csharp/pull/7765)) * Update Razor to fix serialization issue loading projects (PR: [#75794](https://github.com/dotnet/roslyn/pull/75794)) * Update Razor to 9.0.0-preview.24557.11 (PR: [#7756](https://github.com/dotnet/vscode-csharp/pull/7756)) @@ -62,7 +160,7 @@ * Bump xamltools to 17.13.35507.225 (PR: [#7755](https://github.com/dotnet/vscode-csharp/pull/7755)) * XAML IntelliseSense completions for Image.Source -# 2.55.x +# 2.55.29 * Update Razor to 9.0.0-preview.24557.10 (PR: [#7757](https://github.com/dotnet/vscode-csharp/pull/7757)) * Update VSTelemetryAPI version (#11181) (PR: [#11181](https://github.com/dotnet/razor/pull/11181)) * Update Roslyn to 4.13.0-2.24557.6 (PR: [#7751](https://github.com/dotnet/vscode-csharp/pull/7751)) @@ -94,7 +192,7 @@ * XAML IntelliseSense completions for ResourceDictionary.Source * XAML IntelliseSense completions for name properties like Setter.TargetName -# 2.54.x +# 2.54.20 * Update debugger packages to v2.54.0 (PR: [#7691](https://github.com/dotnet/vscode-csharp/pull/7691)) * Only show misc files warning toast after delay. (PR: [#7689](https://github.com/dotnet/vscode-csharp/pull/7689)) * Update Roslyn to 4.13.0-1.24525.2 (PR: [#7694](https://github.com/dotnet/vscode-csharp/pull/7694)) @@ -116,7 +214,7 @@ * Including @using for Out-of-Scope Razor Component References (#10651) (PR: [#10651](https://github.com/dotnet/razor/pull/10651)) * Make checkDevCert a modal dialogue (PR: [#7704](https://github.com/dotnet/vscode-csharp/pull/7704)) -# 2.53.x +# 2.53.17 * Update Roslyn to 4.13.0-1.24518.1 (PR: [#7670](https://github.com/dotnet/vscode-csharp/pull/7670)) * Fix issue where server sometimes crashed when saving new C# file for the first time (PR: [#75509](https://github.com/dotnet/roslyn/pull/75509)) * Report LSP loading telemetry (PR: [#75402](https://github.com/dotnet/roslyn/pull/75402)) @@ -137,7 +235,7 @@ * Don't throw if we get an old/bad Inlay Hint request (PR: [#10968](https://github.com/dotnet/razor/pull/10968)) * Fix on type formatting (PR: [#10949](https://github.com/dotnet/razor/pull/10949)) -# 2.52.x +# 2.52.24 * Add miscellaneous file open notifications (PR: [#7652](https://github.com/dotnet/vscode-csharp/pull/7652)) * Require at least version 8.0.10 of the .net runtime (PR: [#7651](https://github.com/dotnet/vscode-csharp/pull/7651)) * Warn when the active file is not part of the open workspace (PR: [#7628](https://github.com/dotnet/vscode-csharp/pull/7628)) diff --git a/azure-pipelines/prereqs.yml b/azure-pipelines/prereqs.yml index c553420a37..167de5da6e 100644 --- a/azure-pipelines/prereqs.yml +++ b/azure-pipelines/prereqs.yml @@ -23,7 +23,7 @@ steps: - script: dotnet --info displayName: Display dotnet info -- script: dotnet tool install --tool-path $(Agent.BuildDirectory) nbgv +- script: dotnet tool install --version 3.6.146 --tool-path $(Agent.BuildDirectory) nbgv displayName: Install nbgv # If we want to override the version, update the version.json here - vsix packaging will see this value diff --git a/azure-pipelines/test-matrix.yml b/azure-pipelines/test-matrix.yml index dcd9a87910..30776dea7f 100644 --- a/azure-pipelines/test-matrix.yml +++ b/azure-pipelines/test-matrix.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: CSharpTests: - npmCommand: 'test:withoutDevKit' + npmCommand: 'test:unit' # Restore when integration test are stable: 'test:withoutDevKit' DevKitTests: npmCommand: test:integration:devkit pool: ${{ parameters.pool }} diff --git a/l10n/bundle.l10n.cs.json b/l10n/bundle.l10n.cs.json index a2e5ea86bb..b90cc7ae72 100644 --- a/l10n/bundle.l10n.cs.json +++ b/l10n/bundle.l10n.cs.json @@ -70,7 +70,7 @@ "For further information visit {0}": "Další informace najdete na {0}", "For further information visit {0}.": "Další informace najdete na {0}.", "For more information about the 'console' field, see {0}": "Další informace o poli „console“ najdete v tématu {0}", - "Generated document not found": "Generated document not found", + "Generated document not found": "Vygenerovaný dokument nebyl nalezen.", "Get the SDK": "Získat sadu SDK", "Go to GitHub": "Přejít na GitHub", "Go to output": "Přejít na výstup", @@ -144,7 +144,7 @@ "Select project": "Vybrat projekt", "Select the process to attach to": "Vyberte proces, ke kterému se má program připojit.", "Select the project to launch": "Vyberte projekt, který se má spustit.", - "Self-signed certificate sucessfully {0}": "Certifikát podepsaný svým držitelem se úspěšně {0}", + "Self-signed certificate successfully {0}": "Certifikát podepsaný svým držitelem se úspěšně {0}", "Sending request": "Posílá se žádost", "Server failed to start after retrying 5 times.": "Server se nepovedlo spustit ani po pěti pokusech.", "Server stopped": "Server byl zastaven.", @@ -167,7 +167,7 @@ "The active document is not part of the open workspace. Not all language features will be available.": "Aktivní dokument není součástí otevřeného pracovního prostoru. Nebudou k dispozici všechny jazykové funkce.", "The selected launch configuration is configured to launch a web browser but no trusted development certificate was found. Create a trusted self-signed certificate?": "Vybraná konfigurace spuštění je nakonfigurovaná tak, aby spustila webový prohlížeč, ale nenašel se žádný důvěryhodný vývojový certifikát. Chcete vytvořit důvěryhodný certifikát podepsaný svým držitelem (self-signed certificate)?", "The value '{0}' for 'targetArchitecture' in launch configuraiton is invalid. Expected 'x86_64' or 'arm64'.": "Hodnota {0} pro parametr targetArchitecture v konfiguraci spuštění je neplatná. Očekávala se hodnota x86_64 nebo arm64.", - "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue", + "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "Rozšíření {0} vyžaduje alespoň {1} rozšíření nástroje pro instalaci .NET ({2}). Pokud chcete pokračovat, proveďte prosím aktualizaci.", "There are unresolved dependencies. Please execute the restore command to continue.": "Existují nevyřešené závislosti. Pokud chcete pokračovat, spusťte prosím příkaz pro obnovení.", "There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.": "Při spouštění relace ladění došlo k neočekávané chybě. Pokud chcete získat více informací, podívejte se, jestli se v konzole nenacházejí užitečné protokoly, a projděte si dokumenty k ladění.", "Token cancellation requested: {0}": "Požádáno o zrušení tokenu: {0}", @@ -188,12 +188,12 @@ "Unexpected error when attaching to HTML preview window.": "Při připojování k oknu náhledu HTML došlo k neočekávané chybě.", "Unexpected error when attaching to report Razor issue window.": "Při připojování k oknu pro nahlášení problémů s Razorem došlo k neočekávané chybě.", "Unexpected message received from debugger.": "Z ladicího programu byla přijata neočekávaná zpráva.", - "Update and reload": "Update and reload", + "Update and reload": "Aktualizovat a znovu načíst", "Use IntelliSense to find out which attributes exist for C# debugging": "Použití IntelliSense ke zjištění, které atributy existují pro ladění v jazyce C#", "Use hover for the description of the existing attributes": "Popis existujících atributů zobrazíte najetím myší", "VSCode version": "Verze VSCode", "Version": "Verze", - "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.", + "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Verze {0} nástroje pro instalaci .NET ({1}) nebyla nalezena, {2} se neaktivuje.", "View Debug Docs": "Zobrazit dokumenty k ladění", "Virtual document file path": "Cesta k souboru virtuálního dokumentu", "WARNING": "UPOZORNĚNÍ", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "Před zastavením je zapotřebí nejdříve spustit shromažďování dat.", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "Váš pracovní prostor má více souborů řešení Visual Studio. Vyberte prosím jednu, abyste získali úplnou technologii IntelliSense.", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[CHYBA] Ladicí program nelze nainstalovat. Ladicí program není pro {0} podporován.", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[CHYBA] Ladicí program nelze nainstalovat. Ladicí program vyžaduje macOS 12 (Monterey) nebo novější.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[CHYBA] Ladicí program nelze nainstalovat. Ladicí program vyžaduje {0} nebo je novější.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[CHYBA] Ladicí program nelze nainstalovat. Neznámá platforma.", "[ERROR]: C# Extension failed to install the debugger package.": "[CHYBA]: Rozšíření jazyka C# se nepodařilo nainstalovat balíček ladicího programu.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[UPOZORNĚNÍ]: Ladicí program .NET nepodporuje systém Windows pro platformu x86. Ladění nebude k dispozici.", diff --git a/l10n/bundle.l10n.de.json b/l10n/bundle.l10n.de.json index a052bea441..ca33200334 100644 --- a/l10n/bundle.l10n.de.json +++ b/l10n/bundle.l10n.de.json @@ -144,7 +144,7 @@ "Select project": "Projekt auswählen", "Select the process to attach to": "Prozess auswählen, an den angefügt werden soll", "Select the project to launch": "Wählen Sie das Projekt aus, das gestartet werden soll.", - "Self-signed certificate sucessfully {0}": "Selbstsigniertes Zertifikat erfolgreich {0}", + "Self-signed certificate successfully {0}": "Selbstsigniertes Zertifikat erfolgreich {0}", "Sending request": "Anforderung wird gesendet", "Server failed to start after retrying 5 times.": "Der Server konnte nach fünf Wiederholungsversuchen nicht gestartet werden.", "Server stopped": "Der Server wurde beendet.", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "Sie müssen zuerst die Datensammlung starten, bevor Sie sie beenden.", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "Ihr Arbeitsbereich umfasst mehrere Visual Studio-Projektmappendateien. Wählen Sie eine aus, um vollständiges IntelliSense zu erhalten.", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[FEHLER] Der Debugger kann nicht installiert werden. Der Debugger wird für „{0}“ nicht unterstützt.", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[FEHLER] Der Debugger kann nicht installiert werden. Der Debugger erfordert macOS 12 (Monterey) oder höher.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[FEHLER] Der Debugger kann nicht installiert werden. Der Debugger erfordert {0} oder höher.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[FEHLER] Der Debugger kann nicht installiert werden. Unbekannte Plattform.", "[ERROR]: C# Extension failed to install the debugger package.": "[FEHLER]: Fehler beim Installieren des Debuggerpakets durch die C#-Erweiterung.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[WARNUNG]: x86 Windows wird vom .NET-Debugger nicht unterstützt. Debuggen ist nicht verfügbar.", diff --git a/l10n/bundle.l10n.es.json b/l10n/bundle.l10n.es.json index 512c99034e..4ea625a6fa 100644 --- a/l10n/bundle.l10n.es.json +++ b/l10n/bundle.l10n.es.json @@ -70,7 +70,7 @@ "For further information visit {0}": "Para obtener más información, visite {0}", "For further information visit {0}.": "Para obtener más información, visite {0}.", "For more information about the 'console' field, see {0}": "Para obtener más información sobre el campo \"consola\", consulte {0}", - "Generated document not found": "Generated document not found", + "Generated document not found": "No se encontró el documento generado", "Get the SDK": "Obtención del SDK", "Go to GitHub": "Ir a GitHub", "Go to output": "Ir a la salida", @@ -144,7 +144,7 @@ "Select project": "Seleccionar proyecto", "Select the process to attach to": "Seleccione el proceso al que debe asociarse", "Select the project to launch": "Seleccione el proyecto que desea iniciar", - "Self-signed certificate sucessfully {0}": "El certificado autofirmado {0} correctamente", + "Self-signed certificate successfully {0}": "El certificado autofirmado {0} correctamente", "Sending request": "Enviando la solicitud", "Server failed to start after retrying 5 times.": "El servidor no se pudo iniciar después de reintentar 5 veces.", "Server stopped": "Servidor detenido", @@ -167,7 +167,7 @@ "The active document is not part of the open workspace. Not all language features will be available.": "El documento activo no forma parte del área de trabajo abierta. No todas las características de lenguaje estarán disponibles.", "The selected launch configuration is configured to launch a web browser but no trusted development certificate was found. Create a trusted self-signed certificate?": "La configuración de inicio seleccionada está configurada para iniciar un explorador web, pero no se encontró ningún certificado de desarrollo de confianza. ¿Desea crear un certificado autofirmado de confianza?", "The value '{0}' for 'targetArchitecture' in launch configuraiton is invalid. Expected 'x86_64' or 'arm64'.": "El valor “{0}” para “targetArchitecture” en la configuración de inicio no es válido. El valor que se esperaba es “x86_64” o “arm64”.", - "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue", + "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "La extensión {0} requiere al menos {1} de la extensión de la Herramienta de instalación de .NET ({2}). Actualice para continuar", "There are unresolved dependencies. Please execute the restore command to continue.": "Hay dependencias sin resolver. Ejecute el comando de restauración para continuar.", "There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.": "Error inesperado al iniciar la sesión de depuración. Compruebe si hay registros útiles en la consola y visite los documentos de depuración para obtener más información.", "Token cancellation requested: {0}": "Cancelación de token solicitada: {0}", @@ -188,12 +188,12 @@ "Unexpected error when attaching to HTML preview window.": "Error inesperado al adjuntar a la ventana de vista previa HTML.", "Unexpected error when attaching to report Razor issue window.": "Error inesperado al adjuntar a la ventana de problemas de Razor de informe.", "Unexpected message received from debugger.": "Se ha recibido un mensaje del depurador inesperado.", - "Update and reload": "Update and reload", + "Update and reload": "Actualizar y volver a cargar", "Use IntelliSense to find out which attributes exist for C# debugging": "Use IntelliSense para averiguar qué atributos existen para la depuración de C#.", "Use hover for the description of the existing attributes": "Usar el puntero por encima para la descripción de los atributos existentes", "VSCode version": "Versión de VSCode", "Version": "Versión", - "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.", + "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "No se encontró la versión {0} de la Herramienta de instalación de .NET ({1}), {2} no se activará.", "View Debug Docs": "Ver documentos de depuración", "Virtual document file path": "Ruta de archivo del documento virtual", "WARNING": "ADVERTENCIA", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "Primero debe iniciar la recopilación de datos antes de detenerse.", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "El área de trabajo tiene varios archivos de solución de Visual Studio; seleccione uno para obtener IntelliSense completo.", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[ERROR] No se puede instalar el depurador. El depurador no se admite en '{0}'", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[ERROR] No se puede instalar el depurador. El depurador requiere macOS 12 (Monterey) o una versión más reciente.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[ERROR] No se puede instalar el depurador. El depurador requiere {0} o una versión más reciente.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[ERROR] No se puede instalar el depurador. Plataforma desconocida.", "[ERROR]: C# Extension failed to install the debugger package.": "[ERROR]: la extensión de C# no pudo instalar el paquete del depurador.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[ADVERTENCIA]: El depurador de .NET no admite Windows x86. La depuración no estará disponible.", diff --git a/l10n/bundle.l10n.fr.json b/l10n/bundle.l10n.fr.json index f2eee1d793..98db467679 100644 --- a/l10n/bundle.l10n.fr.json +++ b/l10n/bundle.l10n.fr.json @@ -70,7 +70,7 @@ "For further information visit {0}": "Pour plus d’informations, consultez {0}", "For further information visit {0}.": "Pour plus d’informations, consultez {0}.", "For more information about the 'console' field, see {0}": "Pour plus d’informations sur le champ « console », consultez {0}", - "Generated document not found": "Generated document not found", + "Generated document not found": "Document généré introuvable", "Get the SDK": "Obtention du Kit de développement logiciel (SDK)", "Go to GitHub": "Accéder à GitHub", "Go to output": "Accéder à la sortie", @@ -144,7 +144,7 @@ "Select project": "Sélectionner un projet", "Select the process to attach to": "Sélectionner le processus à attacher", "Select the project to launch": "Sélectionner le projet à lancer", - "Self-signed certificate sucessfully {0}": "Certificat auto-signé {0}", + "Self-signed certificate successfully {0}": "Certificat auto-signé {0}", "Sending request": "Envoi de la demande", "Server failed to start after retrying 5 times.": "Le serveur n’a pas pu démarrer après 5 tentatives.", "Server stopped": "Serveur arrêté", @@ -167,7 +167,7 @@ "The active document is not part of the open workspace. Not all language features will be available.": "Le document actif ne fait pas partie de l’espace de travail ouvert. Toutes les fonctionnalités de langage ne seront pas disponibles.", "The selected launch configuration is configured to launch a web browser but no trusted development certificate was found. Create a trusted self-signed certificate?": "La configuration de lancement sélectionnée est configurée pour lancer un navigateur web, mais aucun certificat de développement approuvé n’a été trouvé. Créer un certificat auto-signé approuvé ?", "The value '{0}' for 'targetArchitecture' in launch configuraiton is invalid. Expected 'x86_64' or 'arm64'.": "La valeur « {0} » pour « Architecture cible » dans la configuration de lancement n'est pas valide. \"x86_64\" ou \"arm64\" attendu.", - "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue", + "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "L’extension {0} nécessite au moins la version {1} de l’extension Outil d’installation .NET ({2}). Effectuez une mise à jour pour continuer", "There are unresolved dependencies. Please execute the restore command to continue.": "Il existe des dépendances non résolues. Exécutez la commande de restauration pour continuer.", "There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.": "Une erreur inattendue s’est produite lors du lancement de votre session de débogage. Consultez la console pour obtenir des journaux utiles et consultez les documents de débogage pour plus d’informations.", "Token cancellation requested: {0}": "Annulation de jeton demandée : {0}", @@ -188,12 +188,12 @@ "Unexpected error when attaching to HTML preview window.": "Erreur inattendue lors de l’attachement à la fenêtre d’aperçu HTML.", "Unexpected error when attaching to report Razor issue window.": "Erreur inattendue lors de l’attachement à la fenêtre de rapport du problème Razor.", "Unexpected message received from debugger.": "Message inattendu reçu du débogueur.", - "Update and reload": "Update and reload", + "Update and reload": "Mettre à jour et recharger", "Use IntelliSense to find out which attributes exist for C# debugging": "Utiliser IntelliSense pour déterminer quels attributs existent pour le débogage C#", "Use hover for the description of the existing attributes": "Utiliser le pointage pour la description des attributs existants", "VSCode version": "Version de VSCode", "Version": "Version", - "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.", + "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "La version {0} de l’outil d’installation .NET ({1}) est introuvable, {2} ne sera pas activé.", "View Debug Docs": "Afficher les documents de débogage", "Virtual document file path": "Chemin d’accès au fichier de document virtuel", "WARNING": "AVERTISSEMENT", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "Vous devez commencer par démarrer la collecte de données avant de l’arrêter.", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "Votre espace de travail comporte plusieurs fichiers solution Visual Studio ; sélectionnez-en un pour obtenir intelliSense complet.", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[ERREUR] Impossible d’installer le débogueur. Le débogueur n’est pas pris en charge sur « {0} »", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[ERREUR] Impossible d’installer le débogueur. Le débogueur nécessite macOS 12 (Monterey) ou une version plus récente.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[ERREUR] Impossible d’installer le débogueur. Le débogueur nécessite des {0} ou plus récentes.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[ERREUR] Impossible d’installer le débogueur. Plateforme inconnue.", "[ERROR]: C# Extension failed to install the debugger package.": "[ERREUR] : l’extension C# n’a pas pu installer le package du débogueur.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[AVERTISSEMENT] : Windows x86 n'est pas pris en charge par le débogueur .NET. Le débogage ne sera pas disponible.", diff --git a/l10n/bundle.l10n.it.json b/l10n/bundle.l10n.it.json index ca4fd7bd4a..67765d5f09 100644 --- a/l10n/bundle.l10n.it.json +++ b/l10n/bundle.l10n.it.json @@ -70,7 +70,7 @@ "For further information visit {0}": "Per ulteriori informazioni, visitare {0}", "For further information visit {0}.": "Per ulteriori informazioni, visitare {0}.", "For more information about the 'console' field, see {0}": "Per ulteriori informazioni sul campo 'console', vedere {0}", - "Generated document not found": "Generated document not found", + "Generated document not found": "Il documento generato non è stato trovato", "Get the SDK": "Ottieni l'SDK", "Go to GitHub": "Vai a GitHub", "Go to output": "Passa all'output", @@ -144,7 +144,7 @@ "Select project": "Seleziona progetto", "Select the process to attach to": "Selezionare il processo a cui collegarsi", "Select the project to launch": "Selezionare il progetto da avviare", - "Self-signed certificate sucessfully {0}": "Certificato autofirmato {0}", + "Self-signed certificate successfully {0}": "Certificato autofirmato correttamente {0}", "Sending request": "Invio della richiesta", "Server failed to start after retrying 5 times.": "Non è possibile avviare il server dopo 5 tentativi.", "Server stopped": "Server arrestato", @@ -167,7 +167,7 @@ "The active document is not part of the open workspace. Not all language features will be available.": "Il documento attivo non fa parte dell'area di lavoro aperta. Non tutte le funzionalità della lingua saranno disponibili.", "The selected launch configuration is configured to launch a web browser but no trusted development certificate was found. Create a trusted self-signed certificate?": "La configurazione di avvio selezionata è configurata per l'avvio di un Web browser, ma non è stato trovato alcun certificato di sviluppo attendibile. Creare un certificato autofirmato attendibile?", "The value '{0}' for 'targetArchitecture' in launch configuraiton is invalid. Expected 'x86_64' or 'arm64'.": "Il valore \"{0}\" per \"targetArchitecture\" nella configurazione di avvio non è valido. \"x86_64\" o \"arm64\" previsto.", - "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue", + "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "L'estensione {0} richiede almeno {1} dell'estensione .NET Install Tool ({2}). Aggiorna per continuare", "There are unresolved dependencies. Please execute the restore command to continue.": "Sono presenti dipendenze non risolte. Eseguire il comando di ripristino per continuare.", "There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.": "Si è verificato un errore imprevisto durante l'avvio della sessione di debug. Per altre informazioni, controllare la console per i log utili e visitare la documentazione di debug.", "Token cancellation requested: {0}": "Annullamento del token richiesto: {0}", @@ -188,12 +188,12 @@ "Unexpected error when attaching to HTML preview window.": "Errore imprevisto durante il collegamento alla finestra di anteprima HTML.", "Unexpected error when attaching to report Razor issue window.": "Errore imprevisto durante il collegamento alla finestra di segnalazione del problema Razor.", "Unexpected message received from debugger.": "Messaggio imprevisto ricevuto dal debugger.", - "Update and reload": "Update and reload", + "Update and reload": "Aggiorna e ricarica", "Use IntelliSense to find out which attributes exist for C# debugging": "Usare IntelliSense per individuare gli attributi esistenti per il debug C#", "Use hover for the description of the existing attributes": "Usa il passaggio del mouse per la descrizione degli attributi esistenti", "VSCode version": "Versione VSCode", "Version": "Versione", - "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.", + "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "La versione {0} dello strumento di installazione di .NET ({1}) non è stata trovata. {2} non verrà attivato.", "View Debug Docs": "Visualizza documenti di debug", "Virtual document file path": "Percorso file del documento virtuale", "WARNING": "AVVISO", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "Prima di arrestare è necessario avviare la raccolta dati prima.", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "L'area di lavoro contiene più file di soluzione Visual Studio; selezionarne uno per ottenere IntelliSense completo.", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[ERROR] Impossibile installare il debugger. Il debugger non è supportato in '{0}'", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[ERROR] Impossibile installare il debugger. Il debugger richiede macOS 12 (Monterey) o una versione successiva.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[ERRORE] Non è possibile installare il debugger. Il debugger richiede {0} o versioni successive.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[ERROR] Impossibile installare il debugger. Piattaforma sconosciuta.", "[ERROR]: C# Extension failed to install the debugger package.": "[ERROR]: l'estensione C# non è riuscita a installare il pacchetto del debugger.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[AVVISO]: x86 Windows non è supportato dal debugger .NET. Il debug non sarà disponibile.", diff --git a/l10n/bundle.l10n.ja.json b/l10n/bundle.l10n.ja.json index 5e7a5bf63c..5aa7cd267f 100644 --- a/l10n/bundle.l10n.ja.json +++ b/l10n/bundle.l10n.ja.json @@ -70,7 +70,7 @@ "For further information visit {0}": "詳細については、{0} を参照してください", "For further information visit {0}.": "詳細については、{0} を参照してください。", "For more information about the 'console' field, see {0}": "'console' フィールドの詳細については、{0} を参照してください", - "Generated document not found": "Generated document not found", + "Generated document not found": "生成されたドキュメントが見つかりません", "Get the SDK": "SDK の取得", "Go to GitHub": "GitHub に移動する", "Go to output": "出力に移動", @@ -144,7 +144,7 @@ "Select project": "プロジェクトの選択", "Select the process to attach to": "アタッチするプロセスを選択する", "Select the project to launch": "開始するプロジェクトを選択する", - "Self-signed certificate sucessfully {0}": "自己署名証明書が正常に {0} されました", + "Self-signed certificate successfully {0}": "自己署名証明書が正常に{0}されました", "Sending request": "要求を送信しています", "Server failed to start after retrying 5 times.": "5 回再試行した後、サーバーを起動できませんでした。", "Server stopped": "サーバーが停止しました", @@ -167,7 +167,7 @@ "The active document is not part of the open workspace. Not all language features will be available.": "このアクティブなドキュメントは、開いているワークスペースの一部ではありません。一部の言語機能は使用できません。", "The selected launch configuration is configured to launch a web browser but no trusted development certificate was found. Create a trusted self-signed certificate?": "選択した起動構成では Web ブラウザーを起動するように構成されていますが、信頼された開発証明書が見つかりませんでした。信頼された自己署名証明書を作成しますか?", "The value '{0}' for 'targetArchitecture' in launch configuraiton is invalid. Expected 'x86_64' or 'arm64'.": "起動構成の 'targetArchitecture' の値 '{0}' が無効です。'x86_64' または 'arm64' が必要です。", - "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue", + "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "{0} 拡張機能には、少なくとも .NET インストール ツール ({2}) 拡張機能の {1} が必要です。続行するには、更新してください。", "There are unresolved dependencies. Please execute the restore command to continue.": "未解決の依存関係があります。続行するには、restore コマンドを実行してください。", "There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.": "デバッグ セッションの起動中に予期しないエラーが発生しました。 コンソールで役立つログを確認し、詳細についてはデバッグ ドキュメントにアクセスしてください。", "Token cancellation requested: {0}": "トークンのキャンセルが要求されました: {0}", @@ -188,12 +188,12 @@ "Unexpected error when attaching to HTML preview window.": "HTML プレビュー ウィンドウにアタッチするときに予期しないエラーが発生しました。", "Unexpected error when attaching to report Razor issue window.": "Razor の問題ウィンドウを報告するために添付するときに予期しないエラーが発生しました。", "Unexpected message received from debugger.": "デバッガーから予期しないメッセージを受け取りました。", - "Update and reload": "Update and reload", + "Update and reload": "更新して再度読み込む", "Use IntelliSense to find out which attributes exist for C# debugging": "IntelliSense を使用して、C# デバッグに存在する属性を確認します", "Use hover for the description of the existing attributes": "既存の属性の説明にホバーを使用する", "VSCode version": "VSCode バージョン", "Version": "バージョン", - "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.", + "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": ".NET インストール ツール ({1}) のバージョン {0} が見つかりませんでした。{2} はアクティブ化されません。", "View Debug Docs": "デバッグ ドキュメントの表示", "Virtual document file path": "仮想ドキュメント ファイルのパス", "WARNING": "警告", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "停止する前に、まずデータ収集を開始する必要があります。", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "ワークスペースに複数の Visual Studio ソリューション ファイルがあります。完全な IntelliSense を入手するには、ファイルを 1 つ選択してください。", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[エラー] デバッガーをインストールできません。デバッガーは '{0}' でサポートされていません", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[エラー] デバッガーをインストールできません。デバッガーには macOS 12 (Monterey) 以降が必要です。", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[エラー] デバッガーをインストールできません。デバッガーには、{0} 以降が必要です。", "[ERROR] The debugger cannot be installed. Unknown platform.": "[エラー] デバッガーをインストールできません。不明なプラットフォームです。", "[ERROR]: C# Extension failed to install the debugger package.": "[エラー]: C# 拡張機能でデバッガー パッケージをインストールできませんでした。", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[警告]: x86 Windows は .NET デバッガーではサポートされていません。デバッグは使用できません。", diff --git a/l10n/bundle.l10n.json b/l10n/bundle.l10n.json index 69fa396506..6ad19dccdc 100644 --- a/l10n/bundle.l10n.json +++ b/l10n/bundle.l10n.json @@ -38,7 +38,7 @@ "More Information": "More Information", "Security Warning": "Security Warning", "The selected launch configuration is configured to launch a web browser but no trusted development certificate was found. Create a trusted self-signed certificate?": "The selected launch configuration is configured to launch a web browser but no trusted development certificate was found. Create a trusted self-signed certificate?", - "Self-signed certificate sucessfully {0}": "Self-signed certificate sucessfully {0}", + "Self-signed certificate successfully {0}": "Self-signed certificate successfully {0}", "Couldn't create self-signed certificate. {0}\ncode: {1}\nstdout: {2}": "Couldn't create self-signed certificate. {0}\ncode: {1}\nstdout: {2}", "Show Output": "Show Output", "Couldn't create self-signed certificate. See output for more information.": "Couldn't create self-signed certificate. See output for more information.", @@ -205,7 +205,7 @@ "Could not find a process id to attach.": "Could not find a process id to attach.", "Unable to launch Attach to Process dialog: ": "Unable to launch Attach to Process dialog: ", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[ERROR] The debugger cannot be installed. Unknown platform.", "Failed to complete the installation of the C# extension. Please see the error in the output window below.": "Failed to complete the installation of the C# extension. Please see the error in the output window below.", diff --git a/l10n/bundle.l10n.ko.json b/l10n/bundle.l10n.ko.json index 8aafde6896..12a89e7215 100644 --- a/l10n/bundle.l10n.ko.json +++ b/l10n/bundle.l10n.ko.json @@ -70,7 +70,7 @@ "For further information visit {0}": "자세한 내용은 {0}을(를) 방문하세요.", "For further information visit {0}.": "자세한 내용은 {0}을(를) 방문하세요.", "For more information about the 'console' field, see {0}": "'콘솔' 필드에 대한 자세한 내용은 {0}을(를) 참조하세요.", - "Generated document not found": "Generated document not found", + "Generated document not found": "생성된 문서를 찾을 수 없음", "Get the SDK": "SDK 받기", "Go to GitHub": "GitHub로 이동", "Go to output": "출력으로 이동", @@ -144,7 +144,7 @@ "Select project": "프로젝트 선택", "Select the process to attach to": "연결할 프로세스 선택", "Select the project to launch": "시작할 프로젝트 선택", - "Self-signed certificate sucessfully {0}": "자체 서명된 인증서 성공적으로 {0}", + "Self-signed certificate successfully {0}": "자체 서명된 인증서 성공적으로 {0}", "Sending request": "요청을 보내는 중", "Server failed to start after retrying 5 times.": "5번 다시 시도했지만 서버를 시작하지 못했습니다.", "Server stopped": "서버가 중지됨", @@ -167,7 +167,7 @@ "The active document is not part of the open workspace. Not all language features will be available.": "활성 문서는 열려 있는 작업 영역의 일부가 아닙니다. 일부 언어 기능을 사용할 수 없습니다.", "The selected launch configuration is configured to launch a web browser but no trusted development certificate was found. Create a trusted self-signed certificate?": "선택한 시작 구성이 웹 브라우저를 시작하도록 구성되었지만 신뢰할 수 있는 개발 인증서를 찾을 수 없습니다. 신뢰할 수 있는 자체 서명 인증서를 만드시겠습니까?", "The value '{0}' for 'targetArchitecture' in launch configuraiton is invalid. Expected 'x86_64' or 'arm64'.": "시작 구성의 'targetArchitecture'의 '{0}' 값이 잘못되었습니다. 'x86_64' 또는 'arm64'가 필요합니다.", - "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue", + "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "{0} 확장에는 .NET 설치 도구({2}) 확장 중 최소 {1}개가 필요합니다. 계속하려면 업데이트하세요.", "There are unresolved dependencies. Please execute the restore command to continue.": "확인되지 않은 종속성이 있습니다. 계속하려면 복원 명령을 실행하세요.", "There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.": "디버깅 세션을 시작하는 동안 예기치 않은 오류가 발생했습니다. 콘솔에서 도움이 되는 로그를 확인하세요. 자세한 내용은 디버깅 문서를 참조하세요.", "Token cancellation requested: {0}": "토큰 취소가 요청됨: {0}", @@ -188,12 +188,12 @@ "Unexpected error when attaching to HTML preview window.": "HTML 미리 보기 창에 연결할 때 예기치 않은 오류가 발생했습니다.", "Unexpected error when attaching to report Razor issue window.": "Razor 문제 보고 창에 연결하는 동안 예기치 않은 오류가 발생했습니다.", "Unexpected message received from debugger.": "디버거에서 예기치 않은 메시지를 받았습니다.", - "Update and reload": "Update and reload", + "Update and reload": "업데이트 및 다시 로드", "Use IntelliSense to find out which attributes exist for C# debugging": "IntelliSense를 사용하여 C# 디버깅을 위해 존재하는 특성 찾기", "Use hover for the description of the existing attributes": "기존 속성 설명에 마우스 오버 사용", "VSCode version": "VSCode 버전", "Version": "버전", - "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.", + "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": ".NET 설치 도구({0})의 {1} 버전을 찾을 수 없습니다. {2}이(가) 활성화되지 않습니다.", "View Debug Docs": "디버그 문서 보기", "Virtual document file path": "가상 문서 파일 경로", "WARNING": "경고", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "중지하기 전에 먼저 데이터 수집을 시작해야 합니다.", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "작업 영역에 여러 Visual Studio 솔루션 파일이 있습니다. IntelliSense 전체를 가져오려면 하나를 선택하세요.", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[ERROR] 디버거를 설치할 수 없습니다. '{0}'에서 디버거가 지원되지 않습니다.", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[ERROR] 디버거를 설치할 수 없습니다. 디버거를 사용하려면 macOS 12(Monterey) 이상이 필요합니다.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[ERROR] 디버거를 설치할 수 없습니다. 디버거에는 {0} 이상이 필요합니다.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[ERROR] 디버거를 설치할 수 없습니다. 알 수 없는 플랫폼입니다..", "[ERROR]: C# Extension failed to install the debugger package.": "[오류]: C# 확장이 디버거 패키지를 설치하지 못했습니다.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[경고]: x86 Windows는 .NET 디버거에서 지원되지 않습니다. 디버깅을 사용할 수 없습니다.", diff --git a/l10n/bundle.l10n.pl.json b/l10n/bundle.l10n.pl.json index b9e26fa2d6..bc6273b02e 100644 --- a/l10n/bundle.l10n.pl.json +++ b/l10n/bundle.l10n.pl.json @@ -70,7 +70,7 @@ "For further information visit {0}": "Aby uzyskać więcej informacji, odwiedź witrynę {0}", "For further information visit {0}.": "Aby uzyskać więcej informacji, odwiedź witrynę {0}.", "For more information about the 'console' field, see {0}": "Aby uzyskać więcej informacji o polu „console”, zobacz {0}", - "Generated document not found": "Generated document not found", + "Generated document not found": "Nie znaleziono wygenerowanego dokumentu", "Get the SDK": "Pobierz zestaw SDK", "Go to GitHub": "Przejdź do serwisu GitHub", "Go to output": "Przejdź do danych wyjściowych", @@ -144,7 +144,7 @@ "Select project": "Wybierz projekt", "Select the process to attach to": "Wybierz docelowy proces dołączania", "Select the project to launch": "Wybierz projekt do uruchomienia", - "Self-signed certificate sucessfully {0}": "Pomyślnie {0} certyfikat z podpisem własnym", + "Self-signed certificate successfully {0}": "Pomyślnie {0} certyfikat z podpisem własnym", "Sending request": "Wysyłanie żądania", "Server failed to start after retrying 5 times.": "Nie można uruchomić serwera po ponowieniu próby 5 razy.", "Server stopped": "Serwer został zatrzymany.", @@ -167,7 +167,7 @@ "The active document is not part of the open workspace. Not all language features will be available.": "Dokument aktywny nie jest częścią otwartego obszaru roboczego. Nie wszystkie funkcje językowe będą dostępne.", "The selected launch configuration is configured to launch a web browser but no trusted development certificate was found. Create a trusted self-signed certificate?": "Wybrana konfiguracja uruchamiania jest skonfigurowana do uruchamiania przeglądarki internetowej, ale nie znaleziono zaufanego certyfikatu programistycznego. Utworzyć zaufany certyfikat z podpisem własnym?", "The value '{0}' for 'targetArchitecture' in launch configuraiton is invalid. Expected 'x86_64' or 'arm64'.": "Wartość „{0}” dla elementu „targetArchitecture” w konfiguracji uruchamiania jest nieprawidłowa. Oczekiwane elementy „x86_64” lub „arm64”.", - "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue", + "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "Rozszerzenie {0} wymaga co najmniej {1} rozszerzenia narzędzia instalacji platformy .NET ({2}). Zaktualizuj, aby kontynuować", "There are unresolved dependencies. Please execute the restore command to continue.": "Istnieją nierozwiązane zależności. Wykonaj polecenie przywracania, aby kontynuować.", "There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.": "Wystąpił nieoczekiwany błąd podczas uruchamiania sesji debugowania. Aby uzyskać więcej informacji, sprawdź konsolę pod kątem przydatnych dzienników i odwiedź dokumentację debugowania.", "Token cancellation requested: {0}": "Zażądano anulowania tokenu: {0}", @@ -188,12 +188,12 @@ "Unexpected error when attaching to HTML preview window.": "Nieoczekiwany błąd podczas dołączania do okna podglądu HTML.", "Unexpected error when attaching to report Razor issue window.": "Nieoczekiwany błąd podczas dołączania do okna raportowania problemu Razor.", "Unexpected message received from debugger.": "Odebrano nieoczekiwany komunikat z debugera.", - "Update and reload": "Update and reload", + "Update and reload": "Zaktualizuj i załaduj ponownie", "Use IntelliSense to find out which attributes exist for C# debugging": "Użyj funkcji IntelliSense, aby dowiedzieć się, które atrybuty istnieją na potrzeby debugowania języka C#", "Use hover for the description of the existing attributes": "Użyj najechania kursorem w przypadku opisu istniejących atrybutów", "VSCode version": "Wersja programu VSCode", "Version": "Wersja", - "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.", + "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Nie odnaleziono wersji {0} rozszerzenia narzędzia instalacji platformy .NET ({1}). {2} nie zostanie aktywowany.", "View Debug Docs": "Wyświetl dokumentację debugowania", "Virtual document file path": "Ścieżka pliku dokumentu wirtualnego", "WARNING": "OSTRZEŻENIE", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "Przed zatrzymaniem należy najpierw uruchomić zbieranie danych.", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "Obszar roboczy ma wiele plików rozwiązania Visual Studio; wybierz jedną, aby uzyskać pełną funkcję IntelliSense.", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[BŁĄD] Nie można zainstalować debugera. Debuger nie jest obsługiwany w „{0}”", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[BŁĄD] Nie można zainstalować debugera. Debuger wymaga systemu macOS 12 (Monterey) lub nowszego.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[BŁĄD] Nie można zainstalować debugera. Debuger wymaga {0} lub nowszej wersji.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[BŁĄD] Nie można zainstalować debugera. Nieznana platforma.", "[ERROR]: C# Extension failed to install the debugger package.": "[BŁĄD]: Rozszerzenie języka C# nie może zainstalować pakietu debugera.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[OSTRZEŻENIE]: Debuger platformy .NET nie obsługuje systemu Windows x86. Debugowanie nie będzie dostępne.", diff --git a/l10n/bundle.l10n.pt-br.json b/l10n/bundle.l10n.pt-br.json index 4f05fabfd8..5d62f94486 100644 --- a/l10n/bundle.l10n.pt-br.json +++ b/l10n/bundle.l10n.pt-br.json @@ -144,7 +144,7 @@ "Select project": "Selecionar projeto", "Select the process to attach to": "Selecione o processo ao qual anexar", "Select the project to launch": "Selecione o projeto a ser iniciado", - "Self-signed certificate sucessfully {0}": "Certificado autoassinado com sucesso {0}", + "Self-signed certificate successfully {0}": "Certificado autoassinado com sucesso {0}", "Sending request": "Enviando a solicitação", "Server failed to start after retrying 5 times.": "O servidor falhou ao iniciar depois de tentar 5 vezes.", "Server stopped": "Servidor parado", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "Você deve primeiro iniciar a coleta de dados antes de parar.", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "Seu workspace tem vários arquivos do Visual Studio de Solução; selecione um para obter o IntelliSense completo.", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[ERRO] O depurador não pode ser instalado. O depurador não é compatível com “{0}”", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[ERRO] O depurador não pode ser instalado. O depurador requer macOS 12 (Monterey) ou mais recente.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[ERRO] O depurador não pode ser instalado. O depurador requer {0} ou mais recente.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[ERRO] O depurador não pôde ser instalado. Plataforma desconhecida.", "[ERROR]: C# Extension failed to install the debugger package.": "[ERRO]: a extensão C# falhou ao instalar o pacote do depurador.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[AVISO]: Windows x86 não dá suporte ao depurador .NET. A depuração não estará disponível.", diff --git a/l10n/bundle.l10n.ru.json b/l10n/bundle.l10n.ru.json index 425ddb40a4..090f3f7538 100644 --- a/l10n/bundle.l10n.ru.json +++ b/l10n/bundle.l10n.ru.json @@ -144,7 +144,7 @@ "Select project": "Выбрать проект", "Select the process to attach to": "Выберите процесс, к которому нужно выполнить подключение", "Select the project to launch": "Выберите проект для запуска", - "Self-signed certificate sucessfully {0}": "Самозаверяющий сертификат успешно {0}", + "Self-signed certificate successfully {0}": "Самозаверяющий сертификат успешно {0}", "Sending request": "Отправка запроса", "Server failed to start after retrying 5 times.": "Не удалось запустить сервер после 5 попыток.", "Server stopped": "Сервер остановлен", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "Перед остановкой необходимо запустить сбор данных.", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "Ваша рабочая область содержит несколько файлов решения Visual Studio. Выберите один из них для получения полного IntelliSense.", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[ОШИБКА] Невозможно установить отладчик. Отладчик не поддерживается в \"{0}\"", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[ОШИБКА] Невозможно установить отладчик. Для отладчика требуется macOS 12 (Monterey) или более новая версия.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[ОШИБКА] Невозможно установить отладчик. Отладчику требуется {0} или более новая версия.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[ОШИБКА] Невозможно установить отладчик. Неизвестная платформа.", "[ERROR]: C# Extension failed to install the debugger package.": "[ОШИБКА]: расширению C# не удалось установить пакет отладчика.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[ВНИМАНИЕ!] x86 Windows не поддерживается отладчиком .NET. Отладка будет недоступна.", diff --git a/l10n/bundle.l10n.tr.json b/l10n/bundle.l10n.tr.json index cefdfa38ee..0b402965db 100644 --- a/l10n/bundle.l10n.tr.json +++ b/l10n/bundle.l10n.tr.json @@ -144,7 +144,7 @@ "Select project": "Proje seçin", "Select the process to attach to": "Eklenilecek işlemi seçin", "Select the project to launch": "Başlatılacak projeyi seçin", - "Self-signed certificate sucessfully {0}": "Otomatik olarak imzalanan sertifika başarıyla {0}", + "Self-signed certificate successfully {0}": "Otomatik olarak imzalanan sertifika başarıyla {0}", "Sending request": "İstek gönderiliyor", "Server failed to start after retrying 5 times.": "Sunucu 5 kez yeniden denendikten sonra başlatılamadı.", "Server stopped": "Sunucu durduruldu", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "Durdurmadan önce veri toplamayı başlatmalısınız.", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "Çalışma alanınızda birden çok Visual Studio Çözüm dosyası var; tam IntelliSense almak için birini seçin.", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[HATA] Hata ayıklayıcısı yüklenemiyor. Hata ayıklayıcısı '{0}' üzerinde desteklenmiyor", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[HATA] Hata ayıklayıcısı yüklenemiyor. Hata ayıklayıcı macOS 12 (Monterey) veya daha yeni bir sürüm gerektiriyor.", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[HATA] Hata ayıklayıcısı yüklenemiyor. Hata ayıklayıcı için daha {0} veya daha yeni bir sürüm gerekir.", "[ERROR] The debugger cannot be installed. Unknown platform.": "[HATA] Hata ayıklayıcısı yüklenemiyor. Bilinmeyen platform.", "[ERROR]: C# Extension failed to install the debugger package.": "[HATA]: C# Uzantısı hata ayıklayıcı paketini yükleyemedi.", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[UYARI]: x86 Windows, .NET hata ayıklayıcısı tarafından desteklenmiyor. Hata ayıklama kullanılamayacak.", diff --git a/l10n/bundle.l10n.zh-cn.json b/l10n/bundle.l10n.zh-cn.json index 6420a4bdf4..b32e974f35 100644 --- a/l10n/bundle.l10n.zh-cn.json +++ b/l10n/bundle.l10n.zh-cn.json @@ -70,7 +70,7 @@ "For further information visit {0}": "有关详细信息,请访问 {0}", "For further information visit {0}.": "有关详细信息,请访问 {0}。", "For more information about the 'console' field, see {0}": "有关“控制台”字段的详细信息,请参阅 {0}", - "Generated document not found": "Generated document not found", + "Generated document not found": "找不到生成的文档", "Get the SDK": "获取 SDK", "Go to GitHub": "转到 GitHub", "Go to output": "转到输出", @@ -144,7 +144,7 @@ "Select project": "选择项目", "Select the process to attach to": "选择要附加到的进程", "Select the project to launch": "选择要启动的项目", - "Self-signed certificate sucessfully {0}": "自签名证书成功 {0}", + "Self-signed certificate successfully {0}": "已成功 {0} 自签名证书", "Sending request": "正在发送请求", "Server failed to start after retrying 5 times.": "重试 5 次后服务器启动失败。", "Server stopped": "已停止服务器", @@ -167,7 +167,7 @@ "The active document is not part of the open workspace. Not all language features will be available.": "该活动文档不是打开的工作区的一部分。并非所有语言功能都将可用。", "The selected launch configuration is configured to launch a web browser but no trusted development certificate was found. Create a trusted self-signed certificate?": "所选启动配置配置为启动 Web 浏览器,但找不到受信任的开发证书。创建受信任的自签名证书?", "The value '{0}' for 'targetArchitecture' in launch configuraiton is invalid. Expected 'x86_64' or 'arm64'.": "启动配置中“targetArchitecture”的值“{0}”无效。应为“x86_64”或“arm64”。", - "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue", + "The {0} extension requires at least {1} of the .NET Install Tool ({2}) extension. Please update to continue": "{0} 扩展至少需要 {1} .NET 安装工具({2})扩展。请更新以继续", "There are unresolved dependencies. Please execute the restore command to continue.": "有未解析的依赖项。请执行还原命令以继续。", "There was an unexpected error while launching your debugging session. Check the console for helpful logs and visit the debugging docs for more info.": "启动调试会话时出现意外错误。检查控制台以获取有用的日志,并访问调试文档了解详细信息。", "Token cancellation requested: {0}": "已请求取消令牌: {0}", @@ -188,12 +188,12 @@ "Unexpected error when attaching to HTML preview window.": "附加到 HTML 预览窗口时出现意外错误。", "Unexpected error when attaching to report Razor issue window.": "附加到报告 Razor 问题窗口时出现意外错误。", "Unexpected message received from debugger.": "从调试器收到意外消息。", - "Update and reload": "Update and reload", + "Update and reload": "更新并重新加载", "Use IntelliSense to find out which attributes exist for C# debugging": "使用 IntelliSense 找出 C# 调试存在哪些属性", "Use hover for the description of the existing attributes": "将悬停用于现有属性的说明", "VSCode version": "VSCode 版本", "Version": "版本", - "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.", + "Version {0} of the .NET Install Tool ({1}) was not found, {2} will not activate.": "找不到 .NET 安装工具({1})的版本 {0},{2} 将不会激活。", "View Debug Docs": "查看调试文档", "Virtual document file path": "虚拟文档文件路径", "WARNING": "警告", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "必须先启动数据收集,然后才能停止。", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "你的工作区具有多个 Visual Studio 解决方案文件;请选择一个文件打开,以获取完整 Intellisense。", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[错误] 无法安装调试程序。“{0}”不支持调试程序", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[错误] 无法安装调试程序。调试程序需要 macOS 12 (Monterey) 或更高版本。", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[错误] 无法安装调试程序。调试程序需要 {0} 或更新的版本。", "[ERROR] The debugger cannot be installed. Unknown platform.": "[错误] 无法安装调试器。未知平台。", "[ERROR]: C# Extension failed to install the debugger package.": "[错误]: C# 扩展无法安装调试器包。", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[WARNING]:.NET 调试程序不支持 x86 Windows。调试将不可用。", diff --git a/l10n/bundle.l10n.zh-tw.json b/l10n/bundle.l10n.zh-tw.json index 8ea55caf95..9506f18d85 100644 --- a/l10n/bundle.l10n.zh-tw.json +++ b/l10n/bundle.l10n.zh-tw.json @@ -144,7 +144,7 @@ "Select project": "選取專案", "Select the process to attach to": "選取要附加至的目標處理序", "Select the project to launch": "選取要啟動的專案", - "Self-signed certificate sucessfully {0}": "自我簽署憑證已成功 {0}", + "Self-signed certificate successfully {0}": "已成功 {0} 自我簽署憑證", "Sending request": "正在傳送要求", "Server failed to start after retrying 5 times.": "伺服器在重試 5 次之後無法啟動。", "Server stopped": "伺服器已停止", @@ -204,7 +204,7 @@ "You must first start the data collection before stopping.": "您必須先啟動資料收集,才能停止。", "Your workspace has multiple Visual Studio Solution files; please select one to get full IntelliSense.": "您的工作區有多個 Visual Studio 解決方案檔案;請選取一個檔案以取得完整的 IntelliSense。", "[ERROR] The debugger cannot be installed. The debugger is not supported on '{0}'": "[ERROR] 無法安裝偵錯工具。'{0}' 不支援偵錯工具", - "[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.": "[ERROR] 無法安裝偵錯工具。偵錯工具需要 macOS 12 (Monterey) 或更新版本。", + "[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.": "[ERROR] 無法安裝偵錯工具。偵錯工具需要 {0} 或更新版本。", "[ERROR] The debugger cannot be installed. Unknown platform.": "[錯誤] 無法安裝偵錯工具。未知的平台。", "[ERROR]: C# Extension failed to install the debugger package.": "[錯誤]: C# 延伸模組無法安裝偵錯工具套件。", "[WARNING]: x86 Windows is not supported by the .NET debugger. Debugging will not be available.": "[警告]: .NET 偵錯工具不支援 x86 Windows。偵錯將無法使用。", diff --git a/package.json b/package.json index efa37368ea..d41eedff35 100644 --- a/package.json +++ b/package.json @@ -37,11 +37,11 @@ } }, "defaults": { - "roslyn": "4.13.0-2.24569.1", - "omniSharp": "1.39.11", - "razor": "9.0.0-preview.24569.4", + "roslyn": "4.13.0-3.25051.1", + "omniSharp": "1.39.12", + "razor": "9.0.0-preview.25052.3", "razorOmnisharp": "7.0.0-preview.23363.1", - "xamlTools": "17.13.35521.31" + "xamlTools": "17.13.35703.12" }, "main": "./dist/extension", "l10n": "./l10n", @@ -68,6 +68,7 @@ "compileTest": "tsc -p ./ && webpack --mode development", "watch": "tsc -watch -p ./", "test": "tsc -p ./ && gulp test", + "test:unit": "tsc -p ./ && gulp test:unit", "test:withoutDevKit": "tsc -p ./ && gulp test:withoutDevKit", "test:integration:devkit": "tsc -p ./ && gulp test:integration:devkit", "test:razor": "tsc -p ./ && npm run compile:razorTextMate && gulp test:razor", @@ -179,72 +180,72 @@ { "id": "OmniSharp", "description": "OmniSharp for Windows (.NET 4.7.2 / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-win-x64-1.39.11.zip", - "installPath": ".omnisharp/1.39.11", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-win-x64-1.39.12.zip", + "installPath": ".omnisharp/1.39.12", "platforms": [ "win32" ], "architectures": [ "x86_64" ], - "installTestPath": "./.omnisharp/1.39.11/OmniSharp.exe", + "installTestPath": "./.omnisharp/1.39.12/OmniSharp.exe", "platformId": "win-x64", "isFramework": true, - "integrity": "E1AD559974430C9AA81819F1433583B0EE9A977D2DAAE1DE32D4D408503B2867" + "integrity": "A52562B44C9BAA2811F0A617F182A5886BB79BB1532850827D89F173D8C962B6" }, { "id": "OmniSharp", "description": "OmniSharp for Windows (.NET 6 / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-win-x64-net6.0-1.39.11.zip", - "installPath": ".omnisharp/1.39.11-net6.0", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-win-x64-net6.0-1.39.12.zip", + "installPath": ".omnisharp/1.39.12-net6.0", "platforms": [ "win32" ], "architectures": [ "x86_64" ], - "installTestPath": "./.omnisharp/1.39.11-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.12-net6.0/OmniSharp.dll", "platformId": "win-x64", "isFramework": false, - "integrity": "A71FD29E6CACDF41FD44ACB9F8532BE33DBD4CB313513E47A031443F648BDBAB" + "integrity": "21BB3F7D990B6D464A748E9C11731582CAEEAAB87D7F749EDEACFE136A09C13E" }, { "id": "OmniSharp", "description": "OmniSharp for Windows (.NET 4.7.2 / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-win-arm64-1.39.11.zip", - "installPath": ".omnisharp/1.39.11", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-win-arm64-1.39.12.zip", + "installPath": ".omnisharp/1.39.12", "platforms": [ "win32" ], "architectures": [ "arm64" ], - "installTestPath": "./.omnisharp/1.39.11/OmniSharp.exe", + "installTestPath": "./.omnisharp/1.39.12/OmniSharp.exe", "platformId": "win-arm64", "isFramework": true, - "integrity": "D42BB3A146B9DED5C59630708A6FFB0F76B2067B31AE3A6596596AFFCE7D79C9" + "integrity": "E61CFBD416C9099D5710748281A0E07763ABE6D6EC930F31335B008DB6907780" }, { "id": "OmniSharp", "description": "OmniSharp for Windows (.NET 6 / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-win-arm64-net6.0-1.39.11.zip", - "installPath": ".omnisharp/1.39.11-net6.0", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-win-arm64-net6.0-1.39.12.zip", + "installPath": ".omnisharp/1.39.12-net6.0", "platforms": [ "win32" ], "architectures": [ "arm64" ], - "installTestPath": "./.omnisharp/1.39.11-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.12-net6.0/OmniSharp.dll", "platformId": "win-arm64", "isFramework": false, - "integrity": "FFC67D2A97F8E04161BE2DCA5CE48ECEB1B09A3DD0FCE697122D5B77302FC152" + "integrity": "ECA34E2AEEB1775AAB664C5C06232EFBB57BB2CA6020A63FB92D24A0EE3A6906" }, { "id": "OmniSharp", "description": "OmniSharp for OSX (Mono / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-osx-1.39.11.zip", - "installPath": ".omnisharp/1.39.11", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-osx-1.39.12.zip", + "installPath": ".omnisharp/1.39.12", "platforms": [ "darwin" ], @@ -256,48 +257,48 @@ "./mono.osx", "./run" ], - "installTestPath": "./.omnisharp/1.39.11/run", + "installTestPath": "./.omnisharp/1.39.12/run", "platformId": "osx", "isFramework": true, - "integrity": "1E339604AE52F531655B57A1058EB56E5CE0E1311C62B4CE16BE7CD0D265AA50" + "integrity": "645BD54508011CEF386FC765FA9E2DD6F6615120A6F611EF78DB2C41A3634C71" }, { "id": "OmniSharp", "description": "OmniSharp for OSX (.NET 6 / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-osx-x64-net6.0-1.39.11.zip", - "installPath": ".omnisharp/1.39.11-net6.0", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-osx-x64-net6.0-1.39.12.zip", + "installPath": ".omnisharp/1.39.12-net6.0", "platforms": [ "darwin" ], "architectures": [ "x86_64" ], - "installTestPath": "./.omnisharp/1.39.11-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.12-net6.0/OmniSharp.dll", "platformId": "osx-x64", "isFramework": false, - "integrity": "01571AE3B5DF4345E42B1EBD85601A654985590D403F40D2F802ED3204516350" + "integrity": "04A286EA36CE60AD1EBC83E16B114FD6663BDE840C43FD695067268A39B81CB1" }, { "id": "OmniSharp", "description": "OmniSharp for OSX (.NET 6 / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-osx-arm64-net6.0-1.39.11.zip", - "installPath": ".omnisharp/1.39.11-net6.0", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-osx-arm64-net6.0-1.39.12.zip", + "installPath": ".omnisharp/1.39.12-net6.0", "platforms": [ "darwin" ], "architectures": [ "arm64" ], - "installTestPath": "./.omnisharp/1.39.11-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.12-net6.0/OmniSharp.dll", "platformId": "osx-arm64", "isFramework": false, - "integrity": "9318997071878AB2DD7ECA29F1C797449B6C5454A0CB78BED0D17121BEC37B10" + "integrity": "44A197EBB3FC1AE55209FD3A125F2EDF6327F91A0E1EFC76025B5F7787CC4F94" }, { "id": "OmniSharp", "description": "OmniSharp for Linux (Mono / x86)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-x86-1.39.11.zip", - "installPath": ".omnisharp/1.39.11", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-x86-1.39.12.zip", + "installPath": ".omnisharp/1.39.12", "platforms": [ "linux" ], @@ -309,16 +310,16 @@ "./mono.linux-x86", "./run" ], - "installTestPath": "./.omnisharp/1.39.11/run", + "installTestPath": "./.omnisharp/1.39.12/run", "platformId": "linux-x86", "isFramework": true, - "integrity": "9568941017C31318D893669647042065985A0BA871708DA3688208D50CA7F452" + "integrity": "7C5691CCA9F617FBCCAA687F3624913428F31FF3213F689E25D62E17CBC0C2DE" }, { "id": "OmniSharp", "description": "OmniSharp for Linux (Mono / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-x64-1.39.11.zip", - "installPath": ".omnisharp/1.39.11", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-x64-1.39.12.zip", + "installPath": ".omnisharp/1.39.12", "platforms": [ "linux" ], @@ -329,32 +330,32 @@ "./mono.linux-x86_64", "./run" ], - "installTestPath": "./.omnisharp/1.39.11/run", + "installTestPath": "./.omnisharp/1.39.12/run", "platformId": "linux-x64", "isFramework": true, - "integrity": "88B70F9D4D7587562C3F25EC1062E8A8120EBCE7083D56E91D9AE4A6C72E4340" + "integrity": "82997A2EC98CDC213712EE0F96FB5A0A6C0858889D26C6BD7DB2FA1269FD6CBA" }, { "id": "OmniSharp", "description": "OmniSharp for Linux (.NET 6 / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-x64-net6.0-1.39.11.zip", - "installPath": ".omnisharp/1.39.11-net6.0", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-x64-net6.0-1.39.12.zip", + "installPath": ".omnisharp/1.39.12-net6.0", "platforms": [ "linux" ], "architectures": [ "x86_64" ], - "installTestPath": "./.omnisharp/1.39.11-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.12-net6.0/OmniSharp.dll", "platformId": "linux-x64", "isFramework": false, - "integrity": "E58BE0F23DD84F2ACCEA245D7DBB8F9DE6ADEA354D44CB2A3F10D7F1326571D9" + "integrity": "7D65424EEEC4D0C06BAEE22D37465AD9718B626D4E9E9CA0E5FB95862630C049" }, { "id": "OmniSharp", "description": "OmniSharp for Linux (Mono / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-arm64-1.39.11.zip", - "installPath": ".omnisharp/1.39.11", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-arm64-1.39.12.zip", + "installPath": ".omnisharp/1.39.12", "platforms": [ "linux" ], @@ -365,63 +366,63 @@ "./mono.linux-arm64", "./run" ], - "installTestPath": "./.omnisharp/1.39.11/run", + "installTestPath": "./.omnisharp/1.39.12/run", "platformId": "linux-arm64", "isFramework": true, - "integrity": "A10A5595AB0B13BD22495A7278995D9711B12F9EDE04AA3BB29CBE8F175EFABA" + "integrity": "39478AE2072874258CC493055F7332FD9BEC7B3ED1FFF57280EB2D07CAFAE4BD" }, { "id": "OmniSharp", "description": "OmniSharp for Linux (.NET 6 / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-arm64-net6.0-1.39.11.zip", - "installPath": ".omnisharp/1.39.11-net6.0", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-arm64-net6.0-1.39.12.zip", + "installPath": ".omnisharp/1.39.12-net6.0", "platforms": [ "linux" ], "architectures": [ "arm64" ], - "installTestPath": "./.omnisharp/1.39.11-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.12-net6.0/OmniSharp.dll", "platformId": "linux-arm64", "isFramework": false, - "integrity": "D4794CBA966B9B5D0F731E1606E732D5C231D4B1D345788B837565914D880A0E" + "integrity": "1A009CF2D62D1A6FE1646FFF03FED52633B019B49A71FB3D8CE74406224EA0C5" }, { "id": "OmniSharp", "description": "OmniSharp for Linux musl (.NET 6 / x64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-musl-x64-net6.0-1.39.11.zip", - "installPath": ".omnisharp/1.39.11-net6.0", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-musl-x64-net6.0-1.39.12.zip", + "installPath": ".omnisharp/1.39.12-net6.0", "platforms": [ "linux-musl" ], "architectures": [ "x86_64" ], - "installTestPath": "./.omnisharp/1.39.11-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.12-net6.0/OmniSharp.dll", "platformId": "linux-musl-x64", "isFramework": false, - "integrity": "E8F924BB793C60B032FADE805030DF8F8F9B62F7FC32BF3B688EEA1B7E94B5DA" + "integrity": "FB97F4B0AB76823272B55CA3134FD5877C5651366CB88C678ED0445E86A8CD35" }, { "id": "OmniSharp", "description": "OmniSharp for Linux musl (.NET 6 / arm64)", - "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.11/omnisharp-linux-musl-arm64-net6.0-1.39.11.zip", - "installPath": ".omnisharp/1.39.11-net6.0", + "url": "https://roslynomnisharp.blob.core.windows.net/releases/1.39.12/omnisharp-linux-musl-arm64-net6.0-1.39.12.zip", + "installPath": ".omnisharp/1.39.12-net6.0", "platforms": [ "linux-musl" ], "architectures": [ "arm64" ], - "installTestPath": "./.omnisharp/1.39.11-net6.0/OmniSharp.dll", + "installTestPath": "./.omnisharp/1.39.12-net6.0/OmniSharp.dll", "platformId": "linux-musl-arm64", "isFramework": false, - "integrity": "223B58388C0F7226874DCA9053FE10B10739F2E43663DEED3F2F48C892E0D8E6" + "integrity": "9944EBD6EE06BD595BCADD3057CD9BEF4105C3A3952DAE03E54F3114E2E6661F" }, { "id": "Debugger", "description": ".NET Core Debugger (Windows / x64)", - "url": "https://vsdebugger.azureedge.net/coreclr-debug-2-55-0/coreclr-debug-win7-x64.zip", + "url": "https://vsdebugger-cyg0dxb6czfafzaz.b01.azurefd.net/coreclr-debug-2-60-0/coreclr-debug-win7-x64.zip", "installPath": ".debugger/x86_64", "platforms": [ "win32" @@ -431,12 +432,12 @@ "arm64" ], "installTestPath": "./.debugger/x86_64/vsdbg-ui.exe", - "integrity": "E3368B212113568D7371A007D27917ED50B848D253AD3FA371AEE708A901F9E4" + "integrity": "BFA8E3298DAFE59213BA2FD9938031B7A41A354415274E8238BB49D9E9381E66" }, { "id": "Debugger", "description": ".NET Core Debugger (Windows / ARM64)", - "url": "https://vsdebugger.azureedge.net/coreclr-debug-2-55-0/coreclr-debug-win10-arm64.zip", + "url": "https://vsdebugger-cyg0dxb6czfafzaz.b01.azurefd.net/coreclr-debug-2-60-0/coreclr-debug-win10-arm64.zip", "installPath": ".debugger/arm64", "platforms": [ "win32" @@ -445,12 +446,12 @@ "arm64" ], "installTestPath": "./.debugger/arm64/vsdbg-ui.exe", - "integrity": "668E48B411BFA7F23770896C08E73E812E48F846265DDC57FB4EE13AA3124DA0" + "integrity": "299DA0ABD00CD61AA1A6293A3C103CCF3070844E4B667C2811A3AAC16D7E6E44" }, { "id": "Debugger", "description": ".NET Core Debugger (macOS / x64)", - "url": "https://vsdebugger.azureedge.net/coreclr-debug-2-55-0/coreclr-debug-osx-x64.zip", + "url": "https://vsdebugger-cyg0dxb6czfafzaz.b01.azurefd.net/coreclr-debug-2-60-0/coreclr-debug-osx-x64.zip", "installPath": ".debugger/x86_64", "platforms": [ "darwin" @@ -464,12 +465,12 @@ "./vsdbg" ], "installTestPath": "./.debugger/x86_64/vsdbg-ui", - "integrity": "02A9DB05F7017A8610C6BED0CFF696294ECF8C16F6706B9AD8E40032B9E24C3B" + "integrity": "5DF02935DFFD453E8C947AFC7567F4199D4BD83F582EBB20ECD23C054F8A43E2" }, { "id": "Debugger", "description": ".NET Core Debugger (macOS / arm64)", - "url": "https://vsdebugger.azureedge.net/coreclr-debug-2-55-0/coreclr-debug-osx-arm64.zip", + "url": "https://vsdebugger-cyg0dxb6czfafzaz.b01.azurefd.net/coreclr-debug-2-60-0/coreclr-debug-osx-arm64.zip", "installPath": ".debugger/arm64", "platforms": [ "darwin" @@ -482,12 +483,12 @@ "./vsdbg" ], "installTestPath": "./.debugger/arm64/vsdbg-ui", - "integrity": "058C2A63DB74AFD9C56964CE149F8D003AFF3C6AEF2A6C1EB24F3FAD51D6C489" + "integrity": "1CBC75E00B7CE32DBD2617AC59EE10A4FE1DBB5AEA6E6A94224F50DEC3C96D3E" }, { "id": "Debugger", "description": ".NET Core Debugger (linux / ARM)", - "url": "https://vsdebugger.azureedge.net/coreclr-debug-2-55-0/coreclr-debug-linux-arm.zip", + "url": "https://vsdebugger-cyg0dxb6czfafzaz.b01.azurefd.net/coreclr-debug-2-60-0/coreclr-debug-linux-arm.zip", "installPath": ".debugger", "platforms": [ "linux" @@ -500,12 +501,12 @@ "./vsdbg" ], "installTestPath": "./.debugger/vsdbg-ui", - "integrity": "B236CD072B7A0E962FECBF0DCF14B5BDBC590723D30D9C84815BD27B906874D0" + "integrity": "AE7B3967783B87448BAC4C78074B1D6F6AD4B70981FBB202CC9150A46405D287" }, { "id": "Debugger", "description": ".NET Core Debugger (linux / ARM64)", - "url": "https://vsdebugger.azureedge.net/coreclr-debug-2-55-0/coreclr-debug-linux-arm64.zip", + "url": "https://vsdebugger-cyg0dxb6czfafzaz.b01.azurefd.net/coreclr-debug-2-60-0/coreclr-debug-linux-arm64.zip", "installPath": ".debugger", "platforms": [ "linux" @@ -518,12 +519,12 @@ "./vsdbg" ], "installTestPath": "./.debugger/vsdbg-ui", - "integrity": "3A18166E6166E46E3731949F8AE9168CAC856D93F331FECD09ABB3FCD843B550" + "integrity": "468C4577B8E131E47CE83C7A290DA41580C6D327B43308CA8B206D068057CCD0" }, { "id": "Debugger", "description": ".NET Core Debugger (linux musl / x64)", - "url": "https://vsdebugger.azureedge.net/coreclr-debug-2-55-0/coreclr-debug-linux-musl-x64.zip", + "url": "https://vsdebugger-cyg0dxb6czfafzaz.b01.azurefd.net/coreclr-debug-2-60-0/coreclr-debug-linux-musl-x64.zip", "installPath": ".debugger", "platforms": [ "linux-musl" @@ -536,12 +537,12 @@ "./vsdbg" ], "installTestPath": "./.debugger/vsdbg-ui", - "integrity": "4CE30A8F2BC7738BEF02D7E28FC8B67F14740A9A1A05E3CC260597675858C9FE" + "integrity": "B097E8D5C87B445399829DCDC32C387121E81F6F79001715645B620FC8EFD087" }, { "id": "Debugger", "description": ".NET Core Debugger (linux musl / ARM64)", - "url": "https://vsdebugger.azureedge.net/coreclr-debug-2-55-0/coreclr-debug-linux-musl-arm64.zip", + "url": "https://vsdebugger-cyg0dxb6czfafzaz.b01.azurefd.net/coreclr-debug-2-60-0/coreclr-debug-linux-musl-arm64.zip", "installPath": ".debugger", "platforms": [ "linux-musl" @@ -554,12 +555,12 @@ "./vsdbg" ], "installTestPath": "./.debugger/vsdbg-ui", - "integrity": "F9D8686A32D27FA85546A2326F96E08D2CC90C0CBA03CD81B2C280C0F67793C5" + "integrity": "02CBCBD53377ECDFD68671D216A7CD2631CF22C60CFA66F5361A919F915D0B19" }, { "id": "Debugger", "description": ".NET Core Debugger (linux / x64)", - "url": "https://vsdebugger.azureedge.net/coreclr-debug-2-55-0/coreclr-debug-linux-x64.zip", + "url": "https://vsdebugger-cyg0dxb6czfafzaz.b01.azurefd.net/coreclr-debug-2-60-0/coreclr-debug-linux-x64.zip", "installPath": ".debugger", "platforms": [ "linux" @@ -572,7 +573,7 @@ "./vsdbg" ], "installTestPath": "./.debugger/vsdbg-ui", - "integrity": "7F3DBA584BF243251154642CC789347CA4C1DFBF6EB7B7B9A44F278545128039" + "integrity": "1710E20F9A7BD4F10A126B86D8F3F9F6C2859B7A7EA2E6BACCE7029ACDA57DFB" }, { "id": "RazorOmnisharp", @@ -733,6 +734,11 @@ "title": "Text Editor", "order": 1, "properties": { + "dotnet.autoInsert.enableAutoInsert": { + "type": "boolean", + "default": true, + "description": "%configuration.dotnet.autoInsert.enableAutoInsert%" + }, "dotnet.typeMembers.memberInsertionLocation": { "type": "string", "enum": [ @@ -1405,11 +1411,6 @@ "default": false, "description": "%configuration.dotnet.preferCSharpExtension%" }, - "dotnet.dotnetPath": { - "type": "string", - "scope": "machine-overridable", - "description": "%configuration.dotnet.dotnetPath%" - }, "dotnet.server.path": { "type": "string", "scope": "machine-overridable", @@ -1508,7 +1509,7 @@ "razor.languageServer.forceRuntimeCodeGeneration": { "type": "boolean", "scope": "machine-overridable", - "default": false, + "default": null, "description": "%configuration.razor.languageServer.forceRuntimeCodeGeneration%", "order": 90 }, @@ -1536,6 +1537,11 @@ "description": "%configuration.omnisharp.dotnet.server.useOmnisharp%", "order": 0 }, + "omnisharp.dotnetPath": { + "type": "string", + "scope": "machine-overridable", + "description": "%configuration.omnisharp.dotnetPath%" + }, "csharp.format.enable": { "type": "boolean", "default": true, diff --git a/package.nls.cs.json b/package.nls.cs.json index 420d050ed5..16ba6a2644 100644 --- a/package.nls.cs.json +++ b/package.nls.cs.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "Zobrazit tipy pro indexery", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "Zobrazit nápovědy pro typy parametrů lambda", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "Zobrazovat vložené nápovědy k typům", + "configuration.dotnet.autoInsert.enableAutoInsert": "Povolí automatické vkládání komentářů k dokumentaci.", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "Spustit analýzu kódu na pozadí pro: (Dříve omnisharp.enableRoslynAnalyzers)", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "Celé řešení", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "Žádné", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Pro členy, které jste nedávno vybrali, proveďte automatické dokončování názvů objektů.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automaticky zobrazovat seznam dokončení v seznamech argumentů", "configuration.dotnet.defaultSolution.description": "Cesta výchozího řešení, které se má otevřít v pracovním prostoru. Můžete přeskočit nastavením na „zakázat“. (Dříve omnisharp.defaultLaunchSolution)", - "configuration.dotnet.dotnetPath": "Zadává cestu k adresáři instalace dotnet, která se má použít místo výchozí systémové instalace. To má vliv pouze na instalaci dotnet, která se má použít k hostování samotného jazykového serveru. Příklad: /home/username/mycustomdotnetdirectory", "configuration.dotnet.enableXamlTools": "Povolí nástroje XAML při použití sady C# Dev Kit", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Zvýrazněte související komponenty JSON pod kurzorem.", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "Zvýraznit související komponenty regulárního výrazu pod kurzorem.", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "Určuje, jestli se mají zobrazovat oznámení, pokud při načítání projektu dojde k upozorněním nebo chybám na serveru OmniSharp. Upozornění/chyby tohoto typu jsou vždy generovány do protokolu serveru OmniSharp.", "configuration.omnisharp.dotNetCliPaths": "Cesty k místně staženému rozhraní .NET CLI, které se použije pro spuštění jakéhokoli uživatelského kódu", "configuration.omnisharp.dotnet.server.useOmnisharp": "Přepne na používání serveru Omnisharp pro jazykové funkce, pokud je to povoleno (vyžaduje restartování). Tato možnost se nebude s nainstalovanou sadou C# Dev Kit respektovat.", + "configuration.omnisharp.dotnetPath": "Zadává cestu k adresáři instalace dotnet, která se má použít místo výchozí systémové instalace. To má vliv pouze na instalaci dotnet, která se má použít k hostování samotného serveru OmniSharp. Příklad: /home/username/mycustomdotnetdirectory", "configuration.omnisharp.enableAsyncCompletion": "(EXPERIMENTÁLNÍ) Povolí podporu pro asynchronní řešení úprav doplňování. Může to urychlit zobrazení seznamu pro doplňování, zejména seznamů pro doplňování metod přepsání a částečných metod, za cenu mírného zpoždění po vložení položky pro doplnění. Většina položek por doplnění nebude mít při použití této funkce žádný znatelný dopad, ale zadání bezprostředně po vložení doplnění metody přepsání nebo částečné metody před doplněním vložení může mít nepředvídatelné výsledky.", "configuration.omnisharp.enableDecompilationSupport": "Povolí podporu pro dekompilaci externích odkazů namísto zobrazování metadat.", "configuration.omnisharp.enableEditorConfigSupport": "Povolí podporu čtení stylu kódu, konvence pojmenování a nastavení analyzátoru z .editorconfig.", diff --git a/package.nls.de.json b/package.nls.de.json index 80598bcc1c..7a972ba796 100644 --- a/package.nls.de.json +++ b/package.nls.de.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "Hinweise für Indexer anzeigen", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "Hinweise für Lambda-Parametertypen anzeigen", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "Inlinetyphinweise anzeigen", + "configuration.dotnet.autoInsert.enableAutoInsert": "Aktivieren Sie das automatische Einfügen von Dokumentationskommentaren.", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "Ausführen der Hintergrundcodeanalyse für: (Zuvor \"omnisharp.enableRoslynAnalyzers\")", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "Gesamte Projektmappe", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "Keine", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Führen Sie die automatische Vervollständigung des Objektnamens für die Elemente aus, die Sie kürzlich ausgewählt haben.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Vervollständigungsliste in Argumentlisten automatisch anzeigen", "configuration.dotnet.defaultSolution.description": "Der Pfad der Standardlösung, die im Arbeitsbereich geöffnet werden soll, oder auf \"deaktivieren\" festlegen, um sie zu überspringen. (Zuvor \"omnisharp.defaultLaunchSolution\")", - "configuration.dotnet.dotnetPath": "Gibt den Pfad zu einem dotnet-Installationsverzeichnis an, das anstelle des Standardsystems verwendet werden soll. Dies wirkt sich nur auf die dotnet-Installation aus, die zum Hosten des Sprachservers selbst verwendet werden soll. Beispiel: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Aktiviert XAML-Tools bei Verwendung des C#-Dev Kit", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Zugehörige JSON-Komponenten unter dem Cursor markieren.", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "Zugehörige Komponenten regulärer Ausdrücke unter dem Cursor markieren.", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "Gibt an, ob Benachrichtigungen angezeigt werden sollen, wenn in OmniSharp Warnungen oder Fehler beim Laden eines Projekts auftreten. Beachten Sie, dass diese Warnungen/Fehler immer in das OmniSharp-Protokoll ausgegeben werden.", "configuration.omnisharp.dotNetCliPaths": "Pfade zu einem lokalen Download der .NET-CLI, der zum Ausführen von Benutzercode verwendet werden soll.", "configuration.omnisharp.dotnet.server.useOmnisharp": "Wechselt bei Aktivierung zur Verwendung des Omnisharp-Servers für Sprachfeatures (Neustart erforderlich). Diese Option wird bei installiertem C#-Entwicklerkit nicht berücksichtigt.", + "configuration.omnisharp.dotnetPath": "Gibt den Pfad zu einem dotnet-Installationsverzeichnis an, das anstelle des Standardsystems verwendet werden soll. Dies wirkt sich nur auf die dotnet-Installation aus, die zum Hosten des OmniSharp-Servers selbst verwendet werden soll. Beispiel: \"/home/username/mycustomdotnetdirectory\".", "configuration.omnisharp.enableAsyncCompletion": "(EXPERIMENTELL) Aktiviert die Unterstützung für das asynchrone Auflösen von Vervollständigungsbearbeitungen. Dies kann die Zeit bis zum Anzeigen der Vervollständigungsliste verkürzen, insbesondere bei Vervollständigungslisten für Überschreiben und partielle Methoden. Der Nachteil sind geringfügige Verzögerungen nach dem Einfügen eines Vervollständigungselements. Die meisten Vervollständigungselemente haben bei diesem Feature keine merklichen Auswirkungen, aber die Eingabe unmittelbar nach dem Einfügen einer Vervollständigung für eine Überschreibung oder partielle Methode kann unvorhersehbare Ergebnisse haben.", "configuration.omnisharp.enableDecompilationSupport": "Aktiviert die Unterstützung für das Dekompilieren externer Verweise, anstatt Metadaten anzuzeigen.", "configuration.omnisharp.enableEditorConfigSupport": "Aktiviert die Unterstützung für das Lesen von Einstellungen für Codestil, Namenskonventionen und Analyseeinstellungen aus „.editorconfig“.", diff --git a/package.nls.es.json b/package.nls.es.json index e054255257..17be748b93 100644 --- a/package.nls.es.json +++ b/package.nls.es.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "Mostrar sugerencias para indizadores", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "Mostrar sugerencias para los tipos de parámetros lambda", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "Mostrar sugerencias de tipo insertado", + "configuration.dotnet.autoInsert.enableAutoInsert": "Habilite la inserción automática de comentarios de documentación.", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "Ejecutar análisis de código en segundo plano para: (anteriormente \"omnisharp.enableRoslynAnalyzers\")", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "Toda la solución", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "Ninguno", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Realice la finalización automática del nombre de objeto para los miembros que ha seleccionado recientemente.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Mostrar automáticamente la lista de finalización en las listas de argumentos", "configuration.dotnet.defaultSolution.description": "Ruta de acceso de la solución predeterminada que se va a abrir en el área de trabajo o se establece en \"deshabilitar\" para omitirla. (Anteriormente \"omnisharp.defaultLaunchSolution\")", - "configuration.dotnet.dotnetPath": "Especifica la ruta de acceso a un directorio de instalación de dotnet que se va a usar en lugar del predeterminado del sistema. Esto solo influye en la instalación de dotnet que se va a usar para hospedar el propio servidor de idioma. Ejemplo: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Habilita las herramientas XAML al usar el Kit de desarrollo de C#", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Resaltar los componentes JSON relacionados bajo el cursor.", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "Resaltar los componentes de expresiones regulares relacionados bajo el cursor.", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "Especifica si se deben mostrar las notificaciones si OmniSharp encuentra advertencias o errores al cargar un proyecto. Tenga en cuenta que estas advertencias o errores se emiten siempre en el registro de OmniSharp", "configuration.omnisharp.dotNetCliPaths": "Rutas de acceso a una descarga local de la CLI de .NET que se va a usar para ejecutar cualquier código de usuario.", "configuration.omnisharp.dotnet.server.useOmnisharp": "Cambia para usar el servidor Omnisharp para las características de idioma cuando está habilitado (requiere reiniciar). Esta opción no se usará con el Kit de desarrollo de C# instalado.", + "configuration.omnisharp.dotnetPath": "Especifica la ruta de acceso a un directorio de instalación de dotnet que se va a usar en lugar del predeterminado del sistema. Esto solo influye en la instalación dotnet a utilizar para alojar el propio servidor OmniSharp. Ejemplo: \"/home/username/mycustomdotnetdirectory\".", "configuration.omnisharp.enableAsyncCompletion": "(EXPERIMENTAL) Habilita la compatibilidad para resolver ediciones de finalización de forma asincrónica. Esto puede acelerar el tiempo para mostrar la lista de finalización, especialmente las listas de finalización de métodos parciales y de invalidación, a costa de ligeros retrasos después de insertar un elemento de finalización. La mayoría de los elementos de finalización no tendrán ningún impacto notable con esta característica, pero escribir inmediatamente después de insertar una invalidación o finalización parcial del método antes de que se complete la inserción puede tener resultados impredecibles.", "configuration.omnisharp.enableDecompilationSupport": "Habilita la compatibilidad con la descompilación de referencias externas en lugar de ver metadatos.", "configuration.omnisharp.enableEditorConfigSupport": "Habilita la compatibilidad para leer el estilo de código, la convención de nomenclatura y la configuración del analizador desde .editorconfig.", diff --git a/package.nls.fr.json b/package.nls.fr.json index cc05a94a6a..056ae7fb59 100644 --- a/package.nls.fr.json +++ b/package.nls.fr.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "Afficher les indicateurs pour les indexeurs", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "Afficher les indicateurs pour les types de paramètre lambda", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "Afficher les indicateurs de type inline", + "configuration.dotnet.autoInsert.enableAutoInsert": "Activez l’insertion automatique des commentaires de documentation.", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "Exécuter l’analyse du code en arrière-plan pour : (précédemment, « omnisharp.enableRoslynAnalyzers »)", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "Solution complète", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "Aucun", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Effectuez la complétion automatique du nom d’objet pour les membres que vous avez récemment sélectionnés.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Afficher automatiquement la liste de complétion dans les listes d'arguments", "configuration.dotnet.defaultSolution.description": "Le chemin d’accès de la solution par défaut à ouvrir dans l’espace de travail, ou la valeur ’disable’ pour l’ignorer. (Précédemment `omnisharp.defaultLaunchSolution`)", - "configuration.dotnet.dotnetPath": "Spécifie le chemin d’accès à un répertoire d’installation de dotnet à utiliser à la place du répertoire par défaut du système. Cela n’a d’influence que sur l’installation dotnet à utiliser pour héberger le serveur de langues lui-même. Exemple : \"/home/username/mycustomdotnetdirect\" : \"/home/nom d’utilisateur/monrépertoiredotnetpersonnalisé\".", "configuration.dotnet.enableXamlTools": "Active les outils XAML lors de l’utilisation du Kit de développement C#", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Mettez en surbrillance les composants JSON associés sous le curseur.", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "Mettre en surbrillance les composants d’expression régulière associés sous le curseur.", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "Spécifie si les notifications doivent être affichées si OmniSharp rencontre des avertissements ou des erreurs lors du chargement d’un projet. Notez que ces avertissements/erreurs sont toujours émis dans le journal OmniSharp", "configuration.omnisharp.dotNetCliPaths": "Chemins d’accès à un téléchargement local de l’interface CLI .NET à utiliser pour exécuter n’importe quel code utilisateur.", "configuration.omnisharp.dotnet.server.useOmnisharp": "Bascule pour utiliser le serveur Omnisharp pour les fonctionnalités linguistiques lorsqu’il est activé (nécessite un redémarrage). Cette option ne sera pas respectée avec le Kit de développement C# installé.", + "configuration.omnisharp.dotnetPath": "Spécifie le chemin d'accès vers un répertoire d'installation dotnet à utiliser à la place du répertoire système par défaut. Cela influence uniquement l'installation dotnet à utiliser pour héberger le serveur OmniSharp lui-même. Exemple : \"/home/username/mycustomdotnetdirectory\".", "configuration.omnisharp.enableAsyncCompletion": "(EXPÉRIMENTAL) Active la prise en charge de la résolution asynchrone des modifications de saisie semi-automatique. Cela peut accélérer l'affichage de la liste d'achèvement, en particulier les listes d'achèvement de méthodes de remplacement et partielles, au prix de légers retards après l'insertion d'un élément d'achèvement. La plupart des éléments de saisie semi-automatique n’auront aucun impact notable sur cette fonctionnalité, mais la saisie immédiatement après l’insertion d’un remplacement ou d’une saisie semi-automatique de méthode partielle, avant la fin de l’insertion, peut avoir des résultats imprévisibles.", "configuration.omnisharp.enableDecompilationSupport": "Active la prise en charge de la décompilation des références externes au lieu d’afficher les métadonnées.", "configuration.omnisharp.enableEditorConfigSupport": "Permet la prise en charge du style de lecture du code, de la convention de dénomination et des paramètres de l'analyseur à partir de .editorconfig.", diff --git a/package.nls.it.json b/package.nls.it.json index 04282a4c21..477ff927b7 100644 --- a/package.nls.it.json +++ b/package.nls.it.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "Mostra suggerimenti per i valori letterali", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "Mostra suggerimenti per i tipi di parametro lambda", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "Visualizza suggerimenti di tipo inline", + "configuration.dotnet.autoInsert.enableAutoInsert": "Abilita l'inserimento automatico dei commenti della documentazione.", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "Eseguire l'analisi del codice in background per: (In precedenza “omnisharp.enableRoslynAnalyzers”)", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "Intera soluzione", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "Nessuno", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Consente di eseguire il completamento automatico del nome dell'oggetto per i membri selezionati di recente.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Mostra automaticamente l'elenco di completamento negli elenchi di argomenti", "configuration.dotnet.defaultSolution.description": "Percorso della soluzione predefinita da aprire nell'area di lavoro o impostare su 'disabilita' per ignorarla. (In precedenza “omnisharp.defaultLaunchSolution”)", - "configuration.dotnet.dotnetPath": "Specifica il percorso di una directory di installazione dotnet da usare al posto di quella predefinita del sistema. Ciò influisce solo sull'installazione di dotnet da usare per ospitare il server di linguaggio stesso. Esempio: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Abilita gli strumenti XAML quando si usa il kit di sviluppo C#", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Evidenziare i componenti JSON correlati sotto il cursore.", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "Evidenzia i componenti dell'espressione regolare correlati sotto il cursore.", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "Specifica se visualizzare le notifiche se OmniSharp rileva avvisi o errori durante il caricamento di un progetto. Si noti che questi avvisi/errori vengono sempre inviati al log OmniSharp", "configuration.omnisharp.dotNetCliPaths": "Percorsi di un download locale dell'interfaccia della riga di comando .NET da usare per l'esecuzione di qualsiasi codice utente.", "configuration.omnisharp.dotnet.server.useOmnisharp": "Passa all'utilizzo del server Omnisharp per le funzionalità del linguaggio se abilitato (richiede il riavvio). Questa opzione non verrà rispettata con il Kit di sviluppo C# installato.", + "configuration.omnisharp.dotnetPath": "Specifica il percorso di una directory di installazione dotnet da usare al posto di quella predefinita del sistema. Ciò influisce solo sull'installazione di dotnet da usare per ospitare il server OmniSharp stesso. Esempio: \"/home/username/mycustomdotnetdirectory\".", "configuration.omnisharp.enableAsyncCompletion": "(SPERIMENTALE) Abilita il supporto per la risoluzione asincrona delle modifiche di completamento. In questo modo è possibile velocizzare il tempo necessario per visualizzare l'elenco di completamento, in particolare gli elenchi di override e di completamento di metodi parziali, a costo di lievi ritardi dopo l'inserimento di un elemento di completamento. La maggior parte degli elementi di completamento non avrà impatti evidenti su questa funzionalità, ma la digitazione subito dopo l'inserimento di un override o di un completamento parziale del metodo, prima del completamento dell'inserimento, può avere risultati imprevedibili.", "configuration.omnisharp.enableDecompilationSupport": "Abilita il supporto per la decompilazione dei riferimenti esterni anziché per la visualizzazione dei metadati.", "configuration.omnisharp.enableEditorConfigSupport": "Abilita il supporto per la lettura dello stile del codice, della convenzione di denominazione e delle impostazioni dell'analizzatore da .editorconfig.", diff --git a/package.nls.ja.json b/package.nls.ja.json index faa378fb61..6b2edc7b6b 100644 --- a/package.nls.ja.json +++ b/package.nls.ja.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "インデクサーのヒントを表示する", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "ラムダ パラメーター型のヒントを表示する", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "インライン型のヒントを表示する", + "configuration.dotnet.autoInsert.enableAutoInsert": "ドキュメント コメントの自動挿入を有効にします。", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "次のバックグラウンド コード分析を実行します: (以前の `omnisharp.enableRoslynAnalyzers`)", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "ソリューション全体", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "なし", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "最近選択したメンバーの自動オブジェクト名の完了を実行します。", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "引数リストに入力候補一覧を自動的に表示する", "configuration.dotnet.defaultSolution.description": "ワークスペースで開く既定のソリューションのパス。スキップするには 'disable' に設定します。(以前の `omnisharp.defaultLaunchSolution`)", - "configuration.dotnet.dotnetPath": "既定のシステム ディレクトリの代わりに使用する dotnet インストール ディレクトリへのパスを指定します。これは、言語サーバー自体をホストするために使用する dotnet インストールにのみ影響します。例: \"/home/username/mycustomdotnetdirectory\"。", "configuration.dotnet.enableXamlTools": "C# 開発キットを使用するときに XAML ツールを有効にします", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "カーソルの下にある関連する JSON コンポーネントをハイライトします。", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "カーソルの下にある関連する正規表現コンポーネントをハイライトします。", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "OmniSharp でプロジェクトの読み込み中に警告またはエラーが発生した場合に通知を表示するかどうかを指定します。これらの警告/エラーは常に OmniSharp ログに出力されることに注意してください", "configuration.omnisharp.dotNetCliPaths": "ユーザー コードの実行に使用する .NET CLI のローカル ダウンロードへのパス。", "configuration.omnisharp.dotnet.server.useOmnisharp": "言語機能を有効にすると Omnisharp サーバーを使用するように切り替えます (再起動が必要です)。このオプションは、C# 開発キットがインストールされている場合は適用されません。", + "configuration.omnisharp.dotnetPath": "既定のシステム ディレクトリの代わりに使用する dotnet インストール ディレクトリへのパスを指定します。これは、OmniSharp サーバー自体をホストするために使用する dotnet インストールにのみ影響します。例: \"/home/username/mycustomdotnetdirectory\"。", "configuration.omnisharp.enableAsyncCompletion": "(試験段階) 完了編集を非同期的に解決するためのサポートを有効にします。これにより、完了項目の挿入後にわずかな遅延が発生する代わりに、完了リストを表示する時間を短縮できます。特に、メソッドの完了リストをオーバーライドして部分的に指定できます。ほとんどの完了項目は、この機能に顕著な影響を与えるわけではありませんが、オーバーライドまたは部分的なメソッドの完了を挿入した直後に入力すると、挿入が完了する前に予測できない結果になる可能性があります。", "configuration.omnisharp.enableDecompilationSupport": "メタデータを表示する代わりに、外部参照の逆コンパイルのサポートを有効にします。", "configuration.omnisharp.enableEditorConfigSupport": ".editorconfig からコード スタイル、名前付け規則、アナライザー設定を読み取りのサポートを有効にします。", diff --git a/package.nls.json b/package.nls.json index 90f51a1676..42ebf7acf5 100644 --- a/package.nls.json +++ b/package.nls.json @@ -23,8 +23,8 @@ "command.dotnet.test.runTestsInContext": "Run Tests in Context", "command.dotnet.test.debugTestsInContext": "Debug Tests in Context", "command.dotnet.restartServer": "Restart Language Server", + "configuration.dotnet.autoInsert.enableAutoInsert": "Enable automatic insertion of documentation comments.", "configuration.dotnet.defaultSolution.description": "The path of the default solution to be opened in the workspace, or set to 'disable' to skip it. (Previously `omnisharp.defaultLaunchSolution`)", - "configuration.dotnet.dotnetPath": "Specifies the path to a dotnet installation directory to use instead of the default system one. This only influences the dotnet installation to use for hosting the language server itself. Example: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.server.path": "Specifies the absolute path to the server (LSP or O#) executable. When left empty the version pinned to the C# Extension is used. (Previously `omnisharp.path`)", "configuration.dotnet.server.componentPaths": "Allows overriding the folder path for built in components of the language server (for example, override the .roslynDevKit path in the extension directory to use locally built components)", "configuration.dotnet.server.componentPaths.roslynDevKit": "Overrides the folder path for the .roslynDevKit component of the language server", @@ -86,6 +86,7 @@ ] }, "configuration.omnisharp.dotnet.server.useOmnisharp": "Switches to use the Omnisharp server for language features when enabled (requires restart). This option will not be honored with C# Dev Kit installed.", + "configuration.omnisharp.dotnetPath": "Specifies the path to a dotnet installation directory to use instead of the default system one. This only influences the dotnet installation to use for hosting the OmniSharp server itself. Example: \"/home/username/mycustomdotnetdirectory\".", "configuration.omnisharp.csharp.format.enable": "Enable/disable default C# formatter (requires restart).", "configuration.omnisharp.csharp.suppressDotnetInstallWarning": "Suppress the warning that the .NET Core SDK is not on the path.", "configuration.omnisharp.csharp.suppressDotnetRestoreNotification": "Suppress the notification window to perform a 'dotnet restore' when dependencies can't be resolved.", diff --git a/package.nls.ko.json b/package.nls.ko.json index 911515a36c..c3e000e44f 100644 --- a/package.nls.ko.json +++ b/package.nls.ko.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "인덱서에 대한 힌트 표시", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "람다 매개 변수 형식에 대한 힌트 표시", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "인라인 유형 힌트 표시", + "configuration.dotnet.autoInsert.enableAutoInsert": "문서 주석 자동 삽입을 사용하도록 설정합니다.", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "다음에 대한 백그라운드 코드 분석 실행: (이전의 `omnisharp.enableRoslynAnalyzers`)", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "전체 솔루션", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "없음", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "최근에 선택한 멤버에 대해 자동 개체 이름 완성을 수행합니다.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "인수 목록에 자동으로 완성 목록 표시", "configuration.dotnet.defaultSolution.description": "작업 영역에서 열릴 기본 솔루션의 경로, 건너뛰려면 '비활성화'로 설정하세요(이전 `omnisharp.defaultLaunchSolution`).", - "configuration.dotnet.dotnetPath": "기본 시스템 대신 사용할 dotnet 설치 디렉터리를 지정합니다. 이는 언어 서버 자체를 호스팅하는 데 사용할 dotnet 설치에만 영향을 줍니다(예: \"/home/username/mycustomdotnetdirectory\").", "configuration.dotnet.enableXamlTools": "C# 개발자 키트를 사용할 때 XAML 도구 사용", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "커서 아래에서 관련 JSON 구성 요소를 강조 표시합니다.", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "커서 아래의 관련 정규식 구성 요소를 강조 표시합니다.", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "OmniSharp에서 프로젝트를 로드하는 동안 경고 또는 오류가 발생한 경우 알림을 표시할지 여부를 지정합니다. 이러한 경고/오류는 항상 OmniSharp 로그에 내보내집니다.", "configuration.omnisharp.dotNetCliPaths": "사용자 코드를 실행하는 데 사용할 .NET CLI의 로컬 다운로드 경로입니다.", "configuration.omnisharp.dotnet.server.useOmnisharp": "활성화된 경우 언어 기능에 Omnisharp 서버를 사용하도록 전환합니다(다시 시작 필요). 이 옵션은 C# 개발 키트가 설치된 경우 적용되지 않습니다.", + "configuration.omnisharp.dotnetPath": "기본 시스템 디렉터리 대신 사용할 dotnet 설치 디렉터리의 경로를 지정합니다. 이는 OmniSharp 서버 자체를 호스트하는 데 사용할 dotnet 설치에만 영향을 줍니다. 예: \"/home/username/mycustomdotnetdirectory\".", "configuration.omnisharp.enableAsyncCompletion": "(실험적) 완성 편집을 비동기적으로 확인할 수 있도록 합니다. 이렇게 하면 완성 항목을 삽입한 후 약간의 지연이 발생하지만 완성 목록, 특히 재정의 및 부분 메서드 완성 목록을 표시하는 시간이 단축될 수 있습니다. 이 기능을 사용하는 경우 대부분의 완성 항목은 눈에 띄는 영향을 받지 않지만 삽입이 완료되기 전, 재정의 또는 부분 메서드 완성을 삽입한 직후에 입력하면 예기치 않은 결과가 발생할 수 있습니다.", "configuration.omnisharp.enableDecompilationSupport": "메타데이터를 보는 대신 외부 참조를 디컴파일할 수 있도록 합니다.", "configuration.omnisharp.enableEditorConfigSupport": ".editorconfig에서 코드 스타일, 명명 규칙 및 분석기 설정을 읽을 수 있도록 합니다.", diff --git a/package.nls.pl.json b/package.nls.pl.json index 146784d5bb..d6b68dac66 100644 --- a/package.nls.pl.json +++ b/package.nls.pl.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "Pokaż wskazówki dla indeksatorów", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "Pokaż wskazówki dla typów parametrów funkcji lambda", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "Wyświetl wskazówki w tekście dla typów", + "configuration.dotnet.autoInsert.enableAutoInsert": "Włącz automatyczne wstawianie komentarzy do dokumentacji.", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "Uruchom analizę kodu w tle dla: (Wcześniej „omnisharp.enableRoslynAnalyzers”)", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "Całe rozwiązanie", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "Brak", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Wykonaj automatyczne uzupełnianie nazw obiektów dla elementów członkowskich, które zostały ostatnio wybrane.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatycznie pokaż listę uzupełniania na listach argumentów", "configuration.dotnet.defaultSolution.description": "Ścieżka domyślnego rozwiązania, która ma zostać otwarta w obszarze roboczym, lub ustawiona na wartość „wyłącz”, aby je pominąć. (Poprzednio „omnisharp.defaultLaunchSolution”)", - "configuration.dotnet.dotnetPath": "Określa ścieżkę do katalogu instalacyjnego dotnet, który ma być używany zamiast domyślnego katalogu systemowego. Ma to wpływ tylko na instalację dotnet używaną do hostowania samego serwera językowego. Przykład: „/home/username/mycustomdotnetdirectory”.", "configuration.dotnet.enableXamlTools": "Włącza narzędzia XAML podczas korzystania z zestawu deweloperskiego języka C#", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Wyróżnij powiązane składniki JSON pod kursorem.", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "Wyróżnij powiązane składniki wyrażenia regularnego pod kursorem.", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "Określa, czy powiadomienia powinny być wyświetlane, jeśli element OmniSharp napotka ostrzeżenia lub błędy podczas ładowania projektu. Pamiętaj, że te ostrzeżenia/błędy są zawsze emitowane do dziennika OmniSharp", "configuration.omnisharp.dotNetCliPaths": "Ścieżki do lokalnego pobierania interfejsu wiersza polecenia platformy .NET do użycia na potrzeby uruchamiania dowolnego kodu użytkownika.", "configuration.omnisharp.dotnet.server.useOmnisharp": "Przełącza do używania serwera Omnisharp na potrzeby funkcji językowych, gdy ta opcja jest włączona (wymaga ponownego uruchomienia). Ta opcja nie będzie honorowana przy zainstalowanym zestawie Dev Kit języka C#.", + "configuration.omnisharp.dotnetPath": "Określa ścieżkę do katalogu instalacyjnego dotnet, który ma być używany zamiast domyślnego katalogu systemowego. Ma to wpływ tylko na instalację platformy dotnet używaną do hostowania samego serwera OmniSharp. Przykład: „/home/username/mycustomdotnetdirectory”.", "configuration.omnisharp.enableAsyncCompletion": "(EKSPERYMENTALNE) Włącza obsługę w zakresie asynchronicznego rozwiązywania problemów z ukończeniem edytowania. Może to przyspieszyć wyświetlanie listy uzupełniania, w szczególności list przesłonięć i częściowej listy uzupełniania metod, kosztem nieznacznych opóźnień po wstawieniu elementu uzupełniania. Większość elementów uzupełniania nie będzie mieć widocznego wpływu na tę funkcję, ale wpisanie tekstu bezpośrednio po wstawieniu przesłonięcia lub częściowego ukończenia metody przed ukończeniem wstawiania może dawać nieprzewidywalne wyniki.", "configuration.omnisharp.enableDecompilationSupport": "Umożliwia obsługę dekompilowania odwołań zewnętrznych zamiast wyświetlania metadanych.", "configuration.omnisharp.enableEditorConfigSupport": "Włącza obsługę odczytywania stylu kodu, konwencji nazewnictwa i ustawień analizatora z pliku .editorconfig.", diff --git a/package.nls.pt-br.json b/package.nls.pt-br.json index 6102ddb068..f9bd14295f 100644 --- a/package.nls.pt-br.json +++ b/package.nls.pt-br.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "Mostrar dicas para indexadores", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "Mostrar as dicas para os tipos de parâmetro lambda", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "Exibir as dicas embutidas de tipo", + "configuration.dotnet.autoInsert.enableAutoInsert": "Habilitar a inserção automática de comentários de documentação.", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "Execute a análise de código em segundo plano para: (Anteriormente `omnisharp.enableRoslynAnalyzers`)", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "Solução inteira", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "Nenhum", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Execute a conclusão automática do nome do objeto para os membros que você selecionou recentemente.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Mostrar automaticamente a lista de conclusão nas listas de argumentos", "configuration.dotnet.defaultSolution.description": "O caminho da solução padrão a ser aberta no workspace ou definido como 'desabilitado' para ignorá-la. (Anteriormente `omnisharp.defaultLaunchSolution`)", - "configuration.dotnet.dotnetPath": "Especifica o caminho para um diretório de instalação dotnet a ser usado em vez do sistema padrão. Isso influencia apenas a instalação do dotnet a ser usada para hospedar o próprio servidor de idiomas. Exemplo: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Habilita ferramentas XAML ao usar o Kit de Desenvolvimento em C#", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Destaque os componentes JSON relacionados sob o cursor.", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "Destaque os componentes de expressão regular relacionados sob o cursor.", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "Especifica se as notificações devem ser mostradas se o OmniSharp encontrar avisos ou erros ao carregar um projeto. Observe que esses avisos/erros são sempre emitidos para o log do OmniSharp", "configuration.omnisharp.dotNetCliPaths": "Caminhos para um download local da CLI do .NET a ser usado para executar qualquer código de usuário.", "configuration.omnisharp.dotnet.server.useOmnisharp": "Alterna para usar o servidor Omnisharp para recursos de idioma quando habilitado (requer reinicialização). Essa opção não será respeitada com o Kit de Desenvolvimento em C# instalado.", + "configuration.omnisharp.dotnetPath": "Especifica o caminho para um diretório de instalação do dotnet a ser usado em vez do padrão do sistema. Isso só influencia a instalação do dotnet a ser usada para hospedar o próprio servidor OmniSharp. Exemplo: \"/home/username/mycustomdotnetdirectory\".", "configuration.omnisharp.enableAsyncCompletion": "(EXPERIMENTAL) Habilita o suporte para resolver as edições de conclusão de forma assíncrona. Isso pode acelerar o tempo de atividade para mostrar a lista de conclusão, especialmente as listas de substituição e de conclusão de métodos parciais, ao custo de pequenos atrasos após a inserção de um item de conclusão. A maioria dos itens de conclusão não terá impacto perceptível com esse recurso, mas digitar imediatamente após a inserção de uma substituição ou conclusão de método parcial, antes que a inserção seja concluída, pode ter resultados imprevisíveis.", "configuration.omnisharp.enableDecompilationSupport": "Habilita o suporte para descompilar as referências externas em vez de exibir metadados.", "configuration.omnisharp.enableEditorConfigSupport": "Habilita o suporte para ler o estilo de código, a convenção de nomenclatura e as configurações do analisador do .editorconfig.", diff --git a/package.nls.ru.json b/package.nls.ru.json index c3dbe07315..b71b9c5e30 100644 --- a/package.nls.ru.json +++ b/package.nls.ru.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "Отображать подсказки для индексаторов", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "Отображать подсказки для типов лямбда-параметров", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "Отображать подсказки для встроенных типов", + "configuration.dotnet.autoInsert.enableAutoInsert": "Включить автоматическую вставку комментариев к документации.", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "Выполнить анализ кода в фоновом режиме для: (ранее — \"omnisharp.enableRoslynAnalyzers\")", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "Все решение", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "Нет", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Выполните автоматическое завершение имен объектов для выбранных элементов.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Автоматически показывать список завершения в списках аргументов", "configuration.dotnet.defaultSolution.description": "Путь к решению по умолчанию, которое будет открыто в рабочей области. Или задайте значение \"Отключить\", чтобы пропустить его. (Ранее — \"omnisharp.defaultLaunchSolution\")", - "configuration.dotnet.dotnetPath": "Указывает путь к каталогу установки dotnet для использования вместо стандартного системного каталога. Это влияет только на установку dotnet, используемую для размещения самого языкового сервера. Пример: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Включает инструменты XAML при использовании комплекта разработки C# Dev Kit.", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "Выделить связанные компоненты JSON под курсором.", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "Выделение связанных компонентов регулярных выражений под курсором.", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "Указывает, должны ли отображаться уведомления, если OmniSharp обнаруживает предупреждения или ошибки при загрузке проекта. Обратите внимание, что эти предупреждения или ошибки всегда отображаются в журнале OmniSharp", "configuration.omnisharp.dotNetCliPaths": "Пути к локальному скачиванию CLI .NET, используемому для выполнения любого пользовательского кода.", "configuration.omnisharp.dotnet.server.useOmnisharp": "Переключение на использование сервера Omnisharp для языковых функций при включении (требуется перезапуск). Этот параметр не будет учитываться при установке комплекта разработки C#.", + "configuration.omnisharp.dotnetPath": "Указывает путь к каталогу установки dotnet для использования вместо стандартного системного каталога. Это влияет только на установку dotnet, используемую для размещения самого сервера OmniSharp. Пример: \"/home/username/mycustomdotnetdirectory\".", "configuration.omnisharp.enableAsyncCompletion": "(ЭКСПЕРИМЕНТАЛЬНАЯ ФУНКЦИЯ) Включает поддержку асинхронного разрешения правок завершения. Это может ускорить отображение списка завершения, особенно списков завершения переопределения и частичного метода, ценой небольших задержек после вставки элемента завершения. Большинство элементов завершения не оказывают заметного влияния на эту функцию, но если выполнить ввод сразу после вставки завершения переопределения или частичного метода, не дождавшись окончания вставки, это может привести к непредсказуемым результатам.", "configuration.omnisharp.enableDecompilationSupport": "Включает поддержку декомпиляции внешних ссылок вместо просмотра метаданных.", "configuration.omnisharp.enableEditorConfigSupport": "Включает поддержку чтения стиля кода, соглашения об именовании и параметров анализатора из EDITORCONFIG.", diff --git a/package.nls.tr.json b/package.nls.tr.json index 6bf5344dc1..d017c15bc8 100644 --- a/package.nls.tr.json +++ b/package.nls.tr.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "Dizin oluşturucular için ipuçlarını göster", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "Lambda parametre türleri için ipuçlarını göster", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "Satır içi tür ipuçlarını göster", + "configuration.dotnet.autoInsert.enableAutoInsert": "Belge açıklamalarının otomatik olarak eklenmesini etkinleştirin.", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "Şunun için arka plan kodu analizini çalıştırın: (Daha önce `omnisharp.enableRoslynAnalyzers`)", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "Tüm çözüm", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "Yok", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "Yakın zamanda seçtiğiniz üyeler için otomatik nesne adı tamamlama gerçekleştirin.", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Bağımsız değişken listelerinde tamamlama listesini otomatik olarak göster", "configuration.dotnet.defaultSolution.description": "Varsayılan çözümün yolu, çalışma alanında açılacak veya atlamak için 'devre dışı' olarak ayarlanacak. (Daha önce 'omnisharp.defaultLaunchSolution')", - "configuration.dotnet.dotnetPath": "Varsayılan sistem dizini yerine kullanılacak bir dotnet kurulum dizininin yolunu belirtir. Bu, yalnızca dil sunucusunun kendisini barındırmak için kullanılacak dotnet kurulumunu etkiler. Örnek: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "C# Geliştirme Setini kullanırken XAML araçlarını etkinleştirir", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "İmlecin altındaki ilgili JSON bileşenlerini vurgula.", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "İmleç altındaki ilgili normal ifade bileşenlerini vurgula.", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "OmniSharp bir proje yüklerken uyarılarla veya hatalarla karşılaştığında bildirimlerin gösterilip gösterilmeyeceğini belirtir. Bu uyarıların/hataların her zaman OmniSharp günlüğüne yayımlanacağını unutmayın", "configuration.omnisharp.dotNetCliPaths": "Herhangi bir kullanıcı kodunu çalıştırmak için kullanılacak .NET CLI'nin yerel bir indirmesine giden yollar.", "configuration.omnisharp.dotnet.server.useOmnisharp": "Etkinleştirildiğinde dil özellikleri için Omnisharp sunucusunu kullanmaya geçer (yeniden başlatma gerekir). Bu seçenek C# Geliştirme Paketi yüklü olarak sunulmaz.", + "configuration.omnisharp.dotnetPath": "Varsayılan sistem dizini yerine kullanılacak bir dotnet kurulum dizininin yolunu belirtir. Bu, yalnızca OmniSharp sunucusunun kendisini barındırmak için kullanılacak dotnet kurulumunu etkiler. Örnek: \"/home/username/mycustomdotnetdirectory\".", "configuration.omnisharp.enableAsyncCompletion": "(DENEYSEL) Tamamlama düzenlemelerini zaman uyumsuz olarak çözümleme desteğini etkinleştirir. Bu, bir tamamlama öğesi eklendikten sonra küçük gecikmeler pahasına tamamlama listesini, özellikle de geçersiz kılma ve kısmi yöntem tamamlama listelerini gösterme süresini hızlandırabilir. Çoğu tamamlama öğesinin bu özellik üzerinde belirgin bir etkisi olmayacaktır, ancak bir geçersiz kılma veya kısmi yöntem tamamlama eklendikten hemen sonra, ekleme işlemi tamamlanmadan önce yazmak öngörülemeyen sonuçlara yol açabilir.", "configuration.omnisharp.enableDecompilationSupport": "Meta verileri görüntülemek yerine harici referansların derlemesini açma desteğini etkinleştirir.", "configuration.omnisharp.enableEditorConfigSupport": "Kod stilini, adlandırma kurallarını ve analizör ayarlarını .editorconfig dosyasından okuma desteğini etkinleştirir.", diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 2d57d8f623..98d5e1bb79 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "显示索引器的提示", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "显示 lambda 参数类型的提示", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "显示内联类型提示", + "configuration.dotnet.autoInsert.enableAutoInsert": "启用文档注释的自动插入。", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "运行以下项的后台代码分析: (之前为 \"omnisharp.enableRoslynAnalyzers\")", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "整个解决方案", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "无", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "对最近选择的成员执行自动对象名称完成。", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "自动显示参数列表中的补全列表", "configuration.dotnet.defaultSolution.description": "要在工作区中打开的默认解决方案的路径,或者设置为“禁用”以跳过它。(之前为 \"omnisharp.defaultLaunchSolution\")", - "configuration.dotnet.dotnetPath": "指定要使用的 dotnet 安装目录的路径,而不是默认的系统目录。这仅影响用于承载语言服务器本身的 dotnet 安装。示例: \"/home/username/mycustomdotnetdirectory\"。", "configuration.dotnet.enableXamlTools": "使用 C# 开发工具包时启用 XAML 工具", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "突出显示光标下的相关 JSON 组件。", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "突出显示光标下的相关正则表达式组件。", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "指定如果 OmniSharp 在加载项目时遇到警告或错误,是否应显示通知。请注意,这些警告/错误始终会发送到 OmniSharp 日志", "configuration.omnisharp.dotNetCliPaths": "用于运行任何用户代码的 .NET CLI 的本地下载路径。", "configuration.omnisharp.dotnet.server.useOmnisharp": "启用后切换为使用 Omnisharp 服务器实现语言功能(需要重启)。安装 C# 开发工具包后,将不支持此选项。", + "configuration.omnisharp.dotnetPath": "指定要使用的 dotnet 安装目录的路径,而不是默认的系统目录。这仅影响用于承载 OmniSharp 服务器本身的 dotnet 安装。示例: \"/home/username/mycustomdotnetdirectory\"。", "configuration.omnisharp.enableAsyncCompletion": "(实验性)启用对异步解决完成编辑的支持。这可以加快显示完成列表的时间,特别是替代和部分方法完成列表,但代价是插入完成项后会有轻微的延迟。大多数完成项都不会对该功能产生明显的影响,但在插入替代或部分方法完成之后,且在插入完成之前立即输入,可能会产生不可预测的结果。", "configuration.omnisharp.enableDecompilationSupport": "启用对反编译外部引用而不是查看元数据的支持。", "configuration.omnisharp.enableEditorConfigSupport": "启用从 .editorconfig 读取代码样式、命名约定和分析器设置的支持。", diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index f0bc82c502..c6739ca2ba 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -28,6 +28,7 @@ "configuration.csharp.inlayHints.enableInlayHintsForIndexerParameters": "顯示索引子的提示", "configuration.csharp.inlayHints.enableInlayHintsForLambdaParameterTypes": "顯示 Lambda 參數類型的提示", "configuration.csharp.inlayHints.enableInlayHintsForTypes": "顯示內嵌類型提示", + "configuration.dotnet.autoInsert.enableAutoInsert": "啟用自動插入檔批注。", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope": "執行背景程式碼分析: (先前為 `omnisharp.enableRoslynAnalyzers`)", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.fullSolution": "整個解決方案", "configuration.dotnet.backgroundAnalysis.analyzerDiagnosticsScope.none": "無", @@ -43,7 +44,6 @@ "configuration.dotnet.completion.showNameCompletionSuggestions": "為您最近選取的成員執行自動物件名稱完成。", "configuration.dotnet.completion.triggerCompletionInArgumentLists": "自動在引數清單中顯示自動完成清單", "configuration.dotnet.defaultSolution.description": "要在工作區中開啟的預設解決方案路徑,或設為 [停用] 以略過它。(先前為 `omnisharp.defaultLaunchSolution`)", - "configuration.dotnet.dotnetPath": "指定要使用的 dotnet 安裝目錄路徑,而非系統預設的路徑。這只會影響用來裝載語言伺服器本身的 dotnet 安裝。範例: \"/home/username/mycustomdotnetdirectory”。", "configuration.dotnet.enableXamlTools": "使用 C# 開發套件時啟用 XAML 工具", "configuration.dotnet.highlighting.highlightRelatedJsonComponents": "反白資料指標下的相關 JSON 元件。", "configuration.dotnet.highlighting.highlightRelatedRegexComponents": "反白資料指標下的相關規則運算式元件。", @@ -94,6 +94,7 @@ "configuration.omnisharp.disableMSBuildDiagnosticWarning": "指定如果 OmniSharp 在載入專案時遇到警告或錯誤,是否應該顯示通知。請注意,這些警告/錯誤一律會發出至 OmniSharp 記錄", "configuration.omnisharp.dotNetCliPaths": "用於執行任何使用者程式碼的 .NET CLI 的本機下載路徑。", "configuration.omnisharp.dotnet.server.useOmnisharp": "啟用時,切換為使用 Omnisharp 伺服器的語言功能 (需要重新啟動)。安裝 C# 開發套件時,將不會使用此選項。", + "configuration.omnisharp.dotnetPath": "指定要使用的 dotnet 安裝目錄路徑,而非系統預設的路徑。這只會影響用來裝載 OmniSharp 伺服器本身的 dotnet 安裝。範例: \"/home/username/mycustomdotnetdirectory”。", "configuration.omnisharp.enableAsyncCompletion": "(實驗性) 啟用解決非同步完成編輯的支援。這可加速顯示完成清單的時間,特別是覆寫和部分方法完成清單,但插入完成項目後會有稍微延遲。大部分的完成項目對此功能沒有明顯的影響,但在插入取代或部分方法完成之後,於插入完成之前立即輸入,可能會產生無法預期的結果。", "configuration.omnisharp.enableDecompilationSupport": "啟用針對外部參考的反向組譯支援,而不是檢視中繼資料。", "configuration.omnisharp.enableEditorConfigSupport": "啟用從 .editorconfig 讀取程式碼樣式、命名慣例及分析器設定的支援。", diff --git a/src/coreclrDebug/activate.ts b/src/coreclrDebug/activate.ts index cfc07d74af..b45034f4f8 100644 --- a/src/coreclrDebug/activate.ts +++ b/src/coreclrDebug/activate.ts @@ -6,7 +6,7 @@ import * as path from 'path'; import * as vscode from 'vscode'; import * as common from '../common'; -import { CoreClrDebugUtil, getTargetArchitecture } from './util'; +import { CoreClrDebugUtil, getTargetArchitecture, MINIMUM_SUPPORT_MACOS_DISPLAY_NAME } from './util'; import { PlatformInformation } from '../shared/platform'; import { DebuggerPrerequisiteWarning, @@ -142,7 +142,8 @@ async function checkIsValidArchitecture( eventStream.post( new DebuggerPrerequisiteFailure( vscode.l10n.t( - '[ERROR] The debugger cannot be installed. The debugger requires macOS 12 (Monterey) or newer.' + '[ERROR] The debugger cannot be installed. The debugger requires {0} or newer.', + MINIMUM_SUPPORT_MACOS_DISPLAY_NAME ) ) ); diff --git a/src/coreclrDebug/util.ts b/src/coreclrDebug/util.ts index 07f43219c6..9135e8ea32 100644 --- a/src/coreclrDebug/util.ts +++ b/src/coreclrDebug/util.ts @@ -14,6 +14,11 @@ import { DotnetInfo } from '../shared/utils/dotnetInfo'; const MINIMUM_SUPPORTED_DOTNET_CLI = '1.0.0'; +// .NET 8 requires macOS 12+, however the build machines are on macOS 13, which is Darwin 22.0+ +// Darwin version chart: https://en.wikipedia.org/wiki/Darwin_(operating_system) +const MINIMUM_SUPPORT_MACOS_VERSION = '22.0.0'; +export const MINIMUM_SUPPORT_MACOS_DISPLAY_NAME = 'macOS 13 (Ventura)'; + export class CoreClrDebugUtil { private _extensionDir = ''; private _debugAdapterDir = ''; @@ -83,9 +88,7 @@ export class CoreClrDebugUtil { } public static isMacOSSupported(): boolean { - // .NET 8 requires macOS 12 (Monterey), which is Darwin 21.0+ - // Darwin version chart: https://en.wikipedia.org/wiki/Darwin_(operating_system) - return semver.gte(os.release(), '21.0.0'); + return semver.gte(os.release(), MINIMUM_SUPPORT_MACOS_VERSION); } public static existsSync(path: string): boolean { diff --git a/src/lsptoolshost/copilot.ts b/src/lsptoolshost/copilot.ts index a9c1780f8b..4915606094 100644 --- a/src/lsptoolshost/copilot.ts +++ b/src/lsptoolshost/copilot.ts @@ -51,12 +51,22 @@ export function registerCopilotExtension(languageServer: RoslynLanguageServer, c }; relatedAPI.registerRelatedFilesProvider(id, async (uri, _, token) => { - const buildResult = (reports: CopilotRelatedDocumentsReport[], builder?: vscode.Uri[]) => { + const buildResult = ( + activeDocumentUri: vscode.Uri, + reports: CopilotRelatedDocumentsReport[], + builder: vscode.Uri[] + ) => { if (reports) { for (const report of reports) { if (report._vs_file_paths) { for (const filePath of report._vs_file_paths) { - builder?.push(vscode.Uri.file(filePath)); + // The Roslyn related document service would return the active document as related file to itself + // if the code contains reference to the types defined in the same document. Skip it so the active file + // won't be used as additonal context. + const relatedUri = vscode.Uri.file(filePath); + if (relatedUri.fsPath !== activeDocumentUri.fsPath) { + builder.push(relatedUri); + } } } } @@ -75,7 +85,7 @@ export function registerCopilotExtension(languageServer: RoslynLanguageServer, c character: 0, }, }, - async (r) => buildResult(r, relatedFiles), + async (r) => buildResult(uri, r, relatedFiles), token ); } catch (e) { diff --git a/src/lsptoolshost/dotnetRuntimeExtensionResolver.ts b/src/lsptoolshost/dotnetRuntimeExtensionResolver.ts index 3ef4e536f6..174e72bc5e 100644 --- a/src/lsptoolshost/dotnetRuntimeExtensionResolver.ts +++ b/src/lsptoolshost/dotnetRuntimeExtensionResolver.ts @@ -8,7 +8,7 @@ import * as vscode from 'vscode'; import { HostExecutableInformation } from '../shared/constants/hostExecutableInformation'; import { IHostExecutableResolver } from '../shared/constants/IHostExecutableResolver'; import { PlatformInformation } from '../shared/platform'; -import { commonOptions, languageServerOptions } from '../shared/options'; +import { languageServerOptions } from '../shared/options'; import { existsSync } from 'fs'; import { CSharpExtensionId } from '../constants/csharpExtensionId'; import { readFile } from 'fs/promises'; @@ -36,40 +36,34 @@ export class DotnetRuntimeExtensionResolver implements IHostExecutableResolver { private hostInfo: HostExecutableInformation | undefined; async getHostExecutableInfo(): Promise { - let dotnetExecutablePath: string; - if (commonOptions.dotnetPath) { - const dotnetExecutableName = this.getDotnetExecutableName(); - dotnetExecutablePath = path.join(commonOptions.dotnetPath, dotnetExecutableName); - } else { - if (this.hostInfo) { - return this.hostInfo; - } + if (this.hostInfo) { + return this.hostInfo; + } - this.channel.appendLine(`Locating .NET runtime version ${DotNetRuntimeVersion}`); - const extensionArchitecture = (await this.getArchitectureFromTargetPlatform()) ?? process.arch; - const findPathRequest: IDotnetFindPathContext = { - acquireContext: { - version: DotNetRuntimeVersion, - requestingExtensionId: CSharpExtensionId, - architecture: extensionArchitecture, - mode: 'runtime', - }, - versionSpecRequirement: 'greater_than_or_equal', - }; - let acquireResult = await vscode.commands.executeCommand( - 'dotnet.findPath', - findPathRequest + this.channel.appendLine(`Locating .NET runtime version ${DotNetRuntimeVersion}`); + const extensionArchitecture = (await this.getArchitectureFromTargetPlatform()) ?? process.arch; + const findPathRequest: IDotnetFindPathContext = { + acquireContext: { + version: DotNetRuntimeVersion, + requestingExtensionId: CSharpExtensionId, + architecture: extensionArchitecture, + mode: 'runtime', + }, + versionSpecRequirement: 'greater_than_or_equal', + }; + let acquireResult = await vscode.commands.executeCommand( + 'dotnet.findPath', + findPathRequest + ); + if (acquireResult === undefined) { + this.channel.appendLine( + `Did not find .NET ${DotNetRuntimeVersion} on path, falling back to acquire runtime via ms-dotnettools.vscode-dotnet-runtime` ); - if (acquireResult === undefined) { - this.channel.appendLine( - `Did not find .NET ${DotNetRuntimeVersion} on path, falling back to acquire runtime via ms-dotnettools.vscode-dotnet-runtime` - ); - acquireResult = await this.acquireDotNetProcessDependencies(); - } - - dotnetExecutablePath = acquireResult.dotnetPath; + acquireResult = await this.acquireDotNetProcessDependencies(); } + const dotnetExecutablePath = acquireResult.dotnetPath; + const hostInfo = { version: '' /* We don't need to know the version - we've already downloaded the correct one */, path: dotnetExecutablePath, @@ -186,8 +180,4 @@ export class DotnetRuntimeExtensionResolver implements IHostExecutableResolver { throw new Error(`Unknown extension target platform: ${targetPlatform}`); } } - - private getDotnetExecutableName(): string { - return this.platformInfo.isWindows() ? 'dotnet.exe' : 'dotnet'; - } } diff --git a/src/lsptoolshost/roslynLanguageServer.ts b/src/lsptoolshost/roslynLanguageServer.ts index 3b43487dc1..9ab84c1b22 100644 --- a/src/lsptoolshost/roslynLanguageServer.ts +++ b/src/lsptoolshost/roslynLanguageServer.ts @@ -78,6 +78,7 @@ import { import { registerSourceGeneratedFilesContentProvider } from './sourceGeneratedFilesContentProvider'; import { registerMiscellaneousFileNotifier } from './miscellaneousFileNotifier'; import { TelemetryEventNames } from '../shared/telemetryEventNames'; +import { RazorDynamicFileChangedParams } from '../razor/src/dynamicFile/dynamicFileUpdatedParams'; let _channel: vscode.LogOutputChannel; let _traceChannel: vscode.OutputChannel; @@ -789,6 +790,19 @@ export class RoslynLanguageServer { async (notification) => vscode.commands.executeCommand(DynamicFileInfoHandler.removeDynamicFileInfoCommand, notification) ); + vscode.commands.registerCommand( + DynamicFileInfoHandler.dynamicFileUpdatedCommand, + async (notification: RazorDynamicFileChangedParams) => { + if (this.isRunning()) { + await this.sendNotification( + 'razor/dynamicFileInfoChanged', + notification + ); + } else { + _channel.warn('Tried to send razor/dynamicFileInfoChanged while server is not running'); + } + } + ); } // eslint-disable-next-line @typescript-eslint/promise-function-async diff --git a/src/main.ts b/src/main.ts index 953aba6973..2f2dd84fdc 100644 --- a/src/main.ts +++ b/src/main.ts @@ -47,6 +47,8 @@ import { TelemetryEventNames } from './shared/telemetryEventNames'; export async function activate( context: vscode.ExtensionContext ): Promise { + const csharpChannel = vscode.window.createOutputChannel('C#', { log: true }); + await MigrateOptions(vscode); const optionStream = createOptionStream(vscode); @@ -67,7 +69,6 @@ export async function activate( // ensure it gets properly disposed. Upon disposal the events will be flushed. context.subscriptions.push(reporter); - const csharpChannel = vscode.window.createOutputChannel('C#', { log: true }); const csharpchannelObserver = new CsharpChannelObserver(csharpChannel); const csharpLogObserver = new CsharpLoggerObserver(csharpChannel); eventStream.subscribe(csharpchannelObserver.post); diff --git a/src/omnisharp/dotnetResolver.ts b/src/omnisharp/dotnetResolver.ts index 5d1c2ab4b7..741f42254e 100644 --- a/src/omnisharp/dotnetResolver.ts +++ b/src/omnisharp/dotnetResolver.ts @@ -10,7 +10,7 @@ import { promisify } from 'util'; import { HostExecutableInformation } from '../shared/constants/hostExecutableInformation'; import { IHostExecutableResolver } from '../shared/constants/IHostExecutableResolver'; import { PlatformInformation } from '../shared/platform'; -import { commonOptions } from '../shared/options'; +import { omnisharpOptions } from '../shared/options'; export class DotnetResolver implements IHostExecutableResolver { private readonly minimumDotnetVersion = '6.0.100'; @@ -21,7 +21,7 @@ export class DotnetResolver implements IHostExecutableResolver { const dotnet = this.platformInfo.isWindows() ? 'dotnet.exe' : 'dotnet'; const env = { ...process.env }; - const dotnetPathOption = commonOptions.dotnetPath; + const dotnetPathOption = omnisharpOptions.dotnetPath; if (dotnetPathOption.length > 0) { env['PATH'] = dotnetPathOption + path.delimiter + env['PATH']; } diff --git a/src/razor/src/csharp/csharpProjectedDocument.ts b/src/razor/src/csharp/csharpProjectedDocument.ts index d74c0bb255..e31ad27e60 100644 --- a/src/razor/src/csharp/csharpProjectedDocument.ts +++ b/src/razor/src/csharp/csharpProjectedDocument.ts @@ -19,6 +19,10 @@ export class CSharpProjectedDocument implements IProjectedDocument { private resolveProvisionalEditAt: number | undefined; private ProvisionalDotPosition: Position | undefined; private hostDocumentVersion: number | null = null; + private updates: CSharpDocumentUpdate[] | null = null; + private _checksum: string = ''; + private _checksumAlgorithm: number = 1; // Default to Sha1 + private _encodingCodePage: number | null = null; public constructor(public readonly uri: vscode.Uri) { this.path = getUriPath(uri); @@ -36,22 +40,78 @@ export class CSharpProjectedDocument implements IProjectedDocument { this.setContent(''); } - public update(edits: ServerTextChange[], hostDocumentVersion: number) { - this.removeProvisionalDot(); + public get checksum(): string { + return this._checksum; + } - this.hostDocumentVersion = hostDocumentVersion; + public get checksumAlgorithm(): number { + return this._checksumAlgorithm; + } - if (edits.length === 0) { - return; + public get encodingCodePage(): number | null { + return this._encodingCodePage; + } + + public update( + hostDocumentIsOpen: boolean, + edits: ServerTextChange[], + hostDocumentVersion: number, + checksum: string, + checksumAlgorithm: number, + encodingCodePage: number | null + ) { + if (hostDocumentIsOpen) { + this.removeProvisionalDot(); + + // Apply any stored edits if needed + if (this.updates) { + for (const update of this.updates) { + this.updateContent(update.changes); + } + + this.updates = null; + } + + this.updateContent(edits); + this._checksum = checksum; + this._checksumAlgorithm = checksumAlgorithm; + this._encodingCodePage = encodingCodePage; + } else { + const update = new CSharpDocumentUpdate(edits, checksum, checksumAlgorithm, encodingCodePage); + + if (this.updates) { + this.updates = this.updates.concat(update); + } else { + this.updates = [update]; + } } - let content = this.content; - for (const edit of edits.reverse()) { - // TODO: Use a better data structure to represent the content, string concatenation is slow. - content = this.getEditedContent(edit.newText, edit.span.start, edit.span.start + edit.span.length, content); + this.hostDocumentVersion = hostDocumentVersion; + } + + public applyEdits(): ApplyEditsResponse { + const updates = this.updates; + this.updates = null; + + const originalChecksum = this._checksum; + const originalChecksumAlgorithm = this._checksumAlgorithm; + const originalEncodingCodePage = this._encodingCodePage; + + if (updates) { + for (const update of updates) { + this.updateContent(update.changes); + this._checksum = update.checksum; + this._checksumAlgorithm = update.checksumAlgorithm; + this._encodingCodePage = update.encodingCodePage; + } } - this.setContent(content); + return { + edits: updates, + originalChecksum: originalChecksum, + originalChecksumAlgorithm: originalChecksumAlgorithm, + originalEncodingCodePage: originalEncodingCodePage, + }; } public getContent() { @@ -140,8 +200,8 @@ export class CSharpProjectedDocument implements IProjectedDocument { } private getEditedContent(newText: string, start: number, end: number, content: string) { - const before = content.substr(0, start); - const after = content.substr(end); + const before = content.substring(0, start); + const after = content.substring(end); content = `${before}${newText}${after}`; return content; @@ -150,4 +210,34 @@ export class CSharpProjectedDocument implements IProjectedDocument { private setContent(content: string) { this.content = content; } + + private updateContent(edits: ServerTextChange[]) { + if (edits.length === 0) { + return; + } + + let content = this.content; + for (const edit of edits.reverse()) { + // TODO: Use a better data structure to represent the content, string concatenation is slow. + content = this.getEditedContent(edit.newText, edit.span.start, edit.span.start + edit.span.length, content); + } + + this.setContent(content); + } +} + +export class CSharpDocumentUpdate { + constructor( + public readonly changes: ServerTextChange[], + public readonly checksum: string, + public readonly checksumAlgorithm: number, + public readonly encodingCodePage: number | null + ) {} +} + +export interface ApplyEditsResponse { + edits: CSharpDocumentUpdate[] | null; + originalChecksum: string; + originalChecksumAlgorithm: number; + originalEncodingCodePage: number | null; } diff --git a/src/razor/src/diagnostics/reportIssuePanel.ts b/src/razor/src/diagnostics/reportIssuePanel.ts index e839c0ee63..a0bb23d938 100644 --- a/src/razor/src/diagnostics/reportIssuePanel.ts +++ b/src/razor/src/diagnostics/reportIssuePanel.ts @@ -120,7 +120,7 @@ export class ReportIssuePanel { } let panelBodyContent = ''; - if (this.logger.logLevel <= vscode.LogLevel.Debug) { + if (this.logger.logLevel <= vscode.LogLevel.Debug && this.logger.logLevel != vscode.LogLevel.Off) { const startButtonLabel = vscode.l10n.t('Start'); const startButton = ``; const firstLine = vscode.l10n.t('Press {0}', startButton); diff --git a/src/razor/src/document/IRazorDocument.ts b/src/razor/src/document/IRazorDocument.ts index 95557df8f9..6fcd07a265 100644 --- a/src/razor/src/document/IRazorDocument.ts +++ b/src/razor/src/document/IRazorDocument.ts @@ -11,4 +11,5 @@ export interface IRazorDocument { readonly uri: vscode.Uri; readonly csharpDocument: IProjectedDocument; readonly htmlDocument: IProjectedDocument; + readonly isOpen: boolean; } diff --git a/src/razor/src/document/razorDocument.ts b/src/razor/src/document/razorDocument.ts new file mode 100644 index 0000000000..1c42dce6a6 --- /dev/null +++ b/src/razor/src/document/razorDocument.ts @@ -0,0 +1,32 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import { CSharpProjectedDocument } from '../csharp/csharpProjectedDocument'; +import { HtmlProjectedDocument } from '../html/htmlProjectedDocument'; +import { getUriPath } from '../uriPaths'; +import { IRazorDocument } from './IRazorDocument'; + +export class RazorDocument implements IRazorDocument { + public readonly path: string; + + constructor( + readonly uri: vscode.Uri, + readonly csharpDocument: CSharpProjectedDocument, + readonly htmlDocument: HtmlProjectedDocument + ) { + this.path = getUriPath(uri); + } + + public get isOpen(): boolean { + for (const textDocument of vscode.workspace.textDocuments) { + if (textDocument.uri.fsPath == this.uri.fsPath) { + return true; + } + } + + return false; + } +} diff --git a/src/razor/src/document/razorDocumentFactory.ts b/src/razor/src/document/razorDocumentFactory.ts index 18b8b919ff..1b3f2c5db7 100644 --- a/src/razor/src/document/razorDocumentFactory.ts +++ b/src/razor/src/document/razorDocumentFactory.ts @@ -11,18 +11,12 @@ import { HtmlProjectedDocumentContentProvider } from '../html/htmlProjectedDocum import { virtualCSharpSuffix, virtualHtmlSuffix } from '../razorConventions'; import { getUriPath } from '../uriPaths'; import { IRazorDocument } from './IRazorDocument'; +import { RazorDocument } from './razorDocument'; -export function createDocument(uri: vscode.Uri) { +export function createDocument(uri: vscode.Uri): IRazorDocument { const csharpDocument = createProjectedCSharpDocument(uri); const htmlDocument = createProjectedHtmlDocument(uri); - const path = getUriPath(uri); - - const document: IRazorDocument = { - uri, - path, - csharpDocument, - htmlDocument, - }; + const document = new RazorDocument(uri, csharpDocument, htmlDocument); return document; } diff --git a/src/razor/src/document/razorDocumentManager.ts b/src/razor/src/document/razorDocumentManager.ts index 066073f408..b90e303fd2 100644 --- a/src/razor/src/document/razorDocumentManager.ts +++ b/src/razor/src/document/razorDocumentManager.ts @@ -50,21 +50,12 @@ export class RazorDocumentManager implements IRazorDocumentManager { return Object.values(this.razorDocuments); } - public async getDocument(uri: vscode.Uri) { + public async getDocument(uri: vscode.Uri): Promise { const document = this._getDocument(uri); - - // VS Code closes virtual documents after some timeout if they are not open in the IDE. Since our generated C# and Html - // documents are never open in the IDE, we need to ensure that VS Code considers them open so that requests against them - // succeed. Without this, even a simple diagnostics request will fail in Roslyn if the user just opens a .razor document - // and leaves it open past the timeout. - if (this.razorDocumentGenerationInitialized) { - await this.ensureDocumentAndProjectedDocumentsOpen(document); - } - return document; } - public async getActiveDocument() { + public async getActiveDocument(): Promise { if (!vscode.window.activeTextEditor) { return null; } @@ -147,7 +138,7 @@ export class RazorDocumentManager implements IRazorDocumentManager { return vscode.Disposable.from(watcher, didCreateRegistration, didOpenRegistration, didCloseRegistration); } - private _getDocument(uri: vscode.Uri) { + private _getDocument(uri: vscode.Uri): IRazorDocument { const path = getUriPath(uri); let document = this.findDocument(path); @@ -159,7 +150,7 @@ export class RazorDocumentManager implements IRazorDocumentManager { document = this.addDocument(uri); } - return document; + return document!; } private async openDocument(uri: vscode.Uri) { @@ -182,10 +173,6 @@ export class RazorDocumentManager implements IRazorDocumentManager { await vscode.commands.executeCommand(razorInitializeCommand, pipeName); await this.serverClient.connectNamedPipe(pipeName); - for (const document of this.documents) { - await this.ensureDocumentAndProjectedDocumentsOpen(document); - } - this.onRazorInitializedEmitter.fire(); } } @@ -205,7 +192,7 @@ export class RazorDocumentManager implements IRazorDocumentManager { this.notifyDocumentChange(document, RazorDocumentChangeKind.closed); } - private addDocument(uri: vscode.Uri) { + private addDocument(uri: vscode.Uri): IRazorDocument { const path = getUriPath(uri); let document = this.findDocument(path); if (document) { @@ -261,10 +248,6 @@ export class RazorDocumentManager implements IRazorDocumentManager { ) { // We allow re-setting of the updated content from the same doc sync version in the case // of project or file import changes. - - // Make sure the document is open, because updating will cause a didChange event to fire. - await vscode.workspace.openTextDocument(document.csharpDocument.uri); - const csharpProjectedDocument = projectedDocument as CSharpProjectedDocument; // If the language server is telling us that the previous document was empty, then we should clear @@ -275,7 +258,14 @@ export class RazorDocumentManager implements IRazorDocumentManager { csharpProjectedDocument.clear(); } - csharpProjectedDocument.update(updateBufferRequest.changes, updateBufferRequest.hostDocumentVersion); + csharpProjectedDocument.update( + document.isOpen, + updateBufferRequest.changes, + updateBufferRequest.hostDocumentVersion, + updateBufferRequest.checksum, + updateBufferRequest.checksumAlgorithm, + updateBufferRequest.encodingCodePage + ); this.notifyDocumentChange(document, RazorDocumentChangeKind.csharpChanged); } else { @@ -342,22 +332,4 @@ export class RazorDocumentManager implements IRazorDocumentManager { this.onChangeEmitter.fire(args); } - - private async ensureDocumentAndProjectedDocumentsOpen(document: IRazorDocument) { - // vscode.workspace.openTextDocument may send a textDocument/didOpen - // request to the C# language server. We need to keep track of - // this to make sure we don't send a duplicate request later on. - const razorUri = vscode.Uri.file(document.path); - if (!this.isRazorDocumentOpenInCSharpWorkspace(razorUri)) { - this.didOpenRazorCSharpDocument(razorUri); - - // Need to tell the Razor server that the document is open, or it won't generate C# code - // for it, and our projected document will always be empty, until the user manually - // opens the razor file. - await vscode.workspace.openTextDocument(razorUri); - } - - await vscode.workspace.openTextDocument(document.csharpDocument.uri); - await vscode.workspace.openTextDocument(document.htmlDocument.uri); - } } diff --git a/src/razor/src/dynamicFile/dynamicFileInfoHandler.ts b/src/razor/src/dynamicFile/dynamicFileInfoHandler.ts index 9a91d13756..62300f0f5f 100644 --- a/src/razor/src/dynamicFile/dynamicFileInfoHandler.ts +++ b/src/razor/src/dynamicFile/dynamicFileInfoHandler.ts @@ -4,19 +4,24 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import { DocumentUri } from 'vscode-languageclient/node'; import { UriConverter } from '../../../lsptoolshost/uriConverter'; import { RazorDocumentManager } from '../document/razorDocumentManager'; import { RazorLogger } from '../razorLogger'; import { ProvideDynamicFileParams } from './provideDynamicFileParams'; -import { ProvideDynamicFileResponse } from './provideDynamicFileResponse'; +import { ProvideDynamicFileResponse, DynamicFileUpdate } from './provideDynamicFileResponse'; import { RemoveDynamicFileParams } from './removeDynamicFileParams'; +import { CSharpProjectedDocument } from '../csharp/csharpProjectedDocument'; +import { RazorDocumentChangeKind } from '../document/razorDocumentChangeKind'; +import { RazorDynamicFileChangedParams } from './dynamicFileUpdatedParams'; +import { TextDocumentIdentifier } from 'vscode-languageserver-protocol'; +import { ServerTextChange } from '../rpc/serverTextChange'; // Handles Razor generated doc communication between the Roslyn workspace and Razor. // didChange behavior for Razor generated docs is handled in the RazorDocumentManager. export class DynamicFileInfoHandler { public static readonly provideDynamicFileInfoCommand = 'razor.provideDynamicFileInfo'; public static readonly removeDynamicFileInfoCommand = 'razor.removeDynamicFileInfo'; + public static readonly dynamicFileUpdatedCommand = 'razor.dynamicFileUpdated'; constructor(private readonly documentManager: RazorDocumentManager, private readonly logger: RazorLogger) {} @@ -33,39 +38,92 @@ export class DynamicFileInfoHandler { await this.removeDynamicFileInfo(request); } ); + this.documentManager.onChange(async (e) => { + if (e.kind == RazorDocumentChangeKind.csharpChanged && !e.document.isOpen) { + const uriString = UriConverter.serialize(e.document.uri); + const identifier = TextDocumentIdentifier.create(uriString); + await vscode.commands.executeCommand( + DynamicFileInfoHandler.dynamicFileUpdatedCommand, + new RazorDynamicFileChangedParams(identifier) + ); + } + }); } // Given Razor document URIs, returns associated generated doc URIs private async provideDynamicFileInfo( request: ProvideDynamicFileParams ): Promise { - let virtualUri: DocumentUri | null = null; + this.documentManager.roslynActivated = true; + const vscodeUri = vscode.Uri.parse(request.razorDocument.uri, true); + + // Normally we start receiving dynamic info after Razor is initialized, but if the user had a .razor file open + // when they started VS Code, the order is the other way around. This no-ops if Razor is already initialized. + await this.documentManager.ensureRazorInitialized(); + + const razorDocument = await this.documentManager.getDocument(vscodeUri); try { - const vscodeUri = vscode.Uri.parse(request.razorDocument.uri, true); - const razorDocument = await this.documentManager.getDocument(vscodeUri); if (razorDocument === undefined) { this.logger.logWarning( `Could not find Razor document ${vscodeUri.fsPath}; adding null as a placeholder in URI array.` ); - } else { - // Retrieve generated doc URIs for each Razor URI we are given - const virtualCsharpUri = UriConverter.serialize(razorDocument.csharpDocument.uri); - virtualUri = virtualCsharpUri; + + return null; } - this.documentManager.roslynActivated = true; + const csharpDocument = razorDocument.csharpDocument as CSharpProjectedDocument; + if (request.fullText) { + // The server asked for a full replace so the newtext is the important + // thing here, the span doesn't matter. + const change: ServerTextChange = { + newText: razorDocument.csharpDocument.getContent(), + span: { + start: 0, + length: 0, + }, + }; + + const update = new DynamicFileUpdate([change]); + + return new ProvideDynamicFileResponse( + request.razorDocument, + [update], + csharpDocument.checksum, + csharpDocument.checksumAlgorithm, + csharpDocument.encodingCodePage + ); + } - // Normally we start receiving dynamic info after Razor is initialized, but if the user had a .razor file open - // when they started VS Code, the order is the other way around. This no-ops if Razor is already initialized. - await this.documentManager.ensureRazorInitialized(); + const virtualCsharpUri = UriConverter.serialize(razorDocument.csharpDocument.uri); + + if (this.documentManager.isRazorDocumentOpenInCSharpWorkspace(vscodeUri)) { + // Open documents have didOpen/didChange to update the csharp buffer. Razor + // does not send edits and instead lets vscode handle them. + return new ProvideDynamicFileResponse( + { uri: virtualCsharpUri }, + null, + csharpDocument.checksum, + csharpDocument.checksumAlgorithm, + csharpDocument.encodingCodePage + ); + } else { + // Closed documents provide edits since the last time they were requested since + // there is no open buffer in vscode corresponding to the csharp content. + const response = csharpDocument.applyEdits(); + const updates = response.edits?.map((e) => new DynamicFileUpdate(e.changes)) ?? null; + + return new ProvideDynamicFileResponse( + { uri: virtualCsharpUri }, + updates, + response.originalChecksum, + response.originalChecksumAlgorithm, + response.originalEncodingCodePage + ); + } } catch (error) { this.logger.logWarning(`${DynamicFileInfoHandler.provideDynamicFileInfoCommand} failed with ${error}`); } - if (virtualUri) { - return new ProvideDynamicFileResponse({ uri: virtualUri }); - } - return null; } diff --git a/src/razor/src/dynamicFile/dynamicFileUpdatedParams.ts b/src/razor/src/dynamicFile/dynamicFileUpdatedParams.ts new file mode 100644 index 0000000000..3a5f4c3972 --- /dev/null +++ b/src/razor/src/dynamicFile/dynamicFileUpdatedParams.ts @@ -0,0 +1,10 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { TextDocumentIdentifier } from 'vscode-languageserver-protocol'; + +export class RazorDynamicFileChangedParams { + constructor(public readonly razorDocument: TextDocumentIdentifier) {} +} diff --git a/src/razor/src/dynamicFile/provideDynamicFileParams.ts b/src/razor/src/dynamicFile/provideDynamicFileParams.ts index 58241b99bc..1993f45e54 100644 --- a/src/razor/src/dynamicFile/provideDynamicFileParams.ts +++ b/src/razor/src/dynamicFile/provideDynamicFileParams.ts @@ -7,5 +7,5 @@ import { TextDocumentIdentifier } from 'vscode-languageserver-protocol'; // matches https://github.com/dotnet/roslyn/blob/9e91ca6590450e66e0041ee3135bbf044ac0687a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/RazorDynamicFileInfoProvider.cs#L22 export class ProvideDynamicFileParams { - constructor(public readonly razorDocument: TextDocumentIdentifier) {} + constructor(public readonly razorDocument: TextDocumentIdentifier, public readonly fullText: boolean) {} } diff --git a/src/razor/src/dynamicFile/provideDynamicFileResponse.ts b/src/razor/src/dynamicFile/provideDynamicFileResponse.ts index 7be8d1f01a..d1ff807bc3 100644 --- a/src/razor/src/dynamicFile/provideDynamicFileResponse.ts +++ b/src/razor/src/dynamicFile/provideDynamicFileResponse.ts @@ -4,8 +4,19 @@ *--------------------------------------------------------------------------------------------*/ import { TextDocumentIdentifier } from 'vscode-languageclient/node'; +import { ServerTextChange } from '../rpc/serverTextChange'; // matches https://github.com/dotnet/roslyn/blob/9e91ca6590450e66e0041ee3135bbf044ac0687a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/RazorDynamicFileInfoProvider.cs#L28 export class ProvideDynamicFileResponse { - constructor(public readonly csharpDocument: TextDocumentIdentifier | null) {} + constructor( + public readonly csharpDocument: TextDocumentIdentifier | null, + public readonly updates: DynamicFileUpdate[] | null, + public readonly checksum: string, + public readonly checksumAlgorithm: number, + public readonly encodingCodePage: number | null + ) {} +} + +export class DynamicFileUpdate { + constructor(public readonly edits: ServerTextChange[]) {} } diff --git a/src/razor/src/razorLanguageServerOptionsResolver.ts b/src/razor/src/razorLanguageServerOptionsResolver.ts index 977741f420..2c7d50ad0f 100644 --- a/src/razor/src/razorLanguageServerOptionsResolver.ts +++ b/src/razor/src/razorLanguageServerOptionsResolver.ts @@ -22,7 +22,19 @@ export function resolveRazorLanguageServerOptions( const debugLanguageServer = serverConfig.get('debug'); const usingOmniSharp = !getCSharpDevKit() && vscodeApi.workspace.getConfiguration().get('dotnet.server.useOmnisharp'); - const forceRuntimeCodeGeneration = serverConfig.get('forceRuntimeCodeGeneration'); + + const hotReload = vscodeApi.workspace.getConfiguration('csharp.experimental.debug').get('hotReload'); + + let forceRuntimeCodeGeneration = serverConfig.get('forceRuntimeCodeGeneration'); + + if (forceRuntimeCodeGeneration === null && hotReload) { + logger.logMessage( + 'Hot Reload is enabled so treating "razor.languageServer.forceRuntimeCodeGeneration" as true. To override this set "razor.languageServer.forceRuntimeCodeGeneration" to true or false.' + ); + + forceRuntimeCodeGeneration = hotReload; + } + const useRoslynTokenizer = serverConfig.get('useRoslynTokenizer'); const suppressErrorToasts = serverConfig.get('suppressLspErrorToasts'); diff --git a/src/razor/src/rpc/updateBufferRequest.ts b/src/razor/src/rpc/updateBufferRequest.ts index 6198867201..2bf3ad74ec 100644 --- a/src/razor/src/rpc/updateBufferRequest.ts +++ b/src/razor/src/rpc/updateBufferRequest.ts @@ -10,6 +10,9 @@ export class UpdateBufferRequest { public readonly hostDocumentVersion: number, public readonly hostDocumentFilePath: string, public readonly changes: ServerTextChange[], - public readonly previousWasEmpty: boolean + public readonly previousWasEmpty: boolean, + public readonly checksum: string, + public readonly checksumAlgorithm: number, + public readonly encodingCodePage: number | null ) {} } diff --git a/src/shared/configurationProvider.ts b/src/shared/configurationProvider.ts index fdd2e773db..a8b1c8625f 100644 --- a/src/shared/configurationProvider.ts +++ b/src/shared/configurationProvider.ts @@ -16,7 +16,6 @@ import { } from '../shared/processPicker'; import { PlatformInformation } from './platform'; import { getCSharpDevKit } from '../utils/getCSharpDevKit'; -import { commonOptions } from './options'; import { ActionOption, showErrorMessageWithOptions, @@ -150,7 +149,7 @@ export class BaseVsDbgConfigurationProvider implements vscode.DebugConfiguration } if (debugConfiguration.checkForDevCert) { - if (!(await this.checkForDevCerts(commonOptions.dotnetPath))) { + if (!(await this.checkForDevCerts())) { return undefined; } } @@ -235,11 +234,11 @@ export class BaseVsDbgConfigurationProvider implements vscode.DebugConfiguration } } - private async checkForDevCerts(dotnetPath: string): Promise { + private async checkForDevCerts(): Promise { let result: boolean | undefined = undefined; while (result === undefined) { - const returnData = await hasDotnetDevCertsHttps(dotnetPath); + const returnData = await hasDotnetDevCertsHttps(); const errorCode = returnData.error?.code; if ( errorCode === CertToolStatusCodes.CertificateNotTrusted || @@ -261,13 +260,13 @@ export class BaseVsDbgConfigurationProvider implements vscode.DebugConfiguration ); if (dialogResult === labelYes) { - const returnData = await createSelfSignedCert(dotnetPath); + const returnData = await createSelfSignedCert(); if (returnData.error === null) { // if the process returns 0, returnData.error is null, otherwise the return code can be accessed in returnData.error.code const message = errorCode === CertToolStatusCodes.CertificateNotTrusted ? 'trusted' : 'created'; showInformationMessage( vscode, - vscode.l10n.t('Self-signed certificate sucessfully {0}', message) + vscode.l10n.t('Self-signed certificate successfully {0}', message) ); result = true; diff --git a/src/shared/migrateOptions.ts b/src/shared/migrateOptions.ts index 2a96381d07..0fcdc27b05 100644 --- a/src/shared/migrateOptions.ts +++ b/src/shared/migrateOptions.ts @@ -3,8 +3,20 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import * as fs from 'fs'; +import * as path from 'path'; import { types } from 'util'; import { ConfigurationTarget, vscode, WorkspaceConfiguration } from '../vscodeAdapter'; +import { CSharpExtensionId } from '../constants/csharpExtensionId'; +import { commonOptions } from './options'; + +export interface IDotnetAcquisitionExistingPaths { + extensionId: string; + path: string; +} + +export const dotnetPathOption = 'dotnet.dotnetPath'; +export const dotnetAcquisitionExtensionOption = 'dotnetAcquisitionExtension.existingDotnetPath'; // Option in the array should be identical to each other, except the name. export const migrateOptions = [ @@ -111,6 +123,96 @@ export async function MigrateOptions(vscode: vscode): Promise { await MoveOptionsValue(oldName, newName, configuration); } } + + await migrateDotnetPathOption(vscode); +} + +async function migrateDotnetPathOption(vscode: vscode): Promise { + const configuration = vscode.workspace.getConfiguration(); + + if (commonOptions.useOmnisharpServer) { + // Migrate to O# specific option. + await MoveOptionsValue(dotnetPathOption, 'omnisharp.dotnetPath', configuration); + } else { + const oldOptionInspect = configuration.inspect(dotnetPathOption); + if ( + !oldOptionInspect || + (!oldOptionInspect.globalValue && + !oldOptionInspect.workspaceValue && + !oldOptionInspect.workspaceFolderValue) + ) { + // No value is set, nothing to migrate. + return; + } + + const newOptionInspect = configuration.inspect( + dotnetAcquisitionExtensionOption + ); + + if (oldOptionInspect.globalValue) { + await migrateSingleDotnetPathValue( + dotnetPathOption, + oldOptionInspect.globalValue, + dotnetAcquisitionExtensionOption, + newOptionInspect?.globalValue, + configuration, + ConfigurationTarget.Global + ); + } + + if (oldOptionInspect.workspaceValue) { + await migrateSingleDotnetPathValue( + dotnetPathOption, + oldOptionInspect.workspaceValue, + dotnetAcquisitionExtensionOption, + newOptionInspect?.workspaceValue, + configuration, + ConfigurationTarget.Workspace + ); + } + + if (oldOptionInspect.workspaceFolderValue) { + await migrateSingleDotnetPathValue( + dotnetPathOption, + oldOptionInspect.workspaceFolderValue, + dotnetAcquisitionExtensionOption, + newOptionInspect?.workspaceFolderValue, + configuration, + ConfigurationTarget.WorkspaceFolder + ); + } + } +} + +async function migrateSingleDotnetPathValue( + oldOptionName: string, + oldValue: string, + newOptionName: string, + currentNewValue: IDotnetAcquisitionExistingPaths[] | undefined, + configuration: WorkspaceConfiguration, + configurationTarget: ConfigurationTarget +): Promise { + // Migrate to .NET install tool specific option. + // This requires some adjustments as the .NET install tool expects the full path to the exe and can already have a value set (e.g. a diff extension). + const extension = process.platform === 'win32' ? '.exe' : ''; + const newValue = path.join(oldValue, `dotnet${extension}`); + + if (!fs.existsSync(newValue)) { + // If the existing option points to a location that doesn't exist, we'll just remove the old value. + configuration.update(oldOptionName, undefined, configurationTarget); + return; + } + + currentNewValue = currentNewValue ?? []; + if (currentNewValue && currentNewValue.filter((p) => p.extensionId === CSharpExtensionId).length !== 0) { + // There's already a dotnet path set for this extension, we don't want to overwrite it. Just delete the old one. + await configuration.update(oldOptionName, undefined, configurationTarget); + return; + } + + currentNewValue.push({ extensionId: CSharpExtensionId, path: newValue }); + await configuration.update(newOptionName, currentNewValue, configurationTarget); + await configuration.update(oldOptionName, undefined, configurationTarget); } function shouldMove(newOptionValue: unknown, defaultInspectValueOfNewOption: unknown): boolean { diff --git a/src/shared/options.ts b/src/shared/options.ts index 3ed6a19f51..35d4e1e212 100644 --- a/src/shared/options.ts +++ b/src/shared/options.ts @@ -8,7 +8,6 @@ import { DocumentSelector } from 'vscode-languageserver-protocol'; import * as path from 'path'; export interface CommonOptions { - readonly dotnetPath: string; readonly waitForDebugger: boolean; readonly serverPath: string; readonly useOmnisharpServer: boolean; @@ -66,6 +65,7 @@ export interface OmnisharpServerOptions { readonly maxProjectFileCountForDiagnosticAnalysis: number; readonly suppressDotnetRestoreNotification: boolean; readonly enableLspDriver?: boolean | null; + readonly dotnetPath: string; } export interface LanguageServerOptions { @@ -90,9 +90,6 @@ export interface RazorOptions { } class CommonOptionsImpl implements CommonOptions { - public get dotnetPath() { - return readOption('dotnet.dotnetPath', '', 'omnisharp.dotnetPath'); - } public get waitForDebugger() { return readOption('dotnet.server.waitForDebugger', false, 'omnisharp.waitForDebugger'); } @@ -375,6 +372,9 @@ class OmnisharpOptionsImpl implements OmnisharpServerOptions { public get enableLspDriver() { return readOption('omnisharp.enableLspDriver', false); } + public get dotnetPath() { + return readOption('omnisharp.dotnetPath', ''); + } } class LanguageServerOptionsImpl implements LanguageServerOptions { @@ -471,13 +471,13 @@ function readOption(option: string, defaultValue: T, ...backCompatOptionNames } export const CommonOptionsThatTriggerReload: ReadonlyArray = [ - 'dotnetPath', 'waitForDebugger', 'serverPath', 'useOmnisharpServer', ]; export const OmnisharpOptionsThatTriggerReload: ReadonlyArray = [ + 'dotnetPath', 'enableMsBuildLoadProjectsOnDemand', 'loggingLevel', 'enableEditorConfigSupport', diff --git a/src/utils/dotnetDevCertsHttps.ts b/src/utils/dotnetDevCertsHttps.ts index 67511ccabc..9f7a20604f 100644 --- a/src/utils/dotnetDevCertsHttps.ts +++ b/src/utils/dotnetDevCertsHttps.ts @@ -5,23 +5,16 @@ import * as cp from 'child_process'; import { getExtensionPath } from '../common'; +import { commonOptions, omnisharpOptions } from '../shared/options'; // Will return true if `dotnet dev-certs https --check` succesfully finds a trusted development certificate. -export async function hasDotnetDevCertsHttps(dotnetPath: string): Promise { - return await execChildProcess( - `${dotnetPath ? dotnetPath : 'dotnet'} dev-certs https --check --trust`, - process.cwd(), - process.env - ); +export async function hasDotnetDevCertsHttps(): Promise { + return await execChildProcess(`${getDotnetCommand()} dev-certs https --check --trust`, process.cwd(), process.env); } // Will run `dotnet dev-certs https --trust` to prompt the user to create a trusted self signed certificates. Retruns true if sucessfull. -export async function createSelfSignedCert(dotnetPath: string): Promise { - return await execChildProcess( - `${dotnetPath ? dotnetPath : 'dotnet'} dev-certs https --trust`, - process.cwd(), - process.env - ); +export async function createSelfSignedCert(): Promise { + return await execChildProcess(`${getDotnetCommand()} dev-certs https --trust`, process.cwd(), process.env); } async function execChildProcess( @@ -36,6 +29,14 @@ async function execChildProcess( }); } +function getDotnetCommand(): string { + if (commonOptions.useOmnisharpServer) { + return omnisharpOptions.dotnetPath ?? 'dotnet'; + } else { + return 'dotnet'; + } +} + interface ExecReturnData { error: cp.ExecException | null; stdout: string; diff --git a/test/fakes.ts b/test/fakes.ts index a8ebf92259..aaa6f9a35d 100644 --- a/test/fakes.ts +++ b/test/fakes.ts @@ -61,21 +61,65 @@ export const getNullTelemetryReporter = (): ITelemetryReporter => { }; export const getWorkspaceConfiguration = (): vscode.WorkspaceConfiguration => { - const values: { [key: string]: any } = {}; + const values: { [key: string]: { globalValue: any; workspaceValue: any; workspaceFolderValue: any } } = {}; const configuration: vscode.WorkspaceConfiguration = { get(section: string, defaultValue?: T): T | undefined { - const result = values[section]; - return result ?? defaultValue; + const result = values[section]; + if (result?.globalValue !== undefined) { + return result.globalValue; + } else if (result?.workspaceValue !== undefined) { + return result.workspaceValue; + } else if (result?.workspaceFolderValue !== undefined) { + return result.workspaceFolderValue; + } else { + return defaultValue; + } }, has: (section: string) => { return values[section] !== undefined; }, - inspect: () => { - throw new Error('Not Implemented'); + inspect( + section: string + ): + | { key: string; defaultValue?: T; globalValue?: T; workspaceValue?: T; workspaceFolderValue?: T } + | undefined { + const result = values[section]; + if (!result) { + return undefined; + } + return { + key: section, + globalValue: result.globalValue, + defaultValue: undefined, + workspaceValue: result.workspaceValue, + workspaceFolderValue: result.workspaceFolderValue, + }; }, update: async (section: string, value: any, _configurationTarget?: vscode.ConfigurationTarget | boolean) => { - values[section] = value; + const existing = values[section] ?? { + globalValue: undefined, + workspaceValue: undefined, + workspaceFolderValue: undefined, + }; + + switch (_configurationTarget) { + case vscode.ConfigurationTarget.Global: + existing.globalValue = value; + break; + case vscode.ConfigurationTarget.Workspace: + existing.workspaceValue = value; + break; + case vscode.ConfigurationTarget.WorkspaceFolder: + existing.workspaceFolderValue = value; + break; + case undefined: + existing.globalValue = value; + break; + } + + values[section] = existing; + return Promise.resolve(); }, }; diff --git a/test/lsptoolshost/integrationTests/codeactions.integration.test.ts b/test/lsptoolshost/integrationTests/codeactions.integration.test.ts index a9ec6091c0..f0fc3c611d 100644 --- a/test/lsptoolshost/integrationTests/codeactions.integration.test.ts +++ b/test/lsptoolshost/integrationTests/codeactions.integration.test.ts @@ -120,7 +120,6 @@ describe(`Code Actions Tests`, () => { 'internal class CodeActions', '{', ' private static void Do() { Method(); }', - '', ' private static void Method()', ' {', ' var x = 1;', @@ -149,7 +148,6 @@ describe(`Code Actions Tests`, () => { 'internal class CodeActions', '{', ' private static void Do() { Method(); }', - '', ' private static void Method()', ' {', ' var x = 1;', @@ -190,7 +188,6 @@ describe(`Code Actions Tests`, () => { 'internal class CodeActions', '{', ' private static void Do() { Method(); }', - '', ' private static void Method()', ' {', ' var x = 1;', diff --git a/test/lsptoolshost/integrationTests/gotoImplementation.integration.test.ts b/test/lsptoolshost/integrationTests/gotoImplementation.integration.test.ts index f077b290b1..a1bfa8d1f0 100644 --- a/test/lsptoolshost/integrationTests/gotoImplementation.integration.test.ts +++ b/test/lsptoolshost/integrationTests/gotoImplementation.integration.test.ts @@ -35,16 +35,13 @@ describe(`Go To Implementation Tests`, () => { const requestPosition = new vscode.Position(4, 22); const implementationList = await getImplementations(requestPosition); - expect(implementationList).toHaveLength(3); + expect(implementationList).toHaveLength(2); expect(implementationList[0].uri.path).toContain('BaseClassImplementation.cs'); expect(implementationList[0].range).toStrictEqual(new vscode.Range(2, 17, 2, 40)); expect(implementationList[1].uri.path).toContain('implementation.cs'); - expect(implementationList[1].range).toStrictEqual(new vscode.Range(4, 17, 4, 26)); - - expect(implementationList[2].uri.path).toContain('implementation.cs'); - expect(implementationList[2].range).toStrictEqual(new vscode.Range(5, 17, 5, 26)); + expect(implementationList[1].range).toStrictEqual(new vscode.Range(5, 17, 5, 26)); }); }); diff --git a/test/lsptoolshost/unitTests/configurationMiddleware.test.ts b/test/lsptoolshost/unitTests/configurationMiddleware.test.ts index 587a863b75..d84d5d02a5 100644 --- a/test/lsptoolshost/unitTests/configurationMiddleware.test.ts +++ b/test/lsptoolshost/unitTests/configurationMiddleware.test.ts @@ -261,6 +261,12 @@ const testData = [ vsCodeConfiguration: null, declareInPackageJson: false, }, + { + serverOption: 'csharp|auto_insert.dotnet_enable_auto_insert', + vsCodeConfiguration: 'dotnet.autoInsert.enableAutoInsert', + declareInPackageJson: true, + section: editorBehaviorSection, + }, ]; describe('Server option name to vscode configuration name test', () => { diff --git a/test/lsptoolshost/unitTests/migrateOptions.test.ts b/test/lsptoolshost/unitTests/migrateOptions.test.ts index 1f2f8cfece..4e75f37323 100644 --- a/test/lsptoolshost/unitTests/migrateOptions.test.ts +++ b/test/lsptoolshost/unitTests/migrateOptions.test.ts @@ -3,12 +3,23 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { readFileSync } from 'fs'; -import { migrateOptions } from '../../../src/shared/migrateOptions'; -import { describe, test, expect } from '@jest/globals'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as vscode from 'vscode'; +import { + dotnetAcquisitionExtensionOption, + dotnetPathOption, + IDotnetAcquisitionExistingPaths, + MigrateOptions, + migrateOptions, +} from '../../../src/shared/migrateOptions'; +import { describe, test, expect, beforeEach, jest } from '@jest/globals'; +import { getVSCodeWithConfig } from '../../fakes'; +import { CSharpExtensionId } from '../../../src/constants/csharpExtensionId'; +import { ConfigurationTarget } from '../../../src/vscodeAdapter'; -describe('Migrate configuration should in package.json', () => { - const packageJson = JSON.parse(readFileSync('package.json').toString()); +describe('Migrate configurations', () => { + const packageJson = JSON.parse(fs.readFileSync('package.json').toString()); const configuration = packageJson.contributes.configuration; // Read the "Project", "Text Editor", "Debugger", "LSP Server" sections of the package.json const configurations = [ @@ -18,9 +29,160 @@ describe('Migrate configuration should in package.json', () => { ...Object.keys(configuration[3].properties), ]; + const validDotnetFolder = path.join('csharp', 'dotnet'); + const validDotnetPath = path.join(validDotnetFolder, `dotnet${process.platform === 'win32' ? '.exe' : ''}`); + + beforeEach(() => { + jest.spyOn(fs, 'existsSync').mockImplementation((path) => { + if (path.toString().endsWith(validDotnetPath)) { + return true; + } + + return false; + }); + }); + migrateOptions.forEach((data) => { test(`Should have ${data.newName} in package.json`, () => { expect(configurations).toContain(data.newName); }); }); + + test(`dotnet.dotnetPath should create new dotnetAcquisitionExtension.existingDotnetPath value`, async () => { + getVSCodeWithConfig(vscode); + + vscode.workspace.getConfiguration().update(dotnetPathOption, validDotnetFolder); + + await MigrateOptions(vscode); + + const updatedConfigurations = vscode.workspace.getConfiguration(); + const acquisitionPath = updatedConfigurations.get( + dotnetAcquisitionExtensionOption + ); + expect(acquisitionPath).toBeDefined(); + expect(acquisitionPath!.length).toEqual(1); + expect(acquisitionPath![0].path).toEqual(validDotnetPath); + expect(acquisitionPath![0].extensionId).toEqual(CSharpExtensionId); + expect(updatedConfigurations.get(dotnetPathOption)).toBeUndefined(); + }); + + test(`dotnet.dotnetPath should not overwrite existing dotnetAcquisitionExtension.existingDotnetPath value`, async () => { + getVSCodeWithConfig(vscode); + + // Set both dotnet.dotnetPath and dotnetAcquisitionExtension.existingDotnetPath for the C# extension + vscode.workspace.getConfiguration().update(dotnetPathOption, validDotnetFolder); + vscode.workspace.getConfiguration().update(dotnetAcquisitionExtensionOption, [ + { + path: 'differentCSharp\\dotnet.exe', + extensionId: CSharpExtensionId, + }, + ]); + + await MigrateOptions(vscode); + + // Only dotnet.dotnetPath should be deleted, dotnetAcquisitionExtension.existingDotnetPath should be unchanged. + const updatedConfigurations = vscode.workspace.getConfiguration(); + const acquisitionPath = updatedConfigurations.get( + dotnetAcquisitionExtensionOption + ); + expect(acquisitionPath).toBeDefined(); + expect(acquisitionPath!.length).toEqual(1); + expect(acquisitionPath![0].path).toEqual('differentCSharp\\dotnet.exe'); + expect(acquisitionPath![0].extensionId).toEqual(CSharpExtensionId); + expect(updatedConfigurations.get(dotnetPathOption)).toBeUndefined(); + }); + + test(`dotnet.dotnetPath should not update dotnetAcquisitionExtension.existingDotnetPath if invalid`, async () => { + getVSCodeWithConfig(vscode); + + vscode.workspace.getConfiguration().update(dotnetPathOption, 'invalid\\dotnet'); + + await MigrateOptions(vscode); + + const updatedConfigurations = vscode.workspace.getConfiguration(); + const acquisitionPath = updatedConfigurations.get( + dotnetAcquisitionExtensionOption + ); + expect(acquisitionPath).toBeUndefined(); + expect(updatedConfigurations.get(dotnetPathOption)).toBeUndefined(); + }); + + test(`dotnet.dotnetPath should append to existing dotnetAcquisitionExtension.existingDotnetPath values`, async () => { + getVSCodeWithConfig(vscode); + + // Set dotnet.dotnetPath and dotnetAcquisitionExtension.existingDotnetPath for a different extension + vscode.workspace.getConfiguration().update(dotnetPathOption, validDotnetFolder); + vscode.workspace.getConfiguration().update(dotnetAcquisitionExtensionOption, [ + { + path: 'otherExtension\\dotnet.exe', + extensionId: 'some.other.extension', + }, + ]); + + await MigrateOptions(vscode); + + // dotnet.dotnetPath should be removed and the value appended to dotnetAcquisitionExtension.existingDotnetPath. + const updatedConfigurations = vscode.workspace.getConfiguration(); + const acquisitionPath = updatedConfigurations + .get(dotnetAcquisitionExtensionOption) + ?.sort((a, b) => a.extensionId.localeCompare(b.extensionId)); + expect(acquisitionPath).toBeDefined(); + expect(acquisitionPath!.length).toEqual(2); + expect(acquisitionPath![0].path).toEqual(validDotnetPath); + expect(acquisitionPath![0].extensionId).toEqual(CSharpExtensionId); + expect(updatedConfigurations.get(dotnetPathOption)).toBeUndefined(); + }); + + test(`dotnet.dotnetPath is migrated for all configuration targets`, async () => { + getVSCodeWithConfig(vscode); + + // Set dotnet.dotnetPath for all configuration targets + vscode.workspace + .getConfiguration() + .update(dotnetPathOption, 'global' + validDotnetFolder, ConfigurationTarget.Global); + vscode.workspace + .getConfiguration() + .update(dotnetPathOption, 'workspace' + validDotnetFolder, ConfigurationTarget.Workspace); + vscode.workspace + .getConfiguration() + .update(dotnetPathOption, 'workspaceFolder' + validDotnetFolder, ConfigurationTarget.WorkspaceFolder); + + await MigrateOptions(vscode); + + // dotnet.dotnetPath should be removed and the value appended to dotnetAcquisitionExtension.existingDotnetPath for all configuration targets. + + const inspectDotnetPath = vscode.workspace.getConfiguration().inspect(dotnetPathOption); + expect(inspectDotnetPath?.globalValue).toBeUndefined(); + expect(inspectDotnetPath?.workspaceValue).toBeUndefined(); + expect(inspectDotnetPath?.workspaceFolderValue).toBeUndefined(); + + const inspectAcquisitionPath = vscode.workspace + .getConfiguration() + .inspect(dotnetAcquisitionExtensionOption); + expect(inspectAcquisitionPath?.globalValue).toBeDefined(); + expect(inspectAcquisitionPath!.globalValue![0].path).toEqual('global' + validDotnetPath); + + expect(inspectAcquisitionPath?.workspaceValue).toBeDefined(); + expect(inspectAcquisitionPath!.workspaceValue![0].path).toEqual('workspace' + validDotnetPath); + + expect(inspectAcquisitionPath?.workspaceFolderValue).toBeDefined(); + expect(inspectAcquisitionPath!.workspaceFolderValue![0].path).toEqual('workspaceFolder' + validDotnetPath); + }); + + test(`dotnet.dotnetPath should migrate to omnisharp.dotnetPath when using O#`, async () => { + getVSCodeWithConfig(vscode); + + vscode.workspace.getConfiguration().update(dotnetPathOption, validDotnetFolder); + vscode.workspace.getConfiguration().update('dotnet.server.useOmnisharp', true); + + await MigrateOptions(vscode); + + const updatedConfigurations = vscode.workspace.getConfiguration(); + const acquisitionPath = updatedConfigurations.get( + dotnetAcquisitionExtensionOption + ); + expect(acquisitionPath).toBeUndefined(); + expect(updatedConfigurations.get('omnisharp.dotnetPath')).toEqual(validDotnetFolder); + expect(updatedConfigurations.get(dotnetPathOption)).toBeUndefined(); + }); }); diff --git a/test/razor/razorIntegrationTests/completion.integration.test.ts b/test/razor/razorIntegrationTests/completion.integration.test.ts new file mode 100644 index 0000000000..0760f1d609 --- /dev/null +++ b/test/razor/razorIntegrationTests/completion.integration.test.ts @@ -0,0 +1,106 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as path from 'path'; +import * as vscode from 'vscode'; +import { beforeAll, afterAll, test, expect, beforeEach } from '@jest/globals'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import * as integrationHelpers from '../../lsptoolshost/integrationTests/integrationHelpers'; + +integrationHelpers.describeIfWindows(`Razor Completion ${testAssetWorkspace.description}`, function () { + beforeAll(async function () { + if (!integrationHelpers.isRazorWorkspace(vscode.workspace)) { + return; + } + + await integrationHelpers.activateCSharpExtension(); + }); + + beforeEach(async function () { + await integrationHelpers.openFileInWorkspaceAsync(path.join('Pages', 'Completion.razor')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + test('Text Tag', async () => { + if (!integrationHelpers.isRazorWorkspace(vscode.workspace)) { + return; + } + + const insertPosition = new vscode.Position(4, 4); + await insertText(insertPosition, ' item.label === 'text'); + + if (!textTagCompletionItem) { + throw new Error(completionList.items.reduce((acc, item) => acc + item.label + '\n', '')); + } + + expect(textTagCompletionItem).toBeDefined(); + expect(textTagCompletionItem!.kind).toEqual(vscode.CompletionItemKind.Text); + expect(textTagCompletionItem!.insertText).toBe('text'); + }); + + test('Div Tag', async () => { + if (!integrationHelpers.isRazorWorkspace(vscode.workspace)) { + return; + } + + const insertPosition = new vscode.Position(6, 0); + await insertText(insertPosition, ' item.label === 'div'); + + if (!divTagCompletionItem) { + throw new Error(completionList.items.reduce((acc, item) => acc + item.label + '\n', '')); + } + + expect(divTagCompletionItem).toBeDefined(); + + // Reader, you may be wondering why the kind is a Property. To that I say: I don't know. + // If you find out please add a detailed explanation. Thank you in advance. + expect(divTagCompletionItem!.kind).toEqual(vscode.CompletionItemKind.Property); + expect(divTagCompletionItem!.insertText).toBe('div'); + + const documentation = divTagCompletionItem!.documentation as vscode.MarkdownString; + expect(documentation.value).toBe( + 'The div element has no special meaning at all. It represents its children. It can be used with the class, lang, and title attributes to mark up semantics common to a group of consecutive elements.\n\n[MDN Reference](https://developer.mozilla.org/docs/Web/HTML/Element/div)' + ); + }); + + async function getCompletionsAsync( + position: vscode.Position, + triggerCharacter: string | undefined, + resolveCount: number | undefined + ): Promise { + const activeEditor = vscode.window.activeTextEditor; + if (!activeEditor) { + throw new Error('No active editor'); + } + + return await vscode.commands.executeCommand( + 'vscode.executeCompletionItemProvider', + activeEditor.document.uri, + position, + triggerCharacter, + resolveCount + ); + } + + async function insertText(position: vscode.Position, text: string): Promise { + const activeEditor = vscode.window.activeTextEditor; + if (!activeEditor) { + throw new Error('No active editor'); + } + + await activeEditor.edit((builder) => { + builder.insert(position, text); + }); + } +}); diff --git a/test/razor/razorIntegrationTests/testAssets/RazorApp/Pages/Completion.razor b/test/razor/razorIntegrationTests/testAssets/RazorApp/Pages/Completion.razor new file mode 100644 index 0000000000..0bb84477e1 --- /dev/null +++ b/test/razor/razorIntegrationTests/testAssets/RazorApp/Pages/Completion.razor @@ -0,0 +1,10 @@ +@page "/completion" + +@* Insert text tag in below using completion *@ +@{ + +} + +@code { + +} \ No newline at end of file diff --git a/version.json b/version.json index fd84246c34..1767f04e46 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", - "version": "2.58", + "version": "2.61", "publicReleaseRefSpec": [ "^refs/heads/release$", "^refs/heads/prerelease$",