diff --git a/Directory.Packages.props b/Directory.Packages.props index 425bac1f55f..62a33472ea5 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -13,7 +13,6 @@ <_BasicReferenceAssembliesVersion>1.7.2 <_BenchmarkDotNetPackageVersion>0.13.5.2136 <_MicrosoftVisualStudioExtensibilityTestingVersion>0.1.187-beta - <_MicrosoftCodeAnalysisAnalyzersPackageVersion>3.11.0 <_RoslynDiagnosticAnalyzersPackageVersion>3.11.0-beta1.24508.2 <_MicrosoftVisualStudioLanguageServicesPackageVersion>$(MicrosoftVisualStudioLanguageServicesPackageVersion) <_XunitPackageVersion>2.9.2 @@ -33,8 +32,7 @@ - - + @@ -46,16 +44,16 @@ - - - + + + - + diff --git a/NuGet.config b/NuGet.config index b5e83791aff..6791c5978fb 100644 --- a/NuGet.config +++ b/NuGet.config @@ -20,8 +20,6 @@ - - @@ -36,18 +34,12 @@ - - - --> - - - diff --git a/azure-pipelines-richnav.yml b/azure-pipelines-richnav.yml deleted file mode 100644 index cd294a1938c..00000000000 --- a/azure-pipelines-richnav.yml +++ /dev/null @@ -1,62 +0,0 @@ -# -# See https://docs.microsoft.com/azure/devops/pipelines/yaml-schema for reference. -# - -variables: -- template: /eng/common/templates/variables/pool-providers.yml -- name: Build.Repository.Clean - value: true -- name: Codeql.Enabled - value: false -- name: Codeql.SkipTaskAutoInjection - value: true - -trigger: - branches: - include: - - main - -pr: - autoCancel: true - branches: - include: - - main - -stages: -- stage: build - displayName: Build - jobs: - - template: /eng/common/templates/jobs/jobs.yml - parameters: - helixRepo: dotnet/razor-tooling - helixType: build.product/ - enableRichCodeNavigation: true - richCodeNavigationLanguage: 'csharp' - jobs: - - job: Windows - pool: - name: $(DncEngPublicBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64.open - - steps: - - task: NuGetCommand@2 - displayName: 'Clear NuGet caches' - condition: succeeded() - inputs: - command: custom - arguments: 'locals all -clear' - - - task: PowerShell@2 - displayName: Build - condition: succeeded() - inputs: - filePath: eng/common/build.ps1 - arguments: -ci - -restore - -build - -sign - -pack - -publish - -configuration Debug - -msbuildEngine dotnet - -prepareMachine \ No newline at end of file diff --git a/eng/SetupVSHive.ps1 b/eng/SetupVSHive.ps1 index 097ca05c104..c47e7a040b9 100644 --- a/eng/SetupVSHive.ps1 +++ b/eng/SetupVSHive.ps1 @@ -12,6 +12,8 @@ $vsRegEdit = Join-Path (Join-Path (Join-Path $vsDir 'Common7') 'IDE') 'VSRegEdit $hive = "RoslynDev" &$vsRegEdit set "$vsDir" $hive HKCU "Roslyn\Internal\OnOff\Features" OOP64Bit dword 0 +&$vsRegEdit set "$vsDir" $hive HKLM "Profile" DisableFirstLaunchDialog dword 1 + Write-Host "-- VS Info --" $isolationIni = Join-Path (Join-Path (Join-Path $vsDir 'Common7') 'IDE') 'devenv.isolation.ini' Get-Content $isolationIni | Write-Host diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 254993bb590..3069ccdf5d7 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -6,89 +6,109 @@ 839cdfb0ecca5e0be3dbccd926e7651ef50fdf10 - + https://github.com/dotnet/source-build-reference-packages - cf30e8fd726730aa4b142275fb2fc0503528b7dd + 14f833124983b36ac4083338d0cad6caefce2489 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 09312a65870e883999ffe2ca25edd05cbc241e05 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 - + https://github.com/dotnet/roslyn - 0a79874a2ea127eafd3a95a2a474d1e38b85221d + 605d9346cdae106907f67663250788eff6048b09 + + https://github.com/dotnet/roslyn + 605d9346cdae106907f67663250788eff6048b09 + + + https://github.com/dotnet/roslyn + 605d9346cdae106907f67663250788eff6048b09 + + + https://github.com/dotnet/roslyn + 605d9346cdae106907f67663250788eff6048b09 + + + https://github.com/dotnet/roslyn + 605d9346cdae106907f67663250788eff6048b09 + + + https://github.com/dotnet/roslyn + 605d9346cdae106907f67663250788eff6048b09 + @@ -96,14 +116,14 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 3a25a7f1cc446b60678ed25c9d829420d6321eba - + https://github.com/dotnet/arcade - f33d9e642f0e68a61312164cd9e0baf4e142a999 + 97cbc7361ff28b2948c8182720c166a744049f55 - + https://github.com/dotnet/arcade - f33d9e642f0e68a61312164cd9e0baf4e142a999 + 97cbc7361ff28b2948c8182720c166a744049f55 - 9 + 10 0 0 preview @@ -30,8 +30,8 @@ imported. This OK because we want to just have an obvious salt for a local build. --> - 17.14.3 - 17.14 + 17.15.1 + 17.15 $(AddinMajorVersion) $(AddinVersion).$(OfficialBuildId) $(AddinVersion).42424242.42 @@ -47,29 +47,34 @@ --> + 3.12.0-beta1.25209.6 6.0.2-servicing.22064.6 6.0.1 - 10.0.617002 - 9.0.0-beta.25161.4 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 - 4.14.0-3.25176.5 + 10.0.620402 + 9.0.0-beta.25204.5 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25207.1 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 + 5.0.0-1.25209.6 - IDE0005 + $(NoWarn);IDE0005 + + + $(NoWarn);0436 @@ -33,14 +39,7 @@ Now we aren't sure why this exposes a "flaky" issue; however, to workaround the break we pin the following packages to workaround the issue. --> - - - + diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/OpenDocumentGenerator.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/OpenDocumentGenerator.cs index 6501d1f50ac..d58b352a97b 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/OpenDocumentGenerator.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/OpenDocumentGenerator.cs @@ -6,10 +6,9 @@ using System.Collections.Immutable; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; namespace Microsoft.AspNetCore.Razor.LanguageServer; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectContexts/ProjectContextsEndpoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectContexts/ProjectContextsEndpoint.cs index 7be2146e3a7..4d34108c12b 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectContexts/ProjectContextsEndpoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectContexts/ProjectContextsEndpoint.cs @@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.ProjectContexts; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentContextFactory.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IDocumentContextFactory.cs similarity index 77% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentContextFactory.cs rename to src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IDocumentContextFactory.cs index a29c943da58..5d76c6d1f23 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentContextFactory.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IDocumentContextFactory.cs @@ -3,9 +3,9 @@ using System; using System.Diagnostics.CodeAnalysis; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; -namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; +namespace Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; internal interface IDocumentContextFactory { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentContextFactoryExtensions.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IDocumentContextFactoryExtensions.cs similarity index 87% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentContextFactoryExtensions.cs rename to src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IDocumentContextFactoryExtensions.cs index 4843df493cf..7e8a3a3bfcd 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentContextFactoryExtensions.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IDocumentContextFactoryExtensions.cs @@ -3,9 +3,9 @@ using System; using System.Diagnostics.CodeAnalysis; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; -namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; +namespace Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; internal static class IDocumentContextFactoryExtensions { diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IProjectSnapshotManagerExtensions.SolutionQueryOperations.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IProjectSnapshotManagerExtensions.SolutionQueryOperations.cs index e1d1304794e..30e2c0072fb 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IProjectSnapshotManagerExtensions.SolutionQueryOperations.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IProjectSnapshotManagerExtensions.SolutionQueryOperations.cs @@ -5,7 +5,6 @@ using System.Collections.Immutable; using System.Linq; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IProjectSnapshotManagerExtensions.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IProjectSnapshotManagerExtensions.cs index c17926d7a5c..987c0731a03 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IProjectSnapshotManagerExtensions.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IProjectSnapshotManagerExtensions.cs @@ -5,11 +5,10 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; namespace Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IRazorProjectService.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IRazorProjectService.cs index a35fb0e58ac..ea039542057 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IRazorProjectService.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/IRazorProjectService.cs @@ -4,9 +4,6 @@ using System.Collections.Immutable; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Serialization; using Microsoft.CodeAnalysis.Text; namespace Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/LspProjectSnapshotManager.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/LspProjectSnapshotManager.cs index d1299b8a109..8a6a55312d3 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/LspProjectSnapshotManager.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/LspProjectSnapshotManager.cs @@ -1,8 +1,8 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/MiscFilesProject.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/MiscFilesProject.cs index cef0f40f76f..0c748cbbc67 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/MiscFilesProject.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/MiscFilesProject.cs @@ -4,10 +4,9 @@ using System; using System.IO; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.Extensions.Internal; namespace Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/RazorProjectService.TestAccessor.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/RazorProjectService.TestAccessor.cs index a0312a283c8..88477f01ae2 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/RazorProjectService.TestAccessor.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/RazorProjectService.TestAccessor.cs @@ -1,12 +1,10 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using System.Collections.Immutable; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Serialization; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/RazorProjectService.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/RazorProjectService.cs index 989124b3779..3c72c35ee60 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/RazorProjectService.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/RazorProjectService.cs @@ -10,13 +10,12 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Common; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Serialization; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Serialization; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorConfigurationEndpoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorConfigurationEndpoint.cs index 57e8793dd49..904cf2bc67e 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorConfigurationEndpoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorConfigurationEndpoint.cs @@ -7,15 +7,17 @@ using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.CommonLanguageServerProtocol.Framework; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer; -internal class RazorConfigurationEndpoint(RazorLSPOptionsMonitor optionsMonitor, ILoggerFactory loggerFactory) +internal sealed class RazorConfigurationEndpoint( + LspServices services, + RazorLSPOptionsMonitor optionsMonitor, + ILoggerFactory loggerFactory) : IDidChangeConfigurationEndpoint, IOnInitialized { - private readonly RazorLSPOptionsMonitor _optionsMonitor = optionsMonitor ?? throw new ArgumentNullException(nameof(optionsMonitor)); + private readonly LspServices _services = services; + private readonly RazorLSPOptionsMonitor _optionsMonitor = optionsMonitor; private readonly ILogger _logger = loggerFactory.GetOrCreateLogger(); public bool MutatesSolutionState => true; @@ -27,9 +29,9 @@ public async Task HandleNotificationAsync(DidChangeConfigurationParams request, await _optionsMonitor.UpdateAsync(cancellationToken).ConfigureAwait(false); } - public async Task OnInitializedAsync(ILspServices services, CancellationToken cancellationToken) + public async Task OnInitializedAsync(CancellationToken cancellationToken) { - var capabilitiesService = services.GetRequiredService(); + var capabilitiesService = _services.GetRequiredService(); var clientCapabilities = capabilitiesService.ClientCapabilities; if (clientCapabilities.Workspace?.Configuration == true) diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorFileSystemWatcher.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorFileSystemWatcher.cs index 34d78ec5b5f..47f9973c20a 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorFileSystemWatcher.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorFileSystemWatcher.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.ComponentModel; -using System.IO; +using FileSystemWatcher = System.IO.FileSystemWatcher; namespace Microsoft.AspNetCore.Razor.LanguageServer; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorInitializeEndpoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorInitializeEndpoint.cs index 158e76d4f86..1a21274f58f 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorInitializeEndpoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorInitializeEndpoint.cs @@ -4,10 +4,9 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CommonLanguageServerProtocol.Framework; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorInitializedEndpoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorInitializedEndpoint.cs index 277533d056c..1af32d0bfeb 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorInitializedEndpoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorInitializedEndpoint.cs @@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CommonLanguageServerProtocol.Framework; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer; @@ -22,7 +21,7 @@ public async Task HandleNotificationAsync(InitializedParams request, RazorReques foreach (var onStartedItem in onStartedItems) { - await onStartedItem.OnInitializedAsync(requestContext.LspServices, cancellationToken).ConfigureAwait(false); + await onStartedItem.OnInitializedAsync(cancellationToken).ConfigureAwait(false); } } } diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorLanguageServer.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorLanguageServer.cs index dda62959a52..543d83b988b 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorLanguageServer.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorLanguageServer.cs @@ -24,7 +24,6 @@ using Microsoft.AspNetCore.Razor.LanguageServer.Refactoring; using Microsoft.AspNetCore.Razor.LanguageServer.SignatureHelp; using Microsoft.AspNetCore.Razor.LanguageServer.WrapWithTag; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.AutoInsert; using Microsoft.CodeAnalysis.Razor.FoldingRanges; using Microsoft.CodeAnalysis.Razor.Formatting; @@ -32,6 +31,7 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol.DocumentSymbols; using Microsoft.CodeAnalysis.Razor.Rename; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CommonLanguageServerProtocol.Framework; using Microsoft.Extensions.DependencyInjection; @@ -82,7 +82,7 @@ public void Dispose() _jsonRpc.Dispose(); } - private static ILspLogger CreateILspLogger(ILoggerFactory loggerFactory, ITelemetryReporter telemetryReporter) + private static ClaspLoggingBridge CreateILspLogger(ILoggerFactory loggerFactory, ITelemetryReporter telemetryReporter) { return new ClaspLoggingBridge(loggerFactory, telemetryReporter); } @@ -127,40 +127,37 @@ protected override ILspServices ConstructLspServices() services.AddLifeCycleServices(this, _clientConnection, _lspServerActivationTracker); - services.AddSemanticTokensServices(featureOptions); + services.AddSemanticTokensServices(); services.AddDocumentManagementServices(); - services.AddFormattingServices(featureOptions); + services.AddFormattingServices(); services.AddOptionsServices(_lspOptions); - services.AddTextDocumentServices(featureOptions); + services.AddTextDocumentServices(); - if (!featureOptions.UseRazorCohostServer) - { - // Diagnostics - services.AddDiagnosticServices(); + // Diagnostics + services.AddDiagnosticServices(); - services.AddCodeActionsServices(); + services.AddCodeActionsServices(); - // Completion - services.AddCompletionServices(); + // Completion + services.AddCompletionServices(); - // Auto insert - services.AddSingleton(); - services.AddSingleton(); + // Auto insert + services.AddSingleton(); + services.AddSingleton(); - services.AddSingleton(); + services.AddSingleton(); - // Folding Range Providers - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); - services.AddSingleton(); + // Folding Range Providers + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); - services.AddSingleton(); + services.AddSingleton(); - // Hover - services.AddHoverServices(); - } + // Hover + services.AddHoverServices(); // Other services.AddSingleton(); @@ -171,13 +168,13 @@ protected override ILspServices ConstructLspServices() // Defaults: For when the caller hasn't provided them through the `configure` action. services.TryAddSingleton(); - AddHandlers(services, featureOptions); + AddHandlers(services); var lspServices = new LspServices(services); return lspServices; - static void AddHandlers(IServiceCollection services, LanguageServerFeatureOptions featureOptions) + static void AddHandlers(IServiceCollection services) { // Not calling AddHandler because we want to register this endpoint as an IOnInitialized too services.AddSingleton(); @@ -185,40 +182,37 @@ static void AddHandlers(IServiceCollection services, LanguageServerFeatureOption // Transient because it should only be used once and I'm hoping it doesn't stick around. services.AddTransient(sp => sp.GetRequiredService()); - if (!featureOptions.UseRazorCohostServer) - { - services.AddHandlerWithCapabilities(); + services.AddHandlerWithCapabilities(); - services.AddSingleton(); - services.AddHandlerWithCapabilities(); + services.AddSingleton(); + services.AddHandlerWithCapabilities(); - services.AddSingleton(); - services.AddHandlerWithCapabilities(); + services.AddSingleton(); + services.AddHandlerWithCapabilities(); - services.AddHandlerWithCapabilities(); - services.AddHandlerWithCapabilities(); - services.AddHandlerWithCapabilities(); - services.AddHandlerWithCapabilities(); - services.AddHandlerWithCapabilities(); + services.AddHandlerWithCapabilities(); + services.AddHandlerWithCapabilities(); + services.AddHandlerWithCapabilities(); + services.AddHandlerWithCapabilities(); + services.AddHandlerWithCapabilities(); - services.AddSingleton(); - services.AddHandlerWithCapabilities(); - services.AddHandler(); + services.AddSingleton(); + services.AddHandlerWithCapabilities(); + services.AddHandler(); - services.AddHandlerWithCapabilities(); - services.AddSingleton(); + services.AddHandlerWithCapabilities(); + services.AddSingleton(); - services.AddHandlerWithCapabilities(); - services.AddHandler(); + services.AddHandlerWithCapabilities(); + services.AddHandler(); - services.AddHandlerWithCapabilities(); + services.AddHandlerWithCapabilities(); - services.AddHandlerWithCapabilities(); + services.AddHandlerWithCapabilities(); - services.AddHandlerWithCapabilities(); - services.AddHandler(); - services.AddHandler(); - } + services.AddHandlerWithCapabilities(); + services.AddHandler(); + services.AddHandler(); services.AddHandler(); diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorRequestContextFactory.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorRequestContextFactory.cs index f89b213204c..245311ec7df 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorRequestContextFactory.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorRequestContextFactory.cs @@ -5,54 +5,55 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CommonLanguageServerProtocol.Framework; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer; -internal class RazorRequestContextFactory(ILspServices lspServices) : AbstractRequestContextFactory +internal sealed class RazorRequestContextFactory( + LspServices lspServices, + IDocumentContextFactory documentContextFactory, + ILoggerFactory loggerFactory) : AbstractRequestContextFactory { - private readonly ILspServices _lspServices = lspServices; + private readonly LspServices _lspServices = lspServices; + private readonly IDocumentContextFactory _documentContextFactory = documentContextFactory; + private readonly ILogger _logger = loggerFactory.GetOrCreateLogger(); public override Task CreateRequestContextAsync(IQueueItem queueItem, IMethodHandler methodHandler, TRequestParams @params, CancellationToken cancellationToken) { - var logger = _lspServices.GetRequiredService().GetOrCreateLogger(); - DocumentContext? documentContext = null; - var textDocumentHandler = methodHandler as ITextDocumentIdentifierHandler; - Uri? uri = null; - var documentContextFactory = _lspServices.GetRequiredService(); - if (textDocumentHandler is not null) + + if (methodHandler is ITextDocumentIdentifierHandler textDocumentHandler) { if (textDocumentHandler is ITextDocumentIdentifierHandler tdiHandler) { var textDocumentIdentifier = tdiHandler.GetTextDocumentIdentifier(@params); uri = textDocumentIdentifier.Uri; - logger.LogDebug($"Trying to create DocumentContext for {queueItem.MethodName} for {textDocumentIdentifier.GetProjectContext()?.Id ?? "(no project context)"} for {uri}"); + _logger.LogDebug($"Trying to create DocumentContext for {queueItem.MethodName} for {textDocumentIdentifier.GetProjectContext()?.Id ?? "(no project context)"} for {uri}"); - documentContextFactory.TryCreate(textDocumentIdentifier, out documentContext); + _documentContextFactory.TryCreate(textDocumentIdentifier, out documentContext); } else if (textDocumentHandler is ITextDocumentIdentifierHandler uriHandler) { uri = uriHandler.GetTextDocumentIdentifier(@params); - logger.LogDebug($"Trying to create DocumentContext for {queueItem.MethodName}, with no project context, for {uri}"); + _logger.LogDebug($"Trying to create DocumentContext for {queueItem.MethodName}, with no project context, for {uri}"); - documentContextFactory.TryCreate(uri, out documentContext); + _documentContextFactory.TryCreate(uri, out documentContext); } else { - throw new NotImplementedException(); + return Assumed.Unreachable>(); } if (documentContext is null) { - logger.LogWarning($"Could not create a document context for {queueItem.MethodName} for {uri}. Endpoint may crash later if it calls GetRequiredDocumentContext."); + _logger.LogWarning($"Could not create a document context for {queueItem.MethodName} for {uri}. Endpoint may crash later if it calls GetRequiredDocumentContext."); } } diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Refactoring/RenameEndpoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Refactoring/RenameEndpoint.cs index fa8fc0c94a6..b615215bd5b 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Refactoring/RenameEndpoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Refactoring/RenameEndpoint.cs @@ -13,7 +13,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Rename; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.Refactoring; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RemoteProjectItem.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RemoteProjectItem.cs index e94428bb9ce..7d63758175b 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RemoteProjectItem.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RemoteProjectItem.cs @@ -9,11 +9,11 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer; internal sealed class RemoteProjectItem : RazorProjectItem { - public RemoteProjectItem(string filePath, string physicalPath, string? fileKind) + public RemoteProjectItem(string filePath, string physicalPath, RazorFileKind? fileKind) { FilePath = filePath; PhysicalPath = physicalPath; - FileKind = fileKind ?? FileKinds.GetFileKindFromFilePath(FilePath); + FileKind = fileKind ?? FileKinds.GetFileKindFromPath(FilePath); RelativePhysicalPath = FilePath.StartsWith('/') ? FilePath[1..] : FilePath; @@ -25,7 +25,7 @@ public RemoteProjectItem(string filePath, string physicalPath, string? fileKind) public override string PhysicalPath { get; } - public override string FileKind { get; } + public override RazorFileKind FileKind { get; } public override string RelativePhysicalPath { get; } diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RemoteRazorProjectFileSystem.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RemoteRazorProjectFileSystem.cs index 34077b711aa..d83f7de41a5 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RemoteRazorProjectFileSystem.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RemoteRazorProjectFileSystem.cs @@ -4,10 +4,10 @@ using System; using System.Collections.Generic; using System.IO; -using System.Linq; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor; +using Microsoft.CodeAnalysis.Razor.Utilities; namespace Microsoft.AspNetCore.Razor.LanguageServer; @@ -25,7 +25,7 @@ public RemoteRazorProjectFileSystem(string root) public override IEnumerable EnumerateItems(string basePath) => throw new NotSupportedException(); - public override RazorProjectItem GetItem(string path, string? fileKind) + public override RazorProjectItem GetItem(string path, RazorFileKind? fileKind) { ArgHelper.ThrowIfNull(path); diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Semantic/SemanticTokensRangeEndpoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Semantic/SemanticTokensRangeEndpoint.cs index 5f3e72b28dc..fe2148bc212 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Semantic/SemanticTokensRangeEndpoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Semantic/SemanticTokensRangeEndpoint.cs @@ -6,11 +6,9 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.SemanticTokens; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.CodeAnalysis.Razor.Workspaces.Telemetry; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.Semantic; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Semantic/Services/LSPCSharpSemanticTokensProvider.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Semantic/Services/LSPCSharpSemanticTokensProvider.cs index 982197f8e19..3848cc5b75d 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Semantic/Services/LSPCSharpSemanticTokensProvider.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Semantic/Services/LSPCSharpSemanticTokensProvider.cs @@ -14,8 +14,6 @@ using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Razor.Workspaces.Protocol.SemanticTokens; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.AspNetCore.Razor.LanguageServer.Semantic; @@ -33,7 +31,7 @@ internal class LSPCSharpSemanticTokensProvider(LanguageServerFeatureOptions lang { var documentVersion = documentContext.Snapshot.Version; - using var _ = ListPool.GetPooledObject(out var csharpRangeList); + using var _ = ListPool.GetPooledObject(out var csharpRangeList); foreach (var span in csharpSpans) { csharpRangeList.Add(span.ToRange()); @@ -55,7 +53,7 @@ internal class LSPCSharpSemanticTokensProvider(LanguageServerFeatureOptions lang // Likely the server doesn't support the new endpoint, fallback to the original one if (csharpResponse?.Tokens is null && csharpRanges.Length > 1) { - var minimalRange = VsLspFactory.CreateRange(csharpRanges[0].Start, csharpRanges[^1].End); + var minimalRange = LspFactory.CreateRange(csharpRanges[0].Start, csharpRanges[^1].End); var newParams = new ProvideSemanticTokensRangesParams( parameter.TextDocument, diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SignatureHelp/SignatureHelpEndpoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SignatureHelp/SignatureHelpEndpoint.cs index e7c488771e3..b400757fd64 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SignatureHelp/SignatureHelpEndpoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SignatureHelp/SignatureHelpEndpoint.cs @@ -10,12 +10,9 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.SignatureHelp; -using SignatureHelp = VisualStudio.LanguageServer.Protocol.SignatureHelp; - [RazorLanguageServerEndpoint(Methods.TextDocumentSignatureHelpName)] internal sealed class SignatureHelpEndpoint( LanguageServerFeatureOptions languageServerFeatureOptions, @@ -23,7 +20,7 @@ internal sealed class SignatureHelpEndpoint( IClientConnection clientConnection, RazorLSPOptionsMonitor optionsMonitor, ILoggerFactory loggerProvider) - : AbstractRazorDelegatingEndpoint( + : AbstractRazorDelegatingEndpoint( languageServerFeatureOptions, documentMappingService, clientConnection, diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/DocumentSpellCheckEndpoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/DocumentSpellCheckEndpoint.cs index 3cd304c989a..c2cfa6a59ee 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/DocumentSpellCheckEndpoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/DocumentSpellCheckEndpoint.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts; using Microsoft.CodeAnalysis.Razor.SpellCheck; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.SpellCheck; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/LspCSharpSpellCheckRangeProvider.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/LspCSharpSpellCheckRangeProvider.cs index f0181c75da7..7e92261ae77 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/LspCSharpSpellCheckRangeProvider.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/LspCSharpSpellCheckRangeProvider.cs @@ -15,7 +15,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.SpellCheck; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.SpellCheck; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/WorkspaceSpellCheckEndpoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/WorkspaceSpellCheckEndpoint.cs index ae7a2195b0f..2b7ed9b8bfa 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/WorkspaceSpellCheckEndpoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/SpellCheck/WorkspaceSpellCheckEndpoint.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts; using Microsoft.AspNetCore.Razor.Threading; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.SpellCheck; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceDiagnosticsRefresher.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceDiagnosticsRefresher.cs index bde94393175..2693db34c80 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceDiagnosticsRefresher.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceDiagnosticsRefresher.cs @@ -5,11 +5,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Threading; namespace Microsoft.AspNetCore.Razor.LanguageServer; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceRootPathWatcher.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceRootPathWatcher.cs index d30f740078f..bed642cff5e 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceRootPathWatcher.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceRootPathWatcher.cs @@ -10,11 +10,11 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.CommonLanguageServerProtocol.Framework; +using FileSystemWatcher = System.IO.FileSystemWatcher; namespace Microsoft.AspNetCore.Razor.LanguageServer; @@ -160,7 +160,7 @@ private async ValueTask ProcessBatchAsync(ImmutableArray<(string, RazorFileChang } } - public async Task OnInitializedAsync(ILspServices services, CancellationToken cancellationToken) + public async Task OnInitializedAsync(CancellationToken cancellationToken) { // Initialized request, this occurs once the server and client have agreed on what sort of features they both support. It only happens once. diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceSemanticTokensRefreshNotifier.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceSemanticTokensRefreshNotifier.cs index b0930093fa7..a72a3b7c8b9 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceSemanticTokensRefreshNotifier.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WorkspaceSemanticTokensRefreshNotifier.cs @@ -5,9 +5,8 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.VisualStudio.Threading; namespace Microsoft.AspNetCore.Razor.LanguageServer; diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagEndpoint.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagEndpoint.cs index 2b2df489b6b..7b4e9f0dd5f 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagEndpoint.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagEndpoint.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.WrapWithTag; @@ -41,19 +40,31 @@ public TextDocumentIdentifier GetTextDocumentIdentifier(WrapWithTagParams reques cancellationToken.ThrowIfCancellationRequested(); var codeDocument = await documentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); - if (codeDocument.IsUnsupported()) - { - _logger.LogWarning($"Failed to retrieve generated output for document {request.TextDocument.Uri}."); - return null; - } + var sourceText = codeDocument.Source.Text; - var sourceText = await documentContext.GetSourceTextAsync(cancellationToken).ConfigureAwait(false); if (request.Range?.Start is not { } start || !sourceText.TryGetAbsoluteIndex(start, out var hostDocumentIndex)) { return null; } + // First thing we do is make sure we start at a non-whitespace character. This is important because in some + // situations the whitespace can be technically C#, but move one character to the right and it's HTML. eg + // + // @if (true) { + // |

+ // } + // + // Limiting this to only whitespace on the same line, as it's not clear what user expectation would be otherwise. + var requestSpan = sourceText.GetTextSpan(request.Range); + if (sourceText.TryGetFirstNonWhitespaceOffset(requestSpan, out var offset, out var newLineCount) && + newLineCount == 0) + { + request.Range.Start.Character += offset; + requestSpan = sourceText.GetTextSpan(request.Range); + hostDocumentIndex += offset; + } + // Since we're at the start of the selection, lets prefer the language to the right of the cursor if possible. // That way with the following situation: // @@ -89,13 +100,12 @@ public TextDocumentIdentifier GetTextDocumentIdentifier(WrapWithTagParams reques //

[|@currentCount|]

var tree = await documentContext.GetSyntaxTreeAsync(cancellationToken).ConfigureAwait(false); - var requestSpan = sourceText.GetTextSpan(request.Range); var node = tree.Root.FindNode(requestSpan, includeWhitespace: false, getInnermostNodeForTie: true); if (node?.FirstAncestorOrSelf() is { Parent: CSharpCodeBlockSyntax codeBlock } && - (requestSpan == codeBlock.FullSpan || requestSpan.Length == 0)) + (requestSpan == codeBlock.Span || requestSpan.Length == 0)) { // Pretend we're in Html so the rest of the logic can continue - request.Range = sourceText.GetRange(codeBlock.FullSpan); + request.Range = sourceText.GetRange(codeBlock.Span); languageKind = RazorLanguageKind.Html; } } diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagParams.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagParams.cs index 41700e4a53e..6bf162f8f1a 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagParams.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagParams.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.WrapWithTag; @@ -21,7 +20,7 @@ internal class WrapWithTagParams(TextDocumentIdentifier textDocument) /// Gets or sets the selection range to be wrapped. /// [JsonPropertyName("_vs_range")] - public Range? Range { get; set; } + public LspRange? Range { get; set; } /// /// Gets or sets the wrapping tag name. diff --git a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagResponse.cs b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagResponse.cs index 1f580332c7d..5d9eb3d1f6c 100644 --- a/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagResponse.cs +++ b/src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/WrapWithTag/WrapWithTagResponse.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.WrapWithTag; @@ -15,7 +14,7 @@ internal class WrapWithTagResponse /// Gets or sets the range of the wrapping tag. /// [JsonPropertyName("_vs_tagRange")] - public Range? TagRange { get; set; } + public LspRange? TagRange { get; set; } /// /// Gets or sets the text edits. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AbstractFilePathService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AbstractFilePathService.cs index 4e6efb7477f..4171de809e7 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AbstractFilePathService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AbstractFilePathService.cs @@ -4,7 +4,7 @@ using System; using System.Diagnostics; using System.Text; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.Workspaces; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/AutoClosingTagOnAutoInsertProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/AutoClosingTagOnAutoInsertProvider.cs index c532fa188c6..6c3e0fe6e5c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/AutoClosingTagOnAutoInsertProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/AutoClosingTagOnAutoInsertProvider.cs @@ -7,7 +7,7 @@ using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Syntax; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.CodeAnalysis.Text; using RazorSyntaxNode = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxNode; @@ -59,7 +59,7 @@ public bool TryResolveInsertion( if (tagNameWithClosingBehavior.AutoClosingBehavior == AutoClosingBehavior.EndTag) { var formatForEndTag = InsertTextFormat.Snippet; - var editForEndTag = VsLspFactory.CreateTextEdit(position, $"$0"); + var editForEndTag = LspFactory.CreateTextEdit(position, $"$0"); autoInsertEdit = new() { @@ -76,7 +76,7 @@ public bool TryResolveInsertion( // Need to replace the `>` with ' />$0' or '/>$0' depending on if there's prefixed whitespace. var insertionText = char.IsWhiteSpace(sourceText[afterCloseAngleIndex - 2]) ? "/" : " /"; - var edit = VsLspFactory.CreateTextEdit(position.Line, position.Character - 1, insertionText); + var edit = LspFactory.CreateTextEdit(position.Line, position.Character - 1, insertionText); autoInsertEdit = new() { @@ -153,10 +153,9 @@ private static bool TryGetTagHelperAutoClosingBehavior(TagHelperBinding bindingR { var resolvedTagStructure = TagStructure.Unspecified; - foreach (var descriptor in bindingResult.Descriptors) + foreach (var boundRulesInfo in bindingResult.AllBoundRules) { - var tagMatchingRules = bindingResult.Mappings[descriptor]; - foreach (var tagMatchingRule in tagMatchingRules) + foreach (var tagMatchingRule in boundRulesInfo.Rules) { if (tagMatchingRule.TagStructure == TagStructure.Unspecified) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/AutoInsertService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/AutoInsertService.cs index d6b6e3e3a47..4e4291a5dea 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/AutoInsertService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/AutoInsertService.cs @@ -8,7 +8,6 @@ using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.AutoInsert; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/CloseTextTagOnAutoInsertProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/CloseTextTagOnAutoInsertProvider.cs index b2a791b6881..5cf92b55ea8 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/CloseTextTagOnAutoInsertProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/CloseTextTagOnAutoInsertProvider.cs @@ -7,7 +7,7 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Legacy; using Microsoft.AspNetCore.Razor.Language.Syntax; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis.Razor.AutoInsert; @@ -29,7 +29,7 @@ public bool TryResolveInsertion( // This is a text tag. var format = InsertTextFormat.Snippet; - var edit = VsLspFactory.CreateTextEdit(position, $"$0"); + var edit = LspFactory.CreateTextEdit(position, $"$0"); autoInsertEdit = new() { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IAutoInsertService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IAutoInsertService.cs index 8bad0493d0f..81609e43cf6 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IAutoInsertService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IAutoInsertService.cs @@ -4,7 +4,6 @@ using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.AutoInsert; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IOnAutoInsertProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IOnAutoInsertProvider.cs index 9d1db1b72ad..12278f27fe7 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IOnAutoInsertProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IOnAutoInsertProvider.cs @@ -3,7 +3,6 @@ using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.AutoInsert; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/CSharpCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/CSharpCodeActionResolver.cs index 46f23c36e7a..5102d51d85a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/CSharpCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/CSharpCodeActionResolver.cs @@ -8,7 +8,6 @@ using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; @@ -47,7 +46,7 @@ public async Task ResolveAsync( cancellationToken.ThrowIfCancellationRequested(); var csharpSourceText = await documentContext.GetCSharpSourceTextAsync(cancellationToken).ConfigureAwait(false); - var csharpTextChanges = textDocumentEdit.Edits.SelectAsArray(csharpSourceText.GetTextChange); + var csharpTextChanges = textDocumentEdit.Edits.SelectAsArray(e => csharpSourceText.GetTextChange((TextEdit)e)); // Remaps the text edits from the generated C# to the razor file, // as well as applying appropriate formatting. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/ICSharpCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/ICSharpCodeActionResolver.cs index 36d4ae4a03a..2dba2d424c4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/ICSharpCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/ICSharpCodeActionResolver.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/TypeAccessibilityCodeActionProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/TypeAccessibilityCodeActionProvider.cs index d60297bbc00..1163f0a4aba 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/TypeAccessibilityCodeActionProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/TypeAccessibilityCodeActionProvider.cs @@ -19,9 +19,6 @@ using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using LspDiagnostic = Microsoft.VisualStudio.LanguageServer.Protocol.Diagnostic; -using LspDiagnosticSeverity = Microsoft.VisualStudio.LanguageServer.Protocol.DiagnosticSeverity; namespace Microsoft.CodeAnalysis.Razor.CodeActions; @@ -267,7 +264,7 @@ private static RazorVSInternalCodeAction CreateFQNCodeAction( { var codeDocumentIdentifier = new OptionalVersionedTextDocumentIdentifier() { Uri = context.Request.TextDocument.Uri }; - var fqnTextEdit = VsLspFactory.CreateTextEdit(fqnDiagnostic.Range, fullyQualifiedName); + var fqnTextEdit = LspFactory.CreateTextEdit(fqnDiagnostic.Range, fullyQualifiedName); var fqnWorkspaceEditDocumentChange = new TextDocumentEdit() { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/UnformattedRemappingCSharpCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/UnformattedRemappingCSharpCodeActionResolver.cs index 56c2329a7fc..2bb8db0e6d4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/UnformattedRemappingCSharpCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CSharp/UnformattedRemappingCSharpCodeActionResolver.cs @@ -9,7 +9,6 @@ using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; @@ -49,7 +48,7 @@ public async Task ResolveAsync( return codeAction; } - var textEdit = textDocumentEdit.Edits.FirstOrDefault(); + var textEdit = (TextEdit)textDocumentEdit.Edits.FirstOrDefault(); if (textEdit is null) { // No text edit available @@ -57,10 +56,6 @@ public async Task ResolveAsync( } var codeDocument = await documentContext.Snapshot.GetGeneratedOutputAsync(cancellationToken).ConfigureAwait(false); - if (codeDocument.IsUnsupported()) - { - return codeAction; - } if (!_documentMappingService.TryMapToHostDocumentRange(codeDocument.GetCSharpDocument(), textEdit.Range, MappingBehavior.Inclusive, out var originalRange)) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CodeActionResolveService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CodeActionResolveService.cs index d842c00bed1..c66cd78dccb 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CodeActionResolveService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CodeActionResolveService.cs @@ -16,7 +16,6 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CodeActionsService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CodeActionsService.cs index 920086be4c8..221da57e574 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CodeActionsService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/CodeActionsService.cs @@ -12,14 +12,13 @@ using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.DocumentMapping; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; @@ -102,11 +101,6 @@ void ConvertCodeActionsToSumType(ImmutableArray codeA CancellationToken cancellationToken) { var codeDocument = await documentSnapshot.GetGeneratedOutputAsync(cancellationToken).ConfigureAwait(false); - if (codeDocument.IsUnsupported()) - { - return null; - } - var sourceText = codeDocument.Source.Text; if (!sourceText.TryGetAbsoluteIndex(request.Range.Start, out var startLocation)) diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/HtmlCodeActionProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/HtmlCodeActionProvider.cs index 9dc00f1a2c0..03c9f846b6c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/HtmlCodeActionProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/HtmlCodeActionProvider.cs @@ -6,12 +6,11 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Formatting; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/HtmlCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/HtmlCodeActionResolver.cs index 538b01ee571..919ed1ba1ef 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/HtmlCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/HtmlCodeActionResolver.cs @@ -6,7 +6,6 @@ using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/IHtmlCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/IHtmlCodeActionResolver.cs index e6ed1800723..6bbb4e81ddc 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/IHtmlCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Html/IHtmlCodeActionResolver.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/ICodeActionResolveService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/ICodeActionResolveService.cs index a93ee1a57c6..87cdfeddb5e 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/ICodeActionResolveService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/ICodeActionResolveService.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/ICodeActionsService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/ICodeActionsService.cs index 59f8666c4da..72da31b3aa2 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/ICodeActionsService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/ICodeActionsService.cs @@ -4,10 +4,9 @@ using System; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/AddUsingsCodeActionParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/AddUsingsCodeActionParams.cs index df5b4e5d055..30726570106 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/AddUsingsCodeActionParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/AddUsingsCodeActionParams.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions.Models; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/CodeActionExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/CodeActionExtensions.cs index 088fd58e3c4..6b15aab3a90 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/CodeActionExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/CodeActionExtensions.cs @@ -7,7 +7,6 @@ using System.Text.Json.Nodes; using Microsoft.AspNetCore.Razor; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions.Models; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/RazorCodeActionResolutionParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/RazorCodeActionResolutionParams.cs index d3006b3432d..ba4c49ea9f9 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/RazorCodeActionResolutionParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/RazorCodeActionResolutionParams.cs @@ -4,7 +4,6 @@ using System; using System.Text.Json.Serialization; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions.Models; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/RazorVSInternalCodeAction.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/RazorVSInternalCodeAction.cs index 40fae3fa3f5..a3ac2a7422c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/RazorVSInternalCodeAction.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Models/RazorVSInternalCodeAction.cs @@ -3,7 +3,6 @@ using System.Runtime.Serialization; using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions.Models; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/AddUsingsCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/AddUsingsCodeActionResolver.cs index fffc8ec4b55..f0dbfd42107 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/AddUsingsCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/AddUsingsCodeActionResolver.cs @@ -6,12 +6,10 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Language; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; @@ -30,12 +28,8 @@ internal class AddUsingsCodeActionResolver : IRazorCodeActionResolver var documentSnapshot = documentContext.Snapshot; var codeDocument = await documentSnapshot.GetGeneratedOutputAsync(cancellationToken).ConfigureAwait(false); - if (codeDocument.IsUnsupported()) - { - return null; - } - var codeDocumentIdentifier = new OptionalVersionedTextDocumentIdentifier() { Uri = documentContext.Uri }; + return AddUsingsHelper.CreateAddUsingWorkspaceEdit(actionParams.Namespace, actionParams.AdditionalEdit, codeDocument, codeDocumentIdentifier); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/CodeBlockService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/CodeBlockService.cs index a68c3e0d896..c2c99724bc4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/CodeBlockService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/CodeBlockService.cs @@ -8,7 +8,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions.Razor; @@ -59,10 +58,10 @@ public static TextEdit[] CreateFormattedTextEdit(RazorCodeDocument code, string codeBlockStartText = $"{Environment.NewLine}{codeBlockStartText}"; } - var eofRange = VsLspFactory.CreateZeroWidthRange(lastCharacterLocation.LineNumber, insertCharacterIndex); - var start = VsLspFactory.CreateTextEdit(eofRange, codeBlockStartText); - var method = VsLspFactory.CreateTextEdit(eofRange, indentedMethod); - var end = VsLspFactory.CreateTextEdit(eofRange, Environment.NewLine + "}"); + var eofRange = LspFactory.CreateZeroWidthRange(lastCharacterLocation.LineNumber, insertCharacterIndex); + var start = LspFactory.CreateTextEdit(eofRange, codeBlockStartText); + var method = LspFactory.CreateTextEdit(eofRange, indentedMethod); + var end = LspFactory.CreateTextEdit(eofRange, Environment.NewLine + "}"); return [start, method, end]; } @@ -92,7 +91,7 @@ public static TextEdit[] CreateFormattedTextEdit(RazorCodeDocument code, string ? closeBraceLocation.CharacterIndex : 0; - return [VsLspFactory.CreateTextEdit(insertLineLocation.LineIndex, insertCharacter, formattedGeneratedMethod)]; + return [LspFactory.CreateTextEdit(insertLineLocation.LineIndex, insertCharacter, formattedGeneratedMethod)]; } private static string FormatMethodInCodeBlock( diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ComponentAccessibilityCodeActionProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ComponentAccessibilityCodeActionProvider.cs index 3f2666fb432..9e9fef93798 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ComponentAccessibilityCodeActionProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ComponentAccessibilityCodeActionProvider.cs @@ -13,13 +13,12 @@ using Microsoft.AspNetCore.Razor.Language.Components; using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.CodeActions.Razor; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.Editor.Razor; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; @@ -82,7 +81,7 @@ public async Task> ProvideAsync(RazorC private static bool IsApplicableTag(IStartTagSyntaxNode startTag) { - if (startTag.Name.FullWidth == 0) + if (startTag.Name.Width == 0) { // Empty tag name, we shouldn't show a light bulb just to create an empty file. return false; @@ -133,7 +132,7 @@ private static async Task AddComponentAccessFromTagAsync(RazorCodeActionContext var haveAddedNonQualifiedFix = false; // First see if there are any components that match in name, but not case, without qualification - foreach (var t in context.CodeDocument.GetTagHelperContext().TagHelpers) + foreach (var t in context.CodeDocument.GetRequiredTagHelperContext().TagHelpers) { if (t.TagMatchingRules is [{ CaseSensitive: true } rule] && rule.TagName.Equals(startTag.Name.Content, StringComparison.OrdinalIgnoreCase) && @@ -280,17 +279,17 @@ private static bool SatisfiesRules(ImmutableArray tag private static WorkspaceEdit CreateRenameTagEdit(RazorCodeActionContext context, IStartTagSyntaxNode startTag, string newTagName) { - using var textEdits = new PooledArrayBuilder(); + using var textEdits = new PooledArrayBuilder>(); var codeDocumentIdentifier = new OptionalVersionedTextDocumentIdentifier() { Uri = context.Request.TextDocument.Uri }; - var startTagTextEdit = VsLspFactory.CreateTextEdit(startTag.Name.GetRange(context.CodeDocument.Source), newTagName); + var startTagTextEdit = LspFactory.CreateTextEdit(startTag.Name.GetRange(context.CodeDocument.Source), newTagName); textEdits.Add(startTagTextEdit); var endTag = (startTag.Parent as MarkupElementSyntax)?.EndTag; if (endTag != null) { - var endTagTextEdit = VsLspFactory.CreateTextEdit(endTag.Name.GetRange(context.CodeDocument.Source), newTagName); + var endTagTextEdit = LspFactory.CreateTextEdit(endTag.Name.GetRange(context.CodeDocument.Source), newTagName); textEdits.Add(endTagTextEdit); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/CreateComponentCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/CreateComponentCodeActionResolver.cs index 245a6863414..9809f966c58 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/CreateComponentCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/CreateComponentCodeActionResolver.cs @@ -16,7 +16,6 @@ using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; @@ -34,22 +33,18 @@ internal class CreateComponentCodeActionResolver(LanguageServerFeatureOptions la return null; } - var codeDocument = await documentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); - if (codeDocument.IsUnsupported()) + if (!documentContext.FileKind.IsComponent()) { return null; } - if (!FileKinds.IsComponent(codeDocument.FileKind)) - { - return null; - } + var codeDocument = await documentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); // VS Code in Windows expects path to start with '/' var updatedPath = _languageServerFeatureOptions.ReturnCodeActionAndRenamePathsWithPrefixedSlash && !actionParams.Path.StartsWith("/") ? '/' + actionParams.Path : actionParams.Path; - var newComponentUri = VsLspFactory.CreateFilePathUri(updatedPath); + var newComponentUri = LspFactory.CreateFilePathUri(updatedPath); using var documentChanges = new PooledArrayBuilder>(); documentChanges.Add(new CreateFile() { Uri = newComponentUri }); @@ -76,7 +71,7 @@ private static void TryAddNamespaceDirective(RazorCodeDocument codeDocument, Uri documentChanges.Add(new TextDocumentEdit { TextDocument = documentIdentifier, - Edits = [VsLspFactory.CreateTextEdit(position: (0, 0), namespaceDirective.GetContent())] + Edits = [LspFactory.CreateTextEdit(position: (0, 0), namespaceDirective.GetContent())] }); } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToCodeBehindCodeActionProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToCodeBehindCodeActionProvider.cs index 90c7520da09..c044a817dc1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToCodeBehindCodeActionProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToCodeBehindCodeActionProvider.cs @@ -31,7 +31,7 @@ public Task> ProvideAsync(RazorCodeAct return SpecializedTasks.EmptyImmutableArray(); } - if (!FileKinds.IsComponent(context.CodeDocument.FileKind)) + if (!context.CodeDocument.FileKind.IsComponent()) { return SpecializedTasks.EmptyImmutableArray(); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToCodeBehindCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToCodeBehindCodeActionResolver.cs index 0bc79eea905..079ab783f7e 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToCodeBehindCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToCodeBehindCodeActionResolver.cs @@ -14,9 +14,9 @@ using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; @@ -37,19 +37,14 @@ internal class ExtractToCodeBehindCodeActionResolver( return null; } - var path = FilePathNormalizer.Normalize(documentContext.Uri.GetAbsoluteOrUNCPath()); - - var codeDocument = await documentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); - if (codeDocument.IsUnsupported()) + if (!documentContext.FileKind.IsComponent()) { return null; } - if (!FileKinds.IsComponent(codeDocument.FileKind)) - { - return null; - } + var codeDocument = await documentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); + var path = FilePathNormalizer.Normalize(documentContext.Uri.GetAbsoluteOrUNCPath()); var codeBehindPath = FileUtilities.GenerateUniquePath(path, $"{Path.GetExtension(path)}.cs"); // VS Code in Windows expects path to start with '/' @@ -57,7 +52,7 @@ internal class ExtractToCodeBehindCodeActionResolver( ? '/' + codeBehindPath : codeBehindPath; - var codeBehindUri = VsLspFactory.CreateFilePathUri(updatedCodeBehindPath); + var codeBehindUri = LspFactory.CreateFilePathUri(updatedCodeBehindPath); var text = await documentContext.GetSourceTextAsync(cancellationToken).ConfigureAwait(false); @@ -78,12 +73,12 @@ internal class ExtractToCodeBehindCodeActionResolver( new TextDocumentEdit { TextDocument = codeDocumentIdentifier, - Edits = [VsLspFactory.CreateTextEdit(removeRange, string.Empty)] + Edits = [LspFactory.CreateTextEdit(removeRange, string.Empty)] }, new TextDocumentEdit { TextDocument = codeBehindDocumentIdentifier, - Edits = [VsLspFactory.CreateTextEdit(position: (0, 0), codeBehindContent)] + Edits = [LspFactory.CreateTextEdit(position: (0, 0), codeBehindContent)] } }; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToComponentCodeActionProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToComponentCodeActionProvider.cs index 3e2b583614d..8e85a84b016 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToComponentCodeActionProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToComponentCodeActionProvider.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions.Razor; @@ -35,7 +34,7 @@ public Task> ProvideAsync(RazorCodeAct return SpecializedTasks.EmptyImmutableArray(); } - if (!FileKinds.IsComponent(context.CodeDocument.FileKind)) + if (!context.CodeDocument.FileKind.IsComponent()) { return SpecializedTasks.EmptyImmutableArray(); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToComponentCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToComponentCodeActionResolver.cs index ab8dc39c773..d5461f98575 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToComponentCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/ExtractToComponentCodeActionResolver.cs @@ -16,9 +16,9 @@ using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions.Razor; @@ -43,10 +43,6 @@ internal class ExtractToComponentCodeActionResolver( } var componentDocument = await documentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); - if (componentDocument.IsUnsupported()) - { - return null; - } var text = componentDocument.Source.Text; var path = FilePathNormalizer.Normalize(documentContext.Uri.GetAbsoluteOrUNCPath()); @@ -60,7 +56,7 @@ internal class ExtractToComponentCodeActionResolver( ? '/' + componentPath : componentPath; - var newComponentUri = VsLspFactory.CreateFilePathUri(componentPath); + var newComponentUri = LspFactory.CreateFilePathUri(componentPath); using var _ = StringBuilderPool.GetPooledObject(out var builder); @@ -71,7 +67,7 @@ internal class ExtractToComponentCodeActionResolver( var usingDirectives = syntaxTree.GetUsingDirectives(); foreach (var usingDirective in usingDirectives) { - builder.AppendLine(usingDirective.ToFullString()); + builder.AppendLine(usingDirective.ToString()); } // If any using directives were added, add a newline before the extracted content. @@ -108,7 +104,7 @@ internal class ExtractToComponentCodeActionResolver( new TextEdit { NewText = builder.ToString(), - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, } ], } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/GenerateMethodCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/GenerateMethodCodeActionResolver.cs index d40c8594c9a..2a484576b9a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/GenerateMethodCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/GenerateMethodCodeActionResolver.cs @@ -11,7 +11,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; @@ -20,9 +19,9 @@ using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions.Razor; @@ -84,7 +83,7 @@ razorClassName is null || cancellationToken).ConfigureAwait(false); } - var codeBehindUri = VsLspFactory.CreateFilePathUri(codeBehindPath); + var codeBehindUri = LspFactory.CreateFilePathUri(codeBehindPath); var codeBehindTextDocumentIdentifier = new OptionalVersionedTextDocumentIdentifier() { Uri = codeBehindUri }; @@ -98,7 +97,7 @@ razorClassName is null || classLocationLineSpan.StartLinePosition.Character, text); - var edit = VsLspFactory.CreateTextEdit( + var edit = LspFactory.CreateTextEdit( line: classLocationLineSpan.EndLinePosition.Line, character: 0, $"{formattedMethod}{Environment.NewLine}"); @@ -108,7 +107,7 @@ razorClassName is null || var codeBehindTextDocEdit = new TextDocumentEdit() { TextDocument = codeBehindTextDocumentIdentifier, - Edits = result ?? [edit] + Edits = [.. result ?? [edit]] }; return new WorkspaceEdit() { DocumentChanges = new[] { codeBehindTextDocEdit } }; @@ -140,7 +139,7 @@ private async Task GenerateMethodInCodeBlockAsync( // just get the simplified text that comes back from Roslyn. var classLocationLineSpan = @class.GetLocation().GetLineSpan(); - var tempTextEdit = VsLspFactory.CreateTextEdit( + var tempTextEdit = LspFactory.CreateTextEdit( line: classLocationLineSpan.EndLinePosition.Line, character: 0, editToSendToRoslyn.NewText); @@ -167,7 +166,7 @@ private async Task GenerateMethodInCodeBlockAsync( .Replace(FormattingUtilities.InitialIndent, string.Empty) .Replace(FormattingUtilities.Indent, string.Empty); - var remappedEdit = VsLspFactory.CreateTextEdit(remappedRange, unformattedMethodSignature); + var remappedEdit = LspFactory.CreateTextEdit(remappedRange, unformattedMethodSignature); var result = await _roslynCodeActionHelpers.GetSimplifiedTextEditsAsync(documentContext, codeBehindUri: null, remappedEdit, cancellationToken).ConfigureAwait(false); if (result is not null) @@ -192,7 +191,7 @@ private async Task GenerateMethodInCodeBlockAsync( var razorTextDocEdit = new TextDocumentEdit() { TextDocument = new OptionalVersionedTextDocumentIdentifier() { Uri = documentContext.Uri }, - Edits = edits, + Edits = [.. edits], }; return new WorkspaceEdit() { DocumentChanges = new[] { razorTextDocEdit } }; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/IRazorCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/IRazorCodeActionResolver.cs index d9418b20570..bbbdf1f31c1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/IRazorCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/IRazorCodeActionResolver.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/IRoslynCodeActionHelpers.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/IRoslynCodeActionHelpers.cs index 71893c035d3..0e6a132b8f0 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/IRoslynCodeActionHelpers.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/IRoslynCodeActionHelpers.cs @@ -4,9 +4,7 @@ using System; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/PromoteUsingCodeActionProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/PromoteUsingCodeActionProvider.cs index 481da94603a..7b5d6b6ffcc 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/PromoteUsingCodeActionProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/PromoteUsingCodeActionProvider.cs @@ -68,10 +68,10 @@ public Task> ProvideAsync(RazorCodeAct return Task.FromResult>([action]); } - public static string GetImportsFileName(string fileKind) + public static string GetImportsFileName(RazorFileKind fileKind) { - return FileKinds.IsLegacy(fileKind) - ? MvcImportProjectFeature.ImportsFileName - : ComponentMetadata.ImportsFileName; + return fileKind.IsLegacy() + ? MvcImportProjectFeature.ImportsFileName + : ComponentMetadata.ImportsFileName; } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/PromoteUsingCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/PromoteUsingCodeActionResolver.cs index 5e4291b35f5..a7249e8bf82 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/PromoteUsingCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/PromoteUsingCodeActionResolver.cs @@ -8,14 +8,13 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; @@ -40,7 +39,7 @@ internal class PromoteUsingCodeActionResolver(IFileSystem fileSystem) : IRazorCo var file = FilePathNormalizer.Normalize(documentContext.Uri.GetAbsoluteOrUNCPath()); var folder = Path.GetDirectoryName(file).AssumeNotNull(); var importsFile = Path.GetFullPath(Path.Combine(folder, "..", importsFileName)); - var importFileUri = VsLspFactory.CreateFilePathUri(importsFile); + var importFileUri = LspFactory.CreateFilePathUri(importsFile); using var edits = new PooledArrayBuilder>(); @@ -67,7 +66,7 @@ internal class PromoteUsingCodeActionResolver(IFileSystem fileSystem) : IRazorCo edits.Add(new TextDocumentEdit { TextDocument = new OptionalVersionedTextDocumentIdentifier() { Uri = importFileUri }, - Edits = [VsLspFactory.CreateTextEdit(insertLocation, textToInsert)] + Edits = [LspFactory.CreateTextEdit(insertLocation, textToInsert)] }); var removeRange = sourceText.GetRange(actionParams.RemoveStart, actionParams.RemoveEnd); @@ -75,7 +74,7 @@ internal class PromoteUsingCodeActionResolver(IFileSystem fileSystem) : IRazorCo edits.Add(new TextDocumentEdit { TextDocument = new OptionalVersionedTextDocumentIdentifier() { Uri = documentContext.Uri }, - Edits = [VsLspFactory.CreateTextEdit(removeRange, string.Empty)] + Edits = [LspFactory.CreateTextEdit(removeRange, string.Empty)] }); return new WorkspaceEdit diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/RazorCodeActionFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/RazorCodeActionFactory.cs index 2f7bb59b582..052f323bc45 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/RazorCodeActionFactory.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/RazorCodeActionFactory.cs @@ -5,7 +5,6 @@ using System.Text.Json; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions.Razor; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/WrapAttributesCodeActionResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/WrapAttributesCodeActionResolver.cs index 772be95a93d..f65c1e28641 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/WrapAttributesCodeActionResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/Razor/WrapAttributesCodeActionResolver.cs @@ -11,7 +11,6 @@ using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.CodeActions; @@ -29,13 +28,13 @@ internal class WrapAttributesCodeActionResolver : IRazorCodeActionResolver var indentationString = FormattingUtilities.GetIndentationString(actionParams.IndentSize, options.InsertSpaces, options.TabSize); var sourceText = await documentContext.GetSourceTextAsync(cancellationToken).ConfigureAwait(false); - using var edits = new PooledArrayBuilder(); + using var edits = new PooledArrayBuilder>(); foreach (var position in actionParams.NewLinePositions) { var start = sourceText.GetLinePosition(FindPreviousNonWhitespacePosition(sourceText, position) + 1); var end = sourceText.GetLinePosition(position); - edits.Add(VsLspFactory.CreateTextEdit(start, end, Environment.NewLine + indentationString)); + edits.Add(LspFactory.CreateTextEdit(start, end, Environment.NewLine + indentationString)); } var tde = new TextDocumentEdit diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/RazorCodeActionContext.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/RazorCodeActionContext.cs index 3d5f054e7cc..65ee7d71706 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/RazorCodeActionContext.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/CodeActions/RazorCodeActionContext.cs @@ -3,7 +3,7 @@ using System; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; using Microsoft.CodeAnalysis.Text; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/AggregateCompletionItemResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/AggregateCompletionItemResolver.cs index a77413cddb7..267b39e6daf 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/AggregateCompletionItemResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/AggregateCompletionItemResolver.cs @@ -10,7 +10,6 @@ using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Tooltip; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionItemResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionItemResolver.cs index 396585f9723..fae961fafb1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionItemResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionItemResolver.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Tooltip; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListCache.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListCache.cs index 00ec6876cc1..f2ca83547a1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListCache.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListCache.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Diagnostics.CodeAnalysis; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListMerger.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListMerger.cs index 78b3468297f..1073b73b7a0 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListMerger.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListMerger.cs @@ -8,7 +8,6 @@ using System.Linq; using System.Text.Json; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion; @@ -20,7 +19,7 @@ internal static class CompletionListMerger [return: NotNullIfNotNull(nameof(razorCompletionList))] [return: NotNullIfNotNull(nameof(delegatedCompletionList))] - public static VSInternalCompletionList? Merge(VSInternalCompletionList? razorCompletionList, VSInternalCompletionList? delegatedCompletionList) + public static RazorVSInternalCompletionList? Merge(RazorVSInternalCompletionList? razorCompletionList, RazorVSInternalCompletionList? delegatedCompletionList) { if (razorCompletionList is null) { @@ -47,7 +46,7 @@ internal static class CompletionListMerger // We don't fully support merging edit ranges currently. Razor doesn't currently use them so delegated completion lists always win. var mergedItemDefaultsEditRange = razorCompletionList.ItemDefaults?.EditRange ?? delegatedCompletionList.ItemDefaults?.EditRange; - var mergedCompletionList = new VSInternalCompletionList() + var mergedCompletionList = new RazorVSInternalCompletionList() { CommitCharacters = mergedCommitCharacters, Data = mergedData, @@ -142,7 +141,7 @@ private static void TrySplitJsonElement(object data, ref PooledArrayBuilder? completionItemsToStopInheriting; - VSInternalCompletionList? completionListToStopInheriting; + RazorVSInternalCompletionList? completionListToStopInheriting; // Decide which completion list has more items that benefit from "inheriting" commit characters. if (inheritableCommitCharacterCompletionsA.Length >= inheritableCommitCharacterCompletionsB.Length) @@ -206,7 +205,7 @@ private static void EnsureMergeableCommitCharacters(VSInternalCompletionList com } } - private static ImmutableArray GetCompletionsThatDoNotSpecifyCommitCharacters(VSInternalCompletionList completionList) + private static ImmutableArray GetCompletionsThatDoNotSpecifyCommitCharacters(RazorVSInternalCompletionList completionList) { using var inheritableCompletions = new PooledArrayBuilder(); for (var i = 0; i < completionList.Items.Length; i++) diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListOptimizer.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListOptimizer.cs index cdf9a3766fe..4e09baf97c9 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListOptimizer.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionListOptimizer.cs @@ -3,26 +3,23 @@ using System.Collections.Generic; using System.Linq; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using AliasedVSCommitCharacters = Microsoft.VisualStudio.LanguageServer.Protocol.SumType; +using AliasedVSCommitCharacters = Roslyn.LanguageServer.Protocol.SumType; namespace Microsoft.CodeAnalysis.Razor.Completion; internal static class CompletionListOptimizer { - public static VSInternalCompletionList Optimize(VSInternalCompletionList completionList, VSInternalCompletionSetting? completionCapability) + public static RazorVSInternalCompletionList Optimize(RazorVSInternalCompletionList completionList, VSInternalCompletionSetting? completionCapability) { if (completionCapability is not null) { completionList = OptimizeCommitCharacters(completionList, completionCapability); } - // We wrap the pre-existing completion list with an optimized completion list to better control serialization/deserialization - var optimizedCompletionList = new OptimizedVSCompletionList(completionList); - return optimizedCompletionList; + return completionList; } - private static VSInternalCompletionList OptimizeCommitCharacters(VSInternalCompletionList completionList, VSInternalCompletionSetting completionCapability) + private static RazorVSInternalCompletionList OptimizeCommitCharacters(RazorVSInternalCompletionList completionList, VSInternalCompletionSetting completionCapability) { var completionListCapability = completionCapability.CompletionList; if (completionListCapability?.CommitCharacters != true) @@ -35,7 +32,7 @@ private static VSInternalCompletionList OptimizeCommitCharacters(VSInternalCompl return completionList; } - private static VSInternalCompletionList PromoteVSCommonCommitCharactersOntoList(VSInternalCompletionList completionList) + private static RazorVSInternalCompletionList PromoteVSCommonCommitCharactersOntoList(RazorVSInternalCompletionList completionList) { (AliasedVSCommitCharacters VsCommitCharacters, List AssociatedCompletionItems)? mostUsedCommitCharacterToItems = null; var commitCharacterMap = new Dictionary>(AliasedVSCommitCharactersComparer.Instance); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionTriggerAndCommitCharacters.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionTriggerAndCommitCharacters.cs index dc7e482aebd..1776660768f 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionTriggerAndCommitCharacters.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionTriggerAndCommitCharacters.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Collections.Immutable; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/DelegatedCompletionHelper.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/DelegatedCompletionHelper.cs index 6b460666425..c3d4632f800 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/DelegatedCompletionHelper.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/DelegatedCompletionHelper.cs @@ -7,7 +7,6 @@ using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.Completion; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion.Delegation; @@ -93,8 +92,8 @@ internal static class DelegatedCompletionHelper /// /// Possibly modified completion response. /// - public static VSInternalCompletionList RewriteCSharpResponse( - VSInternalCompletionList? delegatedResponse, + public static RazorVSInternalCompletionList RewriteCSharpResponse( + RazorVSInternalCompletionList? delegatedResponse, int absoluteIndex, RazorCodeDocument codeDocument, Position projectedPosition, @@ -106,7 +105,7 @@ public static VSInternalCompletionList RewriteCSharpResponse( // list. When a user is typing quickly, the delegated request from the first keystroke will fail to synchronize, // so if we return a "complete" list then the query won't re-query us for completion once the typing stops/slows // so we'd only ever return Razor completion items. - return new VSInternalCompletionList() { IsIncomplete = true, Items = [] }; + return new RazorVSInternalCompletionList() { IsIncomplete = true, Items = [] }; } var rewrittenResponse = delegatedResponse; @@ -124,8 +123,8 @@ public static VSInternalCompletionList RewriteCSharpResponse( return rewrittenResponse; } - public static VSInternalCompletionList RewriteHtmlResponse( - VSInternalCompletionList? delegatedResponse, + public static RazorVSInternalCompletionList RewriteHtmlResponse( + RazorVSInternalCompletionList? delegatedResponse, RazorCompletionOptions completionOptions) { if (delegatedResponse?.Items is null) @@ -134,7 +133,7 @@ public static VSInternalCompletionList RewriteHtmlResponse( // list. When a user is typing quickly, the delegated request from the first keystroke will fail to synchronize, // so if we return a "complete" list then the query won't re-query us for completion once the typing stops/slows // so we'd only ever return Razor completion items. - return new VSInternalCompletionList() { IsIncomplete = true, Items = [] }; + return new RazorVSInternalCompletionList() { IsIncomplete = true, Items = [] }; } var rewrittenResponse = s_delegatedHtmlCompletionResponseRewriter.Rewrite( @@ -190,11 +189,11 @@ public static bool TryGetProvisionalCompletionInfo( // Edit the CSharp projected document to contain a '.'. This allows C# completion to provide valid // completion items for moments when a user has typed a '.' that's typically interpreted as Html. - var addProvisionalDot = VsLspFactory.CreateTextEdit(previousPosition, "."); + var addProvisionalDot = LspFactory.CreateTextEdit(previousPosition, "."); var provisionalPositionInfo = new DocumentPositionInfo( RazorLanguageKind.CSharp, - VsLspFactory.CreatePosition( + LspFactory.CreatePosition( previousPosition.Line, previousPosition.Character + 1), previousCharacterPositionInfo.HostDocumentIndex + 1); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/DesignTimeHelperResponseRewriter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/DesignTimeHelperResponseRewriter.cs index 55580f43d63..4825fd47673 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/DesignTimeHelperResponseRewriter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/DesignTimeHelperResponseRewriter.cs @@ -8,7 +8,6 @@ using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using RazorSyntaxNode = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxNode; namespace Microsoft.CodeAnalysis.Razor.Completion.Delegation; @@ -30,8 +29,8 @@ internal class DesignTimeHelperResponseRewriter : IDelegatedCSharpCompletionResp "BuildRenderTree" }.ToFrozenSet(); - public VSInternalCompletionList Rewrite( - VSInternalCompletionList completionList, + public RazorVSInternalCompletionList Rewrite( + RazorVSInternalCompletionList completionList, RazorCodeDocument codeDocument, int hostDocumentIndex, Position projectedPosition, @@ -54,7 +53,7 @@ public VSInternalCompletionList Rewrite( // from the completion list. If the current identifier does start with a double underscore (e.g. "__ab[||]"), // we only trim out common design time helpers from the completion list. - using var _ = ListPool.GetPooledObject(out var filteredItems); + using var _ = ListPool.GetPooledObject(out var filteredItems); var items = completionList.Items; filteredItems.SetCapacityIfLarger(items.Length); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/HtmlCommitCharacterResponseRewriter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/HtmlCommitCharacterResponseRewriter.cs index 5e34b3dd8f7..1c2bbff2389 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/HtmlCommitCharacterResponseRewriter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/HtmlCommitCharacterResponseRewriter.cs @@ -3,14 +3,13 @@ using System.Collections.Generic; using System.Linq; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion.Delegation; internal class HtmlCommitCharacterResponseRewriter { - public VSInternalCompletionList Rewrite( - VSInternalCompletionList completionList, + public RazorVSInternalCompletionList Rewrite( + RazorVSInternalCompletionList completionList, RazorCompletionOptions completionOptions) { if (completionOptions.CommitElementsWithSpace) diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/IDelegatedCSharpCompletionResponseRewriter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/IDelegatedCSharpCompletionResponseRewriter.cs index 4779ed134f8..bd623a77cef 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/IDelegatedCSharpCompletionResponseRewriter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/IDelegatedCSharpCompletionResponseRewriter.cs @@ -2,14 +2,13 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using Microsoft.AspNetCore.Razor.Language; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion.Delegation; internal interface IDelegatedCSharpCompletionResponseRewriter { - VSInternalCompletionList Rewrite( - VSInternalCompletionList completionList, + RazorVSInternalCompletionList Rewrite( + RazorVSInternalCompletionList completionList, RazorCodeDocument codeDocument, int hostDocumentIndex, Position projectedPosition, diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/SnippetResponseRewriter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/SnippetResponseRewriter.cs index 829f5b5e9de..3abf03ecb8a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/SnippetResponseRewriter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/SnippetResponseRewriter.cs @@ -3,7 +3,6 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion.Delegation; @@ -15,14 +14,14 @@ namespace Microsoft.CodeAnalysis.Razor.Completion.Delegation; /// internal class SnippetResponseRewriter : IDelegatedCSharpCompletionResponseRewriter { - public VSInternalCompletionList Rewrite( - VSInternalCompletionList completionList, + public RazorVSInternalCompletionList Rewrite( + RazorVSInternalCompletionList completionList, RazorCodeDocument codeDocument, int hostDocumentIndex, Position projectedPosition, RazorCompletionOptions completionOptionsn) { - using var items = new PooledArrayBuilder(completionList.Items.Length); + using var items = new PooledArrayBuilder(completionList.Items.Length); foreach (var item in completionList.Items) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/TextEditResponseRewriter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/TextEditResponseRewriter.cs index 62e9cf521cd..e7d83891b47 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/TextEditResponseRewriter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/TextEditResponseRewriter.cs @@ -2,14 +2,13 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using Microsoft.AspNetCore.Razor.Language; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion.Delegation; internal class TextEditResponseRewriter : IDelegatedCSharpCompletionResponseRewriter { - public VSInternalCompletionList Rewrite( - VSInternalCompletionList completionList, + public RazorVSInternalCompletionList Rewrite( + RazorVSInternalCompletionList completionList, RazorCodeDocument codeDocument, int hostDocumentIndex, Position projectedPosition, @@ -36,10 +35,10 @@ public VSInternalCompletionList Rewrite( return completionList; } - private static VSInternalCompletionList TranslateTextEdits( + private static RazorVSInternalCompletionList TranslateTextEdits( Position hostDocumentPosition, Position projectedPosition, - VSInternalCompletionList completionList) + RazorVSInternalCompletionList completionList) { // The TextEdit positions returned to us from the C#/HTML language servers are positions correlating to the virtual document. // We need to translate these positions to apply to the Razor document instead. Performance is a big concern here, so we want to @@ -73,14 +72,14 @@ private static VSInternalCompletionList TranslateTextEdits( return completionList; } - private static Range TranslateRange(Position hostDocumentPosition, Position projectedPosition, Range textEditRange) + private static LspRange TranslateRange(Position hostDocumentPosition, Position projectedPosition, LspRange textEditRange) { var offset = projectedPosition.Character - hostDocumentPosition.Character; var translatedStartPosition = TranslatePosition(offset, hostDocumentPosition, textEditRange.Start); var translatedEndPosition = TranslatePosition(offset, hostDocumentPosition, textEditRange.End); - return VsLspFactory.CreateRange(translatedStartPosition, translatedEndPosition); + return LspFactory.CreateRange(translatedStartPosition, translatedEndPosition); static Position TranslatePosition(int offset, Position hostDocumentPosition, Position editPosition) { @@ -88,7 +87,7 @@ static Position TranslatePosition(int offset, Position hostDocumentPosition, Pos // Note: If this completion handler ever expands to deal with multi-line TextEdits, this logic will likely need to change since // it assumes we're only dealing with single-line TextEdits. - return VsLspFactory.CreatePosition(hostDocumentPosition.Line, translatedCharacter); + return LspFactory.CreatePosition(hostDocumentPosition.Line, translatedCharacter); } } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeCompletionItemProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeCompletionItemProvider.cs index b0527a32799..5778c0a2ec6 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeCompletionItemProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeCompletionItemProvider.cs @@ -16,7 +16,7 @@ internal class DirectiveAttributeCompletionItemProvider : DirectiveAttributeComp { public override ImmutableArray GetCompletionItems(RazorCompletionContext context) { - if (!FileKinds.IsComponent(context.SyntaxTree.Options.FileKind)) + if (!context.SyntaxTree.Options.FileKind.IsComponent()) { // Directive attributes are only supported in components return []; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeParameterCompletionItemProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeParameterCompletionItemProvider.cs index 58a0192262a..871e8b22d93 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeParameterCompletionItemProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeParameterCompletionItemProvider.cs @@ -15,7 +15,7 @@ internal class DirectiveAttributeParameterCompletionItemProvider : DirectiveAttr { public override ImmutableArray GetCompletionItems(RazorCompletionContext context) { - if (!FileKinds.IsComponent(context.SyntaxTree.Options.FileKind)) + if (!context.SyntaxTree.Options.FileKind.IsComponent()) { // Directive attribute parameters are only supported in components return []; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeTransitionCompletionItemProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeTransitionCompletionItemProvider.cs index a407d384407..3614aeecb12 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeTransitionCompletionItemProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveAttributeTransitionCompletionItemProvider.cs @@ -51,7 +51,7 @@ public static bool IsTransitionCompletionItem(RazorCompletionItem completionItem public override ImmutableArray GetCompletionItems(RazorCompletionContext context) { - if (!FileKinds.IsComponent(context.SyntaxTree.Options.FileKind)) + if (!context.SyntaxTree.Options.FileKind.IsComponent()) { // Directive attributes are only supported in components return []; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveCompletionItemProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveCompletionItemProvider.cs index ad7b9162911..79ebfcbcb42 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveCompletionItemProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/DirectiveCompletionItemProvider.cs @@ -81,7 +81,7 @@ internal static bool ShouldProvideCompletions(RazorCompletionContext context) return false; } - if (implicitExpression.FullWidth > 2 && context.Reason != CompletionReason.Invoked) + if (implicitExpression.Width > 2 && context.Reason != CompletionReason.Invoked) { // We only want to provide directive completions if the implicit expression is empty "@|" or at the beginning of a word "@i|", this ensures // we're consistent with how C# typically provides completion items. @@ -124,7 +124,7 @@ internal static bool ShouldProvideCompletions(RazorCompletionContext context) // Internal for testing internal static ImmutableArray GetDirectiveCompletionItems(RazorSyntaxTree syntaxTree) { - var defaultDirectives = FileKinds.IsComponent(syntaxTree.Options.FileKind) + var defaultDirectives = syntaxTree.Options.FileKind.IsComponent() ? ComponentDefaultDirectives : MvcDefaultDirectives; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/RazorCompletionItemResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/RazorCompletionItemResolver.cs index a8733cd5bbd..b753b906b1d 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/RazorCompletionItemResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/RazorCompletionItemResolver.cs @@ -7,8 +7,7 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.Tooltip; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Microsoft.VisualStudio.Text.Adornments; +using Roslyn.Text.Adornments; namespace Microsoft.CodeAnalysis.Razor.Completion; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/RazorCompletionListProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/RazorCompletionListProvider.cs index 821c06282e8..3a6b37195c4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/RazorCompletionListProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/RazorCompletionListProvider.cs @@ -12,7 +12,6 @@ using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Razor.Logging; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion; @@ -31,7 +30,7 @@ internal class RazorCompletionListProvider( }; // virtual for tests - public virtual VSInternalCompletionList? GetCompletionList( + public virtual RazorVSInternalCompletionList? GetCompletionList( RazorCodeDocument codeDocument, int absoluteIndex, VSInternalCompletionContext completionContext, @@ -85,11 +84,11 @@ internal class RazorCompletionListProvider( } // Internal for benchmarking and testing - internal static VSInternalCompletionList CreateLSPCompletionList( + internal static RazorVSInternalCompletionList CreateLSPCompletionList( ImmutableArray razorCompletionItems, VSInternalClientCapabilities clientCapabilities) { - using var items = new PooledArrayBuilder(); + using var items = new PooledArrayBuilder(); foreach (var razorCompletionItem in razorCompletionItems) { @@ -99,7 +98,7 @@ internal static VSInternalCompletionList CreateLSPCompletionList( } } - var completionList = new VSInternalCompletionList() + var completionList = new RazorVSInternalCompletionList() { Items = items.ToArray(), IsIncomplete = false, diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/VSInternalCompletionItemExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/VSInternalCompletionItemExtensions.cs index e4f4330726c..2d764dac81a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/VSInternalCompletionItemExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/VSInternalCompletionItemExtensions.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/VSInternalCompletionListExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/VSInternalCompletionListExtensions.cs index 6e4b52b9cb3..c0b12459007 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/VSInternalCompletionListExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/VSInternalCompletionListExtensions.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Text.Json; using System.Text.Json.Nodes; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Completion; @@ -14,7 +13,7 @@ internal static class VSInternalCompletionListExtensions private const string ResultIdKey = "_resultId"; public static void SetResultId( - this VSInternalCompletionList completionList, + this RazorVSInternalCompletionList completionList, int resultId, VSInternalCompletionSetting? completionSetting) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DebuggerDisplay.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DebuggerDisplay.cs index 986350fb436..c0058d8d05c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DebuggerDisplay.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DebuggerDisplay.cs @@ -2,6 +2,5 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Diagnostics; -using Microsoft.VisualStudio.LanguageServer.Protocol; [assembly: DebuggerDisplay("{Label} ({Kind})", Target = typeof(CompletionItem))] diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/RazorDiagnosticHelper.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/RazorDiagnosticHelper.cs index 05308f35dfa..16b2dcf23b6 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/RazorDiagnosticHelper.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/RazorDiagnosticHelper.cs @@ -7,12 +7,8 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using LspDiagnostic = Microsoft.VisualStudio.LanguageServer.Protocol.Diagnostic; -using LspDiagnosticSeverity = Microsoft.VisualStudio.LanguageServer.Protocol.DiagnosticSeverity; -using LspRange = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.CodeAnalysis.Razor.Diagnostics; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/RazorTranslateDiagnosticsService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/RazorTranslateDiagnosticsService.cs index db949e181ed..760a80715e9 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/RazorTranslateDiagnosticsService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/RazorTranslateDiagnosticsService.cs @@ -11,16 +11,12 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using LspDiagnostic = Microsoft.VisualStudio.LanguageServer.Protocol.Diagnostic; -using LspDiagnosticSeverity = Microsoft.VisualStudio.LanguageServer.Protocol.DiagnosticSeverity; -using LspRange = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.CodeAnalysis.Razor.Diagnostics; @@ -67,11 +63,6 @@ internal async Task TranslateAsync( CancellationToken cancellationToken) { var codeDocument = await documentSnapshot.GetGeneratedOutputAsync(cancellationToken).ConfigureAwait(false); - if (codeDocument.IsUnsupported() != false) - { - _logger.LogInformation($"Unsupported code document."); - return []; - } var filteredDiagnostics = diagnosticKind == RazorLanguageKind.CSharp ? FilterCSharpDiagnostics(diagnostics, codeDocument) @@ -240,7 +231,7 @@ private static bool ShouldFilterHtmlDiagnosticBasedOnErrorCode(LspDiagnostic dia CSSErrorCodes.MissingSelectorBeforeCombinatorCode => IsCSharpInStyleBlock(diagnostic, sourceText, syntaxTree), HtmlErrorCodes.UnexpectedEndTagErrorCode => IsHtmlWithBangAndMatchingTags(diagnostic, sourceText, syntaxTree), HtmlErrorCodes.InvalidNestingErrorCode => IsAnyFilteredInvalidNestingError(diagnostic, sourceText, syntaxTree), - HtmlErrorCodes.MissingEndTagErrorCode => FileKinds.IsComponent(syntaxTree.Options.FileKind), // Redundant with RZ9980 in Components + HtmlErrorCodes.MissingEndTagErrorCode => syntaxTree.Options.FileKind.IsComponent(), // Redundant with RZ9980 in Components HtmlErrorCodes.TooFewElementsErrorCode => IsAnyFilteredTooFewElementsError(diagnostic, sourceText, syntaxTree), _ => false, }; @@ -414,10 +405,10 @@ n is MarkupTagHelperAttributeSyntax || if (markupAttributeNode is not null) { - if (!processedAttributes.TryGetValue(markupAttributeNode.FullSpan, out var doesAttributeContainNonMarkup)) + if (!processedAttributes.TryGetValue(markupAttributeNode.Span, out var doesAttributeContainNonMarkup)) { doesAttributeContainNonMarkup = CheckIfAttributeContainsNonMarkupNodes(markupAttributeNode); - processedAttributes.Add(markupAttributeNode.FullSpan, doesAttributeContainNonMarkup); + processedAttributes.Add(markupAttributeNode.Span, doesAttributeContainNonMarkup); } return doesAttributeContainNonMarkup; @@ -575,7 +566,7 @@ private bool TryRemapRudeEditRange(LspRange diagnosticRange, RazorCodeDocument c var diagnosticEndWhitespaceOffset = diagnosticEndCharacter + 1; var endLinePosition = (endLineIndex, diagnosticEndWhitespaceOffset); - remappedRange = VsLspFactory.CreateRange(startLinePosition, endLinePosition); + remappedRange = LspFactory.CreateRange(startLinePosition, endLinePosition); return true; } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/TaskListDiagnosticProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/TaskListDiagnosticProvider.cs index dc1fff07407..8617d1f01c2 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/TaskListDiagnosticProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Diagnostics/TaskListDiagnosticProvider.cs @@ -6,9 +6,6 @@ using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using LspDiagnostic = Microsoft.VisualStudio.LanguageServer.Protocol.Diagnostic; -using LspDiagnosticSeverity = Microsoft.VisualStudio.LanguageServer.Protocol.DiagnosticSeverity; namespace Microsoft.CodeAnalysis.Razor.Diagnostics; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/AbstractDocumentMappingService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/AbstractDocumentMappingService.cs index 1720bfc720b..ca6b1c2bd56 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/AbstractDocumentMappingService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/AbstractDocumentMappingService.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.DocumentMapping; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/AbstractEditMappingService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/AbstractEditMappingService.cs index d0bcb0fa462..338a0b94f82 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/AbstractEditMappingService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/AbstractEditMappingService.cs @@ -4,14 +4,13 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using System.Linq; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.DocumentMapping; @@ -101,7 +100,7 @@ private TextEdit[] RemapTextEditsCore(Uri generatedDocumentUri, RazorCodeDocumen continue; } - var remappedEdit = VsLspFactory.CreateTextEdit(hostDocumentRange, edit.NewText); + var remappedEdit = LspFactory.CreateTextEdit(hostDocumentRange, edit.NewText); remappedEdits.Add(remappedEdit); } @@ -133,7 +132,8 @@ private async Task RemapTextDocumentEditsAsync(IDocumentSnap var codeDocument = await documentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); - var remappedEdits = RemapTextEditsCore(generatedDocumentUri, codeDocument, entry.Edits); + // entry.Edits is SumType but AnnotatedTextEdit inherits from TextEdit, so we can just cast + var remappedEdits = RemapTextEditsCore(generatedDocumentUri, codeDocument, entry.Edits.Select(e => (TextEdit)e).ToArray()); if (remappedEdits.Length == 0) { // Nothing to do. @@ -146,7 +146,7 @@ private async Task RemapTextDocumentEditsAsync(IDocumentSnap { Uri = razorDocumentUri, }, - Edits = remappedEdits + Edits = remappedEdits.Select(e => new SumType(e)).ToArray() }); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/DocumentPositionInfo.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/DocumentPositionInfo.cs index bfdca6934f4..4acb0995bb3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/DocumentPositionInfo.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/DocumentPositionInfo.cs @@ -3,7 +3,6 @@ using System.Text.Json.Serialization; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.DocumentMapping; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/IDocumentMappingServiceExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/IDocumentMappingServiceExtensions.cs index e83f826b2ec..229ade4d819 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/IDocumentMappingServiceExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/IDocumentMappingServiceExtensions.cs @@ -9,8 +9,6 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.CodeAnalysis.Razor.DocumentMapping; @@ -29,7 +27,7 @@ public static TextEdit[] GetHostDocumentEdits(this IDocumentMappingService servi public static bool TryMapToHostDocumentRange(this IDocumentMappingService service, IRazorGeneratedDocument generatedDocument, LinePositionSpan projectedRange, out LinePositionSpan originalRange) => service.TryMapToHostDocumentRange(generatedDocument, projectedRange, MappingBehavior.Strict, out originalRange); - public static bool TryMapToHostDocumentRange(this IDocumentMappingService service, IRazorGeneratedDocument generatedDocument, Range projectedRange, [NotNullWhen(true)] out Range? originalRange) + public static bool TryMapToHostDocumentRange(this IDocumentMappingService service, IRazorGeneratedDocument generatedDocument, LspRange projectedRange, [NotNullWhen(true)] out LspRange? originalRange) => service.TryMapToHostDocumentRange(generatedDocument, projectedRange, MappingBehavior.Strict, out originalRange); public static DocumentPositionInfo GetPositionInfo( @@ -75,14 +73,14 @@ public static DocumentPositionInfo GetPositionInfo( return new DocumentPositionInfo(languageKind, position, hostDocumentIndex); } - public static bool TryMapToHostDocumentRange(this IDocumentMappingService service, IRazorGeneratedDocument generatedDocument, Range generatedDocumentRange, MappingBehavior mappingBehavior, [NotNullWhen(true)] out Range? hostDocumentRange) + public static bool TryMapToHostDocumentRange(this IDocumentMappingService service, IRazorGeneratedDocument generatedDocument, LspRange generatedDocumentRange, MappingBehavior mappingBehavior, [NotNullWhen(true)] out LspRange? hostDocumentRange) { var result = service.TryMapToHostDocumentRange(generatedDocument, generatedDocumentRange.ToLinePositionSpan(), mappingBehavior, out var hostDocumentLinePositionSpan); hostDocumentRange = result ? hostDocumentLinePositionSpan.ToRange() : null; return result; } - public static bool TryMapToGeneratedDocumentRange(this IDocumentMappingService service, IRazorGeneratedDocument generatedDocument, Range hostDocumentRange, [NotNullWhen(true)] out Range? generatedDocumentRange) + public static bool TryMapToGeneratedDocumentRange(this IDocumentMappingService service, IRazorGeneratedDocument generatedDocument, LspRange hostDocumentRange, [NotNullWhen(true)] out LspRange? generatedDocumentRange) { var result = service.TryMapToGeneratedDocumentRange(generatedDocument, hostDocumentRange.ToLinePositionSpan(), out var generatedDocumentLinePositionSpan); generatedDocumentRange = result ? generatedDocumentLinePositionSpan.ToRange() : null; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/IEditMappingService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/IEditMappingService.cs index 0f186d239bc..8c85b5a7fb0 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/IEditMappingService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/IEditMappingService.cs @@ -3,8 +3,7 @@ using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.DocumentMapping; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/PreferHtmlInAttributeValuesDocumentPositionStrategy.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/PreferHtmlInAttributeValuesDocumentPositionStrategy.cs index 7de3f5f7612..f063780797d 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/PreferHtmlInAttributeValuesDocumentPositionStrategy.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/PreferHtmlInAttributeValuesDocumentPositionStrategy.cs @@ -5,7 +5,6 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.DocumentMapping; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RangeComparer.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RangeComparer.cs index eafd7e047f8..405ad8f60d3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RangeComparer.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RangeComparer.cs @@ -2,15 +2,14 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Collections.Generic; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Workspaces.DocumentMapping; -internal sealed class RangeComparer : IComparer +internal sealed class RangeComparer : IComparer { public static readonly RangeComparer Instance = new(); - public int Compare(Range? x, Range? y) + public int Compare(LspRange? x, LspRange? y) { if (x is null) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RazorEditHelper.TextChangeBuilder.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RazorEditHelper.TextChangeBuilder.cs index cb906f5e489..857b70b9c55 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RazorEditHelper.TextChangeBuilder.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RazorEditHelper.TextChangeBuilder.cs @@ -17,7 +17,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; using Microsoft.Extensions.ObjectPool; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.DocumentMapping; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RazorEditHelper.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RazorEditHelper.cs index 9b7b2d22948..16f66b4e81c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RazorEditHelper.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/DocumentMapping/RazorEditHelper.cs @@ -8,11 +8,11 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Formatting; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Telemetry; namespace Microsoft.CodeAnalysis.Razor.DocumentMapping; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ClientCapabilitiesExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ClientCapabilitiesExtensions.cs index e3d51e5a63f..12a856ef8e4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ClientCapabilitiesExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ClientCapabilitiesExtensions.cs @@ -3,7 +3,7 @@ using System; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; internal static class ClientCapabilitiesExtensions { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_LinePosition.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_LinePosition.cs similarity index 55% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_LinePosition.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_LinePosition.cs index 7401bd5ca1f..9e48d992ea0 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_LinePosition.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_LinePosition.cs @@ -5,8 +5,11 @@ namespace Roslyn.LanguageServer.Protocol; -internal static partial class RoslynLspExtensions +internal static partial class LspExtensions { public static Position ToPosition(this LinePosition linePosition) - => RoslynLspFactory.CreatePosition(linePosition.Line, linePosition.Character); + => LspFactory.CreatePosition(linePosition.Line, linePosition.Character); + + public static LspRange ToZeroWidthRange(this LinePosition position) + => LspFactory.CreateZeroWidthRange(position); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_LinePositionSpan.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_LinePositionSpan.cs similarity index 56% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_LinePositionSpan.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_LinePositionSpan.cs index 2819933b95f..456a3f911a1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_LinePositionSpan.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_LinePositionSpan.cs @@ -5,8 +5,8 @@ namespace Roslyn.LanguageServer.Protocol; -internal static partial class RoslynLspExtensions +internal static partial class LspExtensions { - public static Range ToRange(this LinePositionSpan linePositionSpan) - => RoslynLspFactory.CreateRange(linePositionSpan); + public static LspRange ToRange(this LinePositionSpan linePositionSpan) + => LspFactory.CreateRange(linePositionSpan); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_Location.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_Location.cs similarity index 66% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_Location.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_Location.cs index d79991b8e22..999eae90ccc 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_Location.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_Location.cs @@ -5,8 +5,8 @@ namespace Roslyn.LanguageServer.Protocol; -internal static partial class RoslynLspExtensions +internal static partial class LspExtensions { - public static void Deconstruct(this Location position, out Uri uri, out Range range) + public static void Deconstruct(this LspLocation position, out Uri uri, out LspRange range) => (uri, range) = (position.Uri, position.Range); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_Position.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_Position.cs similarity index 78% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_Position.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_Position.cs index df93c93333f..efa8366d6d4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_Position.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_Position.cs @@ -3,9 +3,9 @@ using Microsoft.CodeAnalysis.Text; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { public static void Deconstruct(this Position position, out int line, out int character) => (line, character) = (position.Line, position.Character); @@ -13,8 +13,8 @@ public static void Deconstruct(this Position position, out int line, out int cha public static LinePosition ToLinePosition(this Position position) => new(position.Line, position.Character); - public static Range ToZeroWidthRange(this Position position) - => VsLspFactory.CreateZeroWidthRange(position); + public static LspRange ToZeroWidthRange(this Position position) + => LspFactory.CreateZeroWidthRange(position); public static int CompareTo(this Position position, Position other) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_Range.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_Range.cs similarity index 63% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_Range.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_Range.cs index 582e9b0bea5..0241f5566d6 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_Range.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_Range.cs @@ -3,20 +3,20 @@ using Microsoft.CodeAnalysis.Text; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { - public static void Deconstruct(this Range range, out Position start, out Position end) + public static void Deconstruct(this LspRange range, out Position start, out Position end) => (start, end) = (range.Start, range.End); - public static void Deconstruct(this Range range, out int startLine, out int startCharacter, out int endLine, out int endCharacter) + public static void Deconstruct(this LspRange range, out int startLine, out int startCharacter, out int endLine, out int endCharacter) => (startLine, startCharacter, endLine, endCharacter) = (range.Start.Line, range.Start.Character, range.End.Line, range.End.Character); - public static LinePositionSpan ToLinePositionSpan(this Range range) + public static LinePositionSpan ToLinePositionSpan(this LspRange range) => new(range.Start.ToLinePosition(), range.End.ToLinePosition()); - public static bool IntersectsOrTouches(this Range range, Range other) + public static bool IntersectsOrTouches(this LspRange range, LspRange other) { if (range.IsBefore(other)) { @@ -31,18 +31,18 @@ public static bool IntersectsOrTouches(this Range range, Range other) return true; } - private static bool IsBefore(this Range range, Range other) => + private static bool IsBefore(this LspRange range, LspRange other) => range.End.Line < other.Start.Line || (range.End.Line == other.Start.Line && range.End.Character < other.Start.Character); - private static bool IsAfter(this Range range, Range other) => + private static bool IsAfter(this LspRange range, LspRange other) => other.End.Line < range.Start.Line || (other.End.Line == range.Start.Line && other.End.Character < range.Start.Character); - public static bool OverlapsWith(this Range range, Range other) + public static bool OverlapsWith(this LspRange range, LspRange other) { return range.ToLinePositionSpan().OverlapsWith(other.ToLinePositionSpan()); } - public static bool LineOverlapsWith(this Range range, Range other) + public static bool LineOverlapsWith(this LspRange range, LspRange other) { var overlapStart = range.Start.Line; if (range.Start.Line.CompareTo(other.Start.Line) < 0) @@ -59,32 +59,32 @@ public static bool LineOverlapsWith(this Range range, Range other) return overlapStart.CompareTo(overlapEnd) <= 0; } - public static bool Contains(this Range range, Range other) + public static bool Contains(this LspRange range, LspRange other) { return range.Start.CompareTo(other.Start) <= 0 && range.End.CompareTo(other.End) >= 0; } - public static bool SpansMultipleLines(this Range range) + public static bool SpansMultipleLines(this LspRange range) { return range.Start.Line != range.End.Line; } - public static bool IsSingleLine(this Range range) + public static bool IsSingleLine(this LspRange range) { return range.Start.Line == range.End.Line; } - public static bool IsUndefined(this Range range) + public static bool IsUndefined(this LspRange range) { - return range == VsLspFactory.UndefinedRange; + return range == LspFactory.UndefinedRange; } - public static bool IsZeroWidth(this Range range) + public static bool IsZeroWidth(this LspRange range) { return range.Start == range.End; } - public static int CompareTo(this Range range1, Range range2) + public static int CompareTo(this LspRange range1, LspRange range2) { var result = range1.Start.CompareTo(range2.Start); @@ -96,7 +96,7 @@ public static int CompareTo(this Range range1, Range range2) return result; } - public static Range? Overlap(this Range range, Range other) + public static LspRange? Overlap(this LspRange range, LspRange other) { var overlapStart = range.Start; if (range.Start.CompareTo(other.Start) < 0) @@ -113,12 +113,12 @@ public static int CompareTo(this Range range1, Range range2) // Empty ranges do not overlap with any range. if (overlapStart.CompareTo(overlapEnd) < 0) { - return VsLspFactory.CreateRange(overlapStart, overlapEnd); + return LspFactory.CreateRange(overlapStart, overlapEnd); } return null; } - public static string ToDisplayString(this Range range) + public static string ToDisplayString(this LspRange range) => $"{range.Start.ToDisplayString()}-{range.End.ToDisplayString()}"; } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_RazorSyntaxTree.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_RazorSyntaxTree.cs similarity index 87% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_RazorSyntaxTree.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_RazorSyntaxTree.cs index 1bd0773e024..fa4d5f9b090 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_RazorSyntaxTree.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_RazorSyntaxTree.cs @@ -5,9 +5,9 @@ using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.CodeAnalysis.Text; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { public static SyntaxNode? FindInnermostNode( this RazorSyntaxTree syntaxTree, diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_SourceText.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_SourceText.cs similarity index 75% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_SourceText.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_SourceText.cs index 1eff67c59aa..2238f9a204f 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_SourceText.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_SourceText.cs @@ -4,9 +4,9 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.CodeAnalysis.Text; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { public static int GetPosition(this SourceText text, Position position) => text.GetPosition(position.ToLinePosition()); @@ -14,16 +14,16 @@ public static int GetPosition(this SourceText text, Position position) public static Position GetPosition(this SourceText text, int position) => text.GetLinePosition(position).ToPosition(); - public static Range GetRange(this SourceText text, TextSpan span) + public static LspRange GetRange(this SourceText text, TextSpan span) => text.GetLinePositionSpan(span).ToRange(); - public static Range GetRange(this SourceText text, SourceSpan span) + public static LspRange GetRange(this SourceText text, SourceSpan span) => text.GetLinePositionSpan(span).ToRange(); - public static Range GetRange(this SourceText text, int start, int end) + public static LspRange GetRange(this SourceText text, int start, int end) => text.GetLinePositionSpan(start, end).ToRange(); - public static Range GetZeroWidthRange(this SourceText text, int position) + public static LspRange GetZeroWidthRange(this SourceText text, int position) => text.GetLinePosition(position).ToZeroWidthRange(); public static bool IsValidPosition(this SourceText text, Position position) @@ -35,7 +35,7 @@ public static bool TryGetAbsoluteIndex(this SourceText text, Position position, public static int GetRequiredAbsoluteIndex(this SourceText text, Position position) => text.GetRequiredAbsoluteIndex(position.Line, position.Character); - public static TextSpan GetTextSpan(this SourceText text, Range range) + public static TextSpan GetTextSpan(this SourceText text, LspRange range) => text.GetTextSpan(range.Start.Line, range.Start.Character, range.End.Line, range.End.Character); public static bool TryGetSourceLocation(this SourceText text, Position position, out SourceLocation location) @@ -45,5 +45,5 @@ public static TextChange GetTextChange(this SourceText text, TextEdit edit) => new(text.GetTextSpan(edit.Range), edit.NewText); public static TextEdit GetTextEdit(this SourceText text, TextChange change) - => VsLspFactory.CreateTextEdit(text.GetRange(change.Span), change.NewText ?? ""); + => LspFactory.CreateTextEdit(text.GetRange(change.Span), change.NewText ?? ""); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_SumTypes.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_SumTypes.cs similarity index 96% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_SumTypes.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_SumTypes.cs index 6c75dd21d31..4a349e70091 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_SumTypes.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_SumTypes.cs @@ -5,9 +5,9 @@ using System.Linq; using Microsoft.AspNetCore.Razor; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { internal static int Count(this SumType[]> sumType) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_SyntaxNode.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_SyntaxNode.cs similarity index 59% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_SyntaxNode.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_SyntaxNode.cs index a92ee4b4831..8602438b7dc 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_SyntaxNode.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_SyntaxNode.cs @@ -5,14 +5,14 @@ using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.CodeAnalysis.Text; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { - public static Range GetRange(this SyntaxNode node, RazorSourceDocument source) + public static LspRange GetRange(this SyntaxNode node, RazorSourceDocument source) { var linePositionSpan = node.GetLinePositionSpan(source); - return VsLspFactory.CreateRange(linePositionSpan); + return LspFactory.CreateRange(linePositionSpan); } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_TextChange.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_TextChange.cs similarity index 85% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_TextChange.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_TextChange.cs index 5feb06ba64f..91c400b9eff 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_TextChange.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_TextChange.cs @@ -4,9 +4,9 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { public static RazorTextChange ToRazorTextChange(this TextChange textChange) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_TextDocumentIdentifier.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_TextDocumentIdentifier.cs similarity index 92% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_TextDocumentIdentifier.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_TextDocumentIdentifier.cs index f265744db95..991544ca22c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_TextDocumentIdentifier.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_TextDocumentIdentifier.cs @@ -4,9 +4,9 @@ using System; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { public static VSProjectContext? GetProjectContext(this TextDocumentIdentifier textDocumentIdentifier) => textDocumentIdentifier is VSTextDocumentIdentifier vsIdentifier diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_VSInternalClientCapabilities.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_VSInternalClientCapabilities.cs similarity index 87% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_VSInternalClientCapabilities.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_VSInternalClientCapabilities.cs index ef801c03cec..0d8e0aab7c3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_VSInternalClientCapabilities.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_VSInternalClientCapabilities.cs @@ -1,9 +1,9 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { internal static VSInternalClientCapabilities ToVSInternalClientCapabilities(this ClientCapabilities clientCapabilities) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_VSProjectContext.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_VSProjectContext.cs similarity index 66% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_VSProjectContext.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_VSProjectContext.cs index 959c14c116a..92856518504 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_VSProjectContext.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_VSProjectContext.cs @@ -1,11 +1,11 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { internal static ProjectKey ToProjectKey(this VSProjectContext projectContext) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_WorkspaceEdit.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_WorkspaceEdit.cs similarity index 92% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_WorkspaceEdit.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_WorkspaceEdit.cs index 961a810f3de..875ba97e065 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_WorkspaceEdit.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspExtensions_WorkspaceEdit.cs @@ -4,9 +4,9 @@ using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Razor.PooledObjects; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static partial class VsLspExtensions +internal static partial class LspExtensions { public static bool TryGetTextDocumentEdits(this WorkspaceEdit workspaceEdit, [NotNullWhen(true)] out TextDocumentEdit[]? textDocumentEdits) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspFactory.cs similarity index 71% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspFactory.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspFactory.cs index 53664af6b1f..1e565f32e3a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspFactory.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/LspFactory.cs @@ -5,13 +5,13 @@ using System.Diagnostics; using Microsoft.CodeAnalysis.Text; -namespace Microsoft.VisualStudio.LanguageServer.Protocol; +namespace Roslyn.LanguageServer.Protocol; -internal static class VsLspFactory +internal static class LspFactory { private static readonly Position s_defaultPosition = new(0, 0); - private static readonly Range s_defaultRange = new() + private static readonly LspRange s_defaultRange = new() { Start = s_defaultPosition, End = s_defaultPosition @@ -19,7 +19,7 @@ internal static class VsLspFactory private static readonly Position s_undefinedPosition = new(-1, -1); - private static readonly Range s_undefinedRange = new() + private static readonly LspRange s_undefinedRange = new() { Start = s_undefinedPosition, End = s_undefinedPosition @@ -38,7 +38,7 @@ public static Position DefaultPosition Debug.Assert( defaultPosition.Line == 0 && defaultPosition.Character == 0, - $"{nameof(VsLspFactory)}.{nameof(DefaultPosition)} has been corrupted. Current value: {defaultPosition.ToDisplayString()}"); + $"{nameof(LspFactory)}.{nameof(DefaultPosition)} has been corrupted. Current value: {defaultPosition.ToDisplayString()}"); return defaultPosition; } @@ -48,7 +48,7 @@ public static Position DefaultPosition /// Returns a for starting line 0 and character 0, /// and ending line 0 and character 0. /// - public static Range DefaultRange + public static LspRange DefaultRange { get { @@ -60,7 +60,7 @@ public static Range DefaultRange defaultRange.Start.Character == 0 && defaultRange.End.Line == 0 && defaultRange.End.Character == 0, - $"{nameof(VsLspFactory)}.{nameof(DefaultRange)} has been corrupted. Current value: {defaultRange.ToDisplayString()}"); + $"{nameof(LspFactory)}.{nameof(DefaultRange)} has been corrupted. Current value: {defaultRange.ToDisplayString()}"); return defaultRange; } @@ -76,13 +76,13 @@ public static Position UndefinedPosition Debug.Assert( undefinedPosition.Line == -1 && undefinedPosition.Character == -1, - $"{nameof(VsLspFactory)}.{nameof(UndefinedPosition)} has been corrupted. Current value: {undefinedPosition.ToDisplayString()}"); + $"{nameof(LspFactory)}.{nameof(UndefinedPosition)} has been corrupted. Current value: {undefinedPosition.ToDisplayString()}"); return undefinedPosition; } } - public static Range UndefinedRange + public static LspRange UndefinedRange { get { @@ -94,7 +94,7 @@ public static Range UndefinedRange undefinedRange.Start.Character == -1 && undefinedRange.End.Line == -1 && undefinedRange.End.Character == -1, - $"{nameof(VsLspFactory)}.{nameof(UndefinedRange)} has been corrupted. Current value: {undefinedRange.ToDisplayString()}"); + $"{nameof(LspFactory)}.{nameof(UndefinedRange)} has been corrupted. Current value: {undefinedRange.ToDisplayString()}"); return undefinedRange; } @@ -114,24 +114,24 @@ public static Position CreatePosition(LinePosition linePosition) public static Position CreatePosition((int line, int character) position) => CreatePosition(position.line, position.character); - public static Range CreateRange(int startLine, int startCharacter, int endLine, int endCharacter) + public static LspRange CreateRange(int startLine, int startCharacter, int endLine, int endCharacter) => startLine == endLine && startCharacter == endCharacter ? CreateZeroWidthRange(startLine, startCharacter) : CreateRange(CreatePosition(startLine, startCharacter), CreatePosition(endLine, endCharacter)); - public static Range CreateRange(Position start, Position end) + public static LspRange CreateRange(Position start, Position end) => new() { Start = start, End = end }; - public static Range CreateRange(LinePosition start, LinePosition end) + public static LspRange CreateRange(LinePosition start, LinePosition end) => CreateRange(start.Line, start.Character, end.Line, end.Character); - public static Range CreateRange((int line, int character) start, (int line, int character) end) + public static LspRange CreateRange((int line, int character) start, (int line, int character) end) => CreateRange(start.line, start.character, end.line, end.character); - public static Range CreateRange(LinePositionSpan span) + public static LspRange CreateRange(LinePositionSpan span) => CreateRange(span.Start, span.End); - public static Range CreateZeroWidthRange(int line, int character) + public static LspRange CreateZeroWidthRange(int line, int character) => (line, character) switch { (0, 0) => DefaultRange, @@ -139,39 +139,45 @@ public static Range CreateZeroWidthRange(int line, int character) _ => CreateZeroWidthRange(CreatePosition(line, character)) }; - public static Range CreateZeroWidthRange(Position position) + public static LspRange CreateZeroWidthRange(Position position) => CreateRange(position, position); - public static Range CreateZeroWidthRange(LinePosition position) + public static LspRange CreateZeroWidthRange(LinePosition position) => CreateRange(position, position); - public static Range CreateZeroWidthRange((int line, int character) position) + public static LspRange CreateZeroWidthRange((int line, int character) position) => CreateRange(position, position); - public static Range CreateSingleLineRange(int line, int character, int length) + public static LspRange CreateSingleLineRange(int line, int character, int length) => CreateRange(line, character, line, character + length); - public static Range CreateSingleLineRange(Position start, int length) + public static LspRange CreateSingleLineRange(Position start, int length) => CreateRange(start, CreatePosition(start.Line, start.Character + length)); - public static Range CreateSingleLineRange(LinePosition start, int length) + public static LspRange CreateSingleLineRange(LinePosition start, int length) => CreateSingleLineRange(start.Line, start.Character, length); - public static Range CreateSingleLineRange((int line, int character) start, int length) + public static LspRange CreateSingleLineRange((int line, int character) start, int length) => CreateRange(CreatePosition(start), CreatePosition(start.line, start.character + length)); - public static Location CreateLocation(string filePath, LinePositionSpan span) + public static LspLocation CreateLocation(string filePath, LinePositionSpan span) => CreateLocation(CreateFilePathUri(filePath), CreateRange(span)); - public static Location CreateLocation(Uri uri, LinePositionSpan span) + public static LspLocation CreateLocation(Uri uri, LinePositionSpan span) => CreateLocation(uri, CreateRange(span)); - public static Location CreateLocation(string filePath, Range range) + public static LspLocation CreateLocation(string filePath, LspRange range) => CreateLocation(CreateFilePathUri(filePath), range); - public static Location CreateLocation(Uri uri, Range range) + public static LspLocation CreateLocation(Uri uri, LspRange range) => new() { Uri = uri, Range = range }; + public static DocumentLink CreateDocumentLink(Uri target, LspRange range) + => new() { Target = target, Range = range }; + + public static DocumentLink CreateDocumentLink(Uri target, LinePositionSpan span) + => new() { Target = target, Range = CreateRange(span) }; + public static TextEdit CreateTextEdit(Range range, string newText) => new() { Range = range, NewText = newText }; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ProjectExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ProjectExtensions.cs index bd6e3c0f7b4..710747ccbce 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ProjectExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/ProjectExtensions.cs @@ -11,9 +11,9 @@ using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.ExternalAccess.Razor; +using Microsoft.CodeAnalysis.Razor.Telemetry; namespace Microsoft.CodeAnalysis; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RazorCodeDocumentExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RazorCodeDocumentExtensions.cs index a563aa045c4..26ecac7bf81 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RazorCodeDocumentExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RazorCodeDocumentExtensions.cs @@ -21,33 +21,6 @@ namespace Microsoft.AspNetCore.Razor.Language; internal static class RazorCodeDocumentExtensions { private static readonly object s_csharpSyntaxTreeKey = new(); - private static readonly object s_unsupportedKey = new(); - - public static bool IsUnsupported(this RazorCodeDocument document) - { - if (document is null) - { - throw new ArgumentNullException(nameof(document)); - } - - var unsupportedObj = document.Items[s_unsupportedKey]; - if (unsupportedObj is null) - { - return false; - } - - return (bool)unsupportedObj; - } - - public static void SetUnsupported(this RazorCodeDocument document) - { - if (document is null) - { - throw new ArgumentNullException(nameof(document)); - } - - document.Items[s_unsupportedKey] = true; - } public static RazorSyntaxTree GetRequiredSyntaxTree(this RazorCodeDocument codeDocument) => codeDocument.GetSyntaxTree().AssumeNotNull(); @@ -55,9 +28,6 @@ public static RazorSyntaxTree GetRequiredSyntaxTree(this RazorCodeDocument codeD public static Syntax.SyntaxNode GetRequiredSyntaxRoot(this RazorCodeDocument codeDocument) => codeDocument.GetRequiredSyntaxTree().Root; - public static TagHelperDocumentContext GetRequiredTagHelperContext(this RazorCodeDocument codeDocument) - => codeDocument.GetTagHelperContext().AssumeNotNull(); - public static SourceText GetCSharpSourceText(this RazorCodeDocument document) => document.GetCSharpDocument().Text; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RazorSyntaxNodeExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RazorSyntaxNodeExtensions.cs index 1d350ab5a22..96a04ec822a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RazorSyntaxNodeExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RazorSyntaxNodeExtensions.cs @@ -8,7 +8,6 @@ using Microsoft.AspNetCore.Razor.Language.Extensions; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.Language.Syntax; @@ -199,7 +198,7 @@ public static LinePositionSpan GetLinePositionSpan(this SyntaxNode node, RazorSo Debug.Assert(start <= sourceText.Length && end <= sourceText.Length, "Node position exceeds source length."); - if (start == sourceText.Length && node.FullWidth == 0) + if (start == sourceText.Length && node.Width == 0) { // Marker symbol at the end of the document. var location = node.GetSourceLocation(sourceDocument); @@ -257,14 +256,14 @@ public static LinePositionSpan GetLinePositionSpan(this SyntaxNode node, RazorSo public static SyntaxNode? FindNode(this SyntaxNode @this, TextSpan span, bool includeWhitespace = false, bool getInnermostNodeForTie = false) { - if (!@this.FullSpan.Contains(span)) + if (!@this.Span.Contains(span)) { return ThrowHelper.ThrowArgumentOutOfRangeException(nameof(span)); } var node = @this.FindToken(span.Start, includeWhitespace) .Parent! - .FirstAncestorOrSelf(a => a.FullSpan.Contains(span)); + .FirstAncestorOrSelf(a => a.Span.Contains(span)); node.AssumeNotNull(); @@ -283,7 +282,7 @@ public static LinePositionSpan GetLinePositionSpan(this SyntaxNode node, RazorSo { var parent = node.Parent; // NOTE: We care about FullSpan equality, but FullWidth is cheaper and equivalent. - if (parent == null || parent.FullWidth != node.FullWidth) + if (parent == null || parent.Width != node.Width) { break; } @@ -305,10 +304,10 @@ public static bool ExistsOnTarget(this SyntaxNode node, SyntaxNode target) { // TODO: This looks like a potential allocation hotspot and performance bottleneck. - var nodeString = node.RemoveEmptyNewLines().ToFullString(); + var nodeString = node.RemoveEmptyNewLines().ToString(); var matchingNode = target.DescendantNodesAndSelf() // Empty new lines can affect our comparison so we remove them since they're insignificant. - .Where(n => n.RemoveEmptyNewLines().ToFullString() == nodeString) + .Where(n => n.RemoveEmptyNewLines().ToString() == nodeString) .FirstOrDefault(); return matchingNode is not null; @@ -353,7 +352,7 @@ CSharpExplicitExpressionSyntax or // code { // var foo = "bar"; // } - var directive = body.Keyword.ToFullString(); + var directive = body.Keyword.ToString(); if (directive != "code") { return false; @@ -473,7 +472,7 @@ static LinePositionSpan GetLinePositionSpan(SyntaxNode node, RazorSourceDocument var start = node.Position + parentStart; var end = node.EndPosition + parentStart; - if (start == sourceText.Length && node.FullWidth == 0) + if (start == sourceText.Length && node.Width == 0) { // Marker symbol at the end of the document. var location = node.GetSourceLocation(source); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_Position.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_Position.cs deleted file mode 100644 index e4cd3c1ac93..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_Position.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using Microsoft.CodeAnalysis.Text; - -namespace Roslyn.LanguageServer.Protocol; - -internal static partial class RoslynLspExtensions -{ - public static LinePosition ToLinePosition(this Position position) - => new(position.Line, position.Character); - - public static string ToDisplayString(this Position position) - => $"({position.Line}, {position.Character})"; -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_Range.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_Range.cs deleted file mode 100644 index af7e54346c8..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_Range.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using Microsoft.CodeAnalysis.Text; - -namespace Roslyn.LanguageServer.Protocol; - -internal static partial class RoslynLspExtensions -{ - public static LinePositionSpan ToLinePositionSpan(this Range range) - => new(range.Start.ToLinePosition(), range.End.ToLinePosition()); - - public static string ToDisplayString(this Range range) - => $"{range.Start.ToDisplayString()}-{range.End.ToDisplayString()}"; -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_SourceText.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_SourceText.cs deleted file mode 100644 index 2a7b95f56e3..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_SourceText.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using Microsoft.CodeAnalysis.Text; - -namespace Roslyn.LanguageServer.Protocol; - -internal static partial class RoslynLspExtensions -{ - public static int GetPosition(this SourceText text, Position position) - => text.GetPosition(position.ToLinePosition()); - - public static Position GetPosition(this SourceText text, int position) - => text.GetLinePosition(position).ToPosition(); - - public static Range GetRange(this SourceText text, TextSpan span) - => text.GetLinePositionSpan(span).ToRange(); - - public static bool TryGetAbsoluteIndex(this SourceText text, Position position, out int absoluteIndex) - => text.TryGetAbsoluteIndex(position.Line, position.Character, out absoluteIndex); - - public static int GetRequiredAbsoluteIndex(this SourceText text, Position position) - => text.GetRequiredAbsoluteIndex(position.Line, position.Character); - - public static TextSpan GetTextSpan(this SourceText text, Range range) - => text.GetTextSpan(range.Start.Line, range.Start.Character, range.End.Line, range.End.Character); - - public static TextChange GetTextChange(this SourceText text, TextEdit edit) - => new(text.GetTextSpan(edit.Range), edit.NewText); - - public static TextEdit GetTextEdit(this SourceText text, TextChange change) - => RoslynLspFactory.CreateTextEdit(text.GetRange(change.Span), change.NewText ?? ""); -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_TextDocumentIdentifier.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_TextDocumentIdentifier.cs deleted file mode 100644 index 1d610d572d3..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspExtensions_TextDocumentIdentifier.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System; -using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; - -namespace Roslyn.LanguageServer.Protocol; - -internal static partial class RoslynLspExtensions -{ - /// - /// Returns a copy of the passed in with the passed in . - /// - public static TextDocumentIdentifier WithUri(this TextDocumentIdentifier textDocumentIdentifier, Uri uri) - { - if (textDocumentIdentifier is VSTextDocumentIdentifier vsTdi) - { - return new VSTextDocumentIdentifier - { - Uri = uri, - ProjectContext = vsTdi.ProjectContext - }; - } - - return new TextDocumentIdentifier - { - Uri = uri - }; - } - - public static RazorTextDocumentIdentifier ToRazorTextDocumentIdentifier(this TextDocumentIdentifier textDocumentIdentifier) - => new RazorTextDocumentIdentifier(textDocumentIdentifier.Uri, (textDocumentIdentifier as VSTextDocumentIdentifier)?.ProjectContext?.Id); -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspFactory.cs deleted file mode 100644 index f26c4feb903..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/RoslynLspFactory.cs +++ /dev/null @@ -1,204 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System; -using System.Diagnostics; -using Microsoft.CodeAnalysis.Text; - -namespace Roslyn.LanguageServer.Protocol; - -internal static class RoslynLspFactory -{ - private static readonly Position s_defaultPosition = new(0, 0); - - private static readonly Range s_defaultRange = new() - { - Start = s_defaultPosition, - End = s_defaultPosition - }; - - private static readonly Position s_undefinedPosition = new(-1, -1); - - private static readonly Range s_undefinedRange = new() - { - Start = s_undefinedPosition, - End = s_undefinedPosition - }; - - /// - /// Returns a for line 0 and character 0. - /// - public static Position DefaultPosition - { - get - { - var defaultPosition = s_defaultPosition; - - // Since Position is mutable, it's possible that something might modify it. If that happens, we should know! - Debug.Assert( - defaultPosition.Line == 0 && - defaultPosition.Character == 0, - $"{nameof(RoslynLspFactory)}.{nameof(DefaultPosition)} has been corrupted. Current value: {defaultPosition.ToDisplayString()}"); - - return defaultPosition; - } - } - - /// - /// Returns a for starting line 0 and character 0, - /// and ending line 0 and character 0. - /// - public static Range DefaultRange - { - get - { - var defaultRange = s_defaultRange; - - // Since Range is mutable, it's possible that something might modify it. If that happens, we should know! - Debug.Assert( - defaultRange.Start.Line == 0 && - defaultRange.Start.Character == 0 && - defaultRange.End.Line == 0 && - defaultRange.End.Character == 0, - $"{nameof(RoslynLspFactory)}.{nameof(DefaultRange)} has been corrupted. Current value: {defaultRange.ToDisplayString()}"); - - return defaultRange; - } - } - - public static Position UndefinedPosition - { - get - { - var undefinedPosition = s_undefinedPosition; - - // Since Position is mutable, it's possible that something might modify it. If that happens, we should know! - Debug.Assert( - undefinedPosition.Line == -1 && - undefinedPosition.Character == -1, - $"{nameof(RoslynLspFactory)}.{nameof(UndefinedPosition)} has been corrupted. Current value: {undefinedPosition.ToDisplayString()}"); - - return undefinedPosition; - } - } - - public static Range UndefinedRange - { - get - { - var undefinedRange = s_undefinedRange; - - // Since Range is mutable, it's possible that something might modify it. If that happens, we should know! - Debug.Assert( - undefinedRange.Start.Line == -1 && - undefinedRange.Start.Character == -1 && - undefinedRange.End.Line == -1 && - undefinedRange.End.Character == -1, - $"{nameof(RoslynLspFactory)}.{nameof(UndefinedRange)} has been corrupted. Current value: {undefinedRange.ToDisplayString()}"); - - return undefinedRange; - } - } - - public static Position CreatePosition(int line, int character) - => (line, character) switch - { - (0, 0) => DefaultPosition, - (-1, -1) => UndefinedPosition, - _ => new(line, character) - }; - - public static Position CreatePosition(LinePosition linePosition) - => CreatePosition(linePosition.Line, linePosition.Character); - - public static Position CreatePosition((int line, int character) position) - => CreatePosition(position.line, position.character); - - public static Range CreateRange(int startLine, int startCharacter, int endLine, int endCharacter) - => startLine == endLine && startCharacter == endCharacter - ? CreateZeroWidthRange(startLine, startCharacter) - : CreateRange(CreatePosition(startLine, startCharacter), CreatePosition(endLine, endCharacter)); - - public static Range CreateRange(Position start, Position end) - => new() { Start = start, End = end }; - - public static Range CreateRange(LinePosition start, LinePosition end) - => CreateRange(start.Line, start.Character, end.Line, end.Character); - - public static Range CreateRange((int line, int character) start, (int line, int character) end) - => CreateRange(start.line, start.character, end.line, end.character); - - public static Range CreateRange(LinePositionSpan span) - => CreateRange(span.Start, span.End); - - public static Range CreateZeroWidthRange(int line, int character) - => (line, character) switch - { - (0, 0) => DefaultRange, - (-1, -1) => UndefinedRange, - _ => CreateZeroWidthRange(CreatePosition(line, character)) - }; - - public static Range CreateZeroWidthRange(Position position) - => CreateRange(position, position); - - public static Range CreateZeroWidthRange(LinePosition position) - => CreateRange(position, position); - - public static Range CreateZeroWidthRange((int line, int character) position) - => CreateRange(position, position); - - public static Range CreateSingleLineRange(int line, int character, int length) - => CreateRange(line, character, line, character + length); - - public static Range CreateSingleLineRange(Position start, int length) - => CreateRange(start, CreatePosition(start.Line, start.Character + length)); - - public static Range CreateSingleLineRange(LinePosition start, int length) - => CreateSingleLineRange(start.Line, start.Character, length); - - public static Range CreateSingleLineRange((int line, int character) start, int length) - => CreateRange(CreatePosition(start), CreatePosition(start.line, start.character + length)); - - public static Location CreateLocation(Uri uri, Range range) - => new() { Uri = uri, Range = range }; - - public static Location CreateLocation(Uri uri, LinePositionSpan span) - => new() { Uri = uri, Range = CreateRange(span) }; - - public static DocumentLink CreateDocumentLink(Uri target, Range range) - => new() { Target = target, Range = range }; - - public static DocumentLink CreateDocumentLink(Uri target, LinePositionSpan span) - => new() { Target = target, Range = CreateRange(span) }; - - public static TextEdit CreateTextEdit(Range range, string newText) - => new() { Range = range, NewText = newText }; - - public static TextEdit CreateTextEdit(LinePositionSpan span, string newText) - => CreateTextEdit(CreateRange(span), newText); - - public static TextEdit CreateTextEdit(int startLine, int startCharacter, int endLine, int endCharacter, string newText) - => CreateTextEdit(CreateRange(startLine, startCharacter, endLine, endCharacter), newText); - - public static TextEdit CreateTextEdit(Position start, Position end, string newText) - => CreateTextEdit(CreateRange(start, end), newText); - - public static TextEdit CreateTextEdit(LinePosition start, LinePosition end, string newText) - => CreateTextEdit(CreateRange(start, end), newText); - - public static TextEdit CreateTextEdit((int line, int character) start, (int line, int character) end, string newText) - => CreateTextEdit(CreateRange(start, end), newText); - - public static TextEdit CreateTextEdit(int line, int character, string newText) - => CreateTextEdit(CreateZeroWidthRange(line, character), newText); - - public static TextEdit CreateTextEdit(Position position, string newText) - => CreateTextEdit(CreateZeroWidthRange(position), newText); - - public static TextEdit CreateTextEdit(LinePosition position, string newText) - => CreateTextEdit(CreateZeroWidthRange(position.Line, position.Character), newText); - - public static TextEdit CreateTextEdit((int line, int character) position, string newText) - => CreateTextEdit(CreateZeroWidthRange(position), newText); -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/SolutionExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/SolutionExtensions.cs index ee91e733f94..80b90e68eeb 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/SolutionExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/SolutionExtensions.cs @@ -6,8 +6,8 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/SourceTextExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/SourceTextExtensions.cs index 6d0289525e2..390dbf9e25c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/SourceTextExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/SourceTextExtensions.cs @@ -7,7 +7,7 @@ using System.Collections.Immutable; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.TextDifferencing; +using Microsoft.CodeAnalysis.Razor.TextDifferencing; using Microsoft.CodeAnalysis.Razor.Workspaces; namespace Microsoft.CodeAnalysis.Text; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_LinePosition.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_LinePosition.cs deleted file mode 100644 index 8beb8510be0..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_LinePosition.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using Microsoft.CodeAnalysis.Text; - -namespace Microsoft.VisualStudio.LanguageServer.Protocol; - -internal static partial class VsLspExtensions -{ - public static Position ToPosition(this LinePosition linePosition) - => VsLspFactory.CreatePosition(linePosition.Line, linePosition.Character); - - public static Range ToZeroWidthRange(this LinePosition position) - => VsLspFactory.CreateZeroWidthRange(position); -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_LinePositionSpan.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_LinePositionSpan.cs deleted file mode 100644 index 270532bb5ab..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_LinePositionSpan.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using Microsoft.CodeAnalysis.Text; - -namespace Microsoft.VisualStudio.LanguageServer.Protocol; - -internal static partial class VsLspExtensions -{ - public static Range ToRange(this LinePositionSpan linePositionSpan) - => VsLspFactory.CreateRange(linePositionSpan); -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_Location.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_Location.cs deleted file mode 100644 index e3d77984aae..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Extensions/VsLspExtensions_Location.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System; - -namespace Microsoft.VisualStudio.LanguageServer.Protocol; - -internal static partial class VsLspExtensions -{ - public static void Deconstruct(this Location position, out Uri uri, out Range range) - => (uri, range) = (position.Uri, position.Range); -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/AbstractSyntaxNodeFoldingProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/AbstractSyntaxNodeFoldingProvider.cs index 58e81b4112c..7e5faab25e3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/AbstractSyntaxNodeFoldingProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/AbstractSyntaxNodeFoldingProvider.cs @@ -6,7 +6,6 @@ using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.FoldingRanges; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/FoldingRangeService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/FoldingRangeService.cs index 194ccb94d8c..3d8fe10f550 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/FoldingRangeService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/FoldingRangeService.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.FoldingRanges; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/IFoldingRangeService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/IFoldingRangeService.cs index 2f28b71db11..681cc651fbb 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/IFoldingRangeService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/IFoldingRangeService.cs @@ -4,7 +4,6 @@ using System.Collections.Immutable; using System.Threading; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.FoldingRanges; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/IRazorFoldingRangeProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/IRazorFoldingRangeProvider.cs index 857d6f4e8bc..e2bba9fb000 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/IRazorFoldingRangeProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/IRazorFoldingRangeProvider.cs @@ -3,7 +3,6 @@ using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.FoldingRanges; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/RazorFileUsingsFoldingSyntaxWalker.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/RazorFileUsingsFoldingSyntaxWalker.cs index 6dd4a046bf8..6d0618f0535 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/RazorFileUsingsFoldingSyntaxWalker.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/RazorFileUsingsFoldingSyntaxWalker.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.FoldingRanges; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/UsingsFoldingRangeProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/UsingsFoldingRangeProvider.cs index b04767e106f..925e70e64f2 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/UsingsFoldingRangeProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/FoldingRanges/UsingsFoldingRangeProvider.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.FoldingRanges; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/AddUsingsHelper.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/AddUsingsHelper.cs index ca76efbb5cb..e5df454ffcb 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/AddUsingsHelper.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/AddUsingsHelper.cs @@ -19,7 +19,6 @@ using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using RazorSyntaxNode = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxNode; namespace Microsoft.CodeAnalysis.Razor.Formatting; @@ -57,7 +56,7 @@ public static async Task GetUsingStatementEditsAsync(RazorCodeDocume Debug.Assert(codeDocument.Source.FilePath != null); var identifier = new OptionalVersionedTextDocumentIdentifier { Uri = new Uri(codeDocument.Source.FilePath, UriKind.Relative) }; var workspaceEdit = CreateAddUsingWorkspaceEdit(usingStatement, additionalEdit: null, codeDocument, codeDocumentIdentifier: identifier); - edits.AddRange(workspaceEdit.DocumentChanges!.Value.First.First().Edits); + edits.AddRange(workspaceEdit.DocumentChanges!.Value.First.First().Edits.Select(e => (TextEdit)e)); } return edits.ToArray(); @@ -174,7 +173,7 @@ private static TextDocumentEdit GenerateSingleUsingEditsInterpolated( { Debug.Assert(existingUsingDirectives.Count > 0); - using var edits = new PooledArrayBuilder(); + using var edits = new PooledArrayBuilder>(); var newText = $"@using {newUsingNamespace}{Environment.NewLine}"; foreach (var usingDirective in existingUsingDirectives) @@ -189,7 +188,7 @@ private static TextDocumentEdit GenerateSingleUsingEditsInterpolated( if (string.CompareOrdinal(newUsingNamespace, usingDirectiveNamespace) < 0) { var usingDirectiveLineIndex = codeDocument.Source.Text.GetLinePosition(usingDirective.Node.Span.Start).Line; - var edit = VsLspFactory.CreateTextEdit(line: usingDirectiveLineIndex, character: 0, newText); + var edit = LspFactory.CreateTextEdit(line: usingDirectiveLineIndex, character: 0, newText); edits.Add(edit); break; } @@ -200,7 +199,7 @@ private static TextDocumentEdit GenerateSingleUsingEditsInterpolated( { var endIndex = existingUsingDirectives[^1].Node.Span.End; var lineIndex = GetLineIndexOrEnd(codeDocument, endIndex - 1) + 1; - var edit = VsLspFactory.CreateTextEdit(line: lineIndex, character: 0, newText); + var edit = LspFactory.CreateTextEdit(line: lineIndex, character: 0, newText); edits.Add(edit); } @@ -234,7 +233,7 @@ private static TextDocumentEdit GenerateSingleUsingEditsAtTop( return new TextDocumentEdit { TextDocument = codeDocumentIdentifier, - Edits = [VsLspFactory.CreateTextEdit(insertPosition, newText: $"@using {newUsingNamespace}{Environment.NewLine}")] + Edits = [LspFactory.CreateTextEdit(insertPosition, newText: $"@using {newUsingNamespace}{Environment.NewLine}")] }; } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/CSharpFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/CSharpFormatter.cs index 095f2504df8..2b98430e686 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/CSharpFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/CSharpFormatter.cs @@ -14,7 +14,6 @@ using Microsoft.CodeAnalysis.Host; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Formatting; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingContext.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingContext.cs index 14cd4e20f00..f3c0f6eed47 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingContext.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingContext.cs @@ -11,11 +11,9 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Syntax; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Formatting; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingUtilities.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingUtilities.cs index 53c28cf761b..58602838b5a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingUtilities.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingUtilities.cs @@ -10,7 +10,6 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Formatting; @@ -294,9 +293,9 @@ static int GetIndentation(TextLine line) static bool IsWhitespace(char c) => c == ' ' || c == '\t'; - static ImmutableArray GetLineRanges(string text) + static ImmutableArray GetLineRanges(string text) { - using var builder = new PooledArrayBuilder(); + using var builder = new PooledArrayBuilder(); var start = 0; var end = text.IndexOf('\n'); while (true) @@ -338,4 +337,16 @@ public static TextEdit[] FixHtmlTextEdits(SourceText htmlSourceText, TextEdit[] var fixedChanges = htmlSourceText.MinimizeTextChanges(changes); return [.. fixedChanges.Select(htmlSourceText.GetTextEdit)]; } + + internal static SumType[] FixHtmlTextEdits(SourceText htmlSourceText, SumType[] edits) + { + // Avoid computing a minimal diff if we don't need to + if (!edits.Any(static e => ((TextEdit)e).NewText.Contains("~"))) + return edits; + + var changes = edits.SelectAsArray(e => htmlSourceText.GetTextChange((TextEdit)e)); + + var fixedChanges = htmlSourceText.MinimizeTextChanges(changes); + return [.. fixedChanges.Select(htmlSourceText.GetTextEdit)]; + } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingVisitor.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingVisitor.cs index 112a2694ac3..37bbbfc0290 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingVisitor.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/FormattingVisitor.cs @@ -490,8 +490,8 @@ private void WriteSpan(SyntaxNode node, FormattingSpanKind kind) Assumes.NotNull(_currentBlock); - var spanSource = new TextSpan(node.Position, node.FullWidth); - var blockSource = new TextSpan(_currentBlock.Position, _currentBlock.FullWidth); + var spanSource = new TextSpan(node.Position, node.Width); + var blockSource = new TextSpan(_currentBlock.Position, _currentBlock.Width); var span = new FormattingSpan( spanSource, diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/CSharpFormattingPassBase.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/CSharpFormattingPassBase.cs index 63d5d27cdd6..5d1136312c3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/CSharpFormattingPassBase.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/CSharpFormattingPassBase.cs @@ -18,7 +18,6 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using RazorSyntaxNode = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxNode; namespace Microsoft.CodeAnalysis.Razor.Formatting; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/CSharpOnTypeFormattingPass.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/CSharpOnTypeFormattingPass.cs index 5483dbc8804..41c66e206f3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/CSharpOnTypeFormattingPass.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/CSharpOnTypeFormattingPass.cs @@ -19,7 +19,6 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Formatting; @@ -193,11 +192,6 @@ protected async override Task> ExecuteCoreAsync(Forma private ImmutableArray RemapTextChanges(RazorCodeDocument codeDocument, ImmutableArray projectedTextChanges) { - if (codeDocument.IsUnsupported()) - { - return []; - } - var changes = DocumentMappingService.GetHostDocumentEdits(codeDocument.GetCSharpDocument(), projectedTextChanges); return changes.ToImmutableArray(); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/HtmlFormattingPassBase.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/HtmlFormattingPassBase.cs index 14220eef2e3..6039a9b00ea 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/HtmlFormattingPassBase.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/HtmlFormattingPassBase.cs @@ -11,7 +11,6 @@ using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Formatting; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/New/HtmlFormattingPass.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/New/HtmlFormattingPass.cs index 58907d493a1..9df5663a258 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/New/HtmlFormattingPass.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/New/HtmlFormattingPass.cs @@ -9,7 +9,6 @@ using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Formatting.New; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/RazorFormattingPass.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/RazorFormattingPass.cs index dc3e3eefce3..74a796bcab5 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/RazorFormattingPass.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/Passes/RazorFormattingPass.cs @@ -17,7 +17,6 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using RazorRazorSyntaxNodeList = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxList; using RazorSyntaxNode = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxNode; using RazorSyntaxNodeList = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxList; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingOptions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingOptions.cs index 367639abf22..cf7e9f9f7b1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingOptions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingOptions.cs @@ -3,8 +3,6 @@ using System.Runtime.Serialization; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using RoslynFormattingOptions = Roslyn.LanguageServer.Protocol.FormattingOptions; namespace Microsoft.CodeAnalysis.Razor.Formatting; @@ -30,21 +28,13 @@ public static RazorFormattingOptions From(FormattingOptions options, bool codeBl CodeBlockBraceOnNextLine = codeBlockBraceOnNextLine }; - public static RazorFormattingOptions From(RoslynFormattingOptions options, bool codeBlockBraceOnNextLine) - => new() - { - InsertSpaces = options.InsertSpaces, - TabSize = options.TabSize, - CodeBlockBraceOnNextLine = codeBlockBraceOnNextLine - }; - public RazorIndentationOptions ToIndentationOptions() => new( UseTabs: !InsertSpaces, TabSize: TabSize, IndentationSize: TabSize); - public RoslynFormattingOptions ToRoslynFormattingOptions() + public FormattingOptions ToLspFormattingOptions() => new() { InsertSpaces = InsertSpaces, diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingService.cs index d9ddbc564ca..38166958a2a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingService.cs @@ -10,7 +10,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Logging; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GlobalUsings.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GlobalUsings.cs new file mode 100644 index 00000000000..76d80acfa55 --- /dev/null +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GlobalUsings.cs @@ -0,0 +1,26 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the MIT license. See License.txt in the project root for license information. + +// This file is shared, but not all of the usings are needed for all files, so Roslyn seems keen to flag them as unused in this file +#pragma warning disable IDE0005 // Using directive is unnecessary. + +// Strictly speaking we don't need these aliases in this project, but keeping things consistent with other projects +// makes for a more pleasant development experience. + +// Avoid extern alias in every file that needs to use Range +global using LspColorPresentation = Roslyn.LanguageServer.Protocol.ColorPresentation; +global using LspDiagnostic = Roslyn.LanguageServer.Protocol.Diagnostic; +global using LspDiagnosticSeverity = Roslyn.LanguageServer.Protocol.DiagnosticSeverity; +global using LspDocumentHighlight = Roslyn.LanguageServer.Protocol.DocumentHighlight; +global using LspHover = Roslyn.LanguageServer.Protocol.Hover; +global using LspLocation = Roslyn.LanguageServer.Protocol.Location; +global using LspRange = Roslyn.LanguageServer.Protocol.Range; +global using LspSignatureHelp = Roslyn.LanguageServer.Protocol.SignatureHelp; + +// Avoid ambiguity errors because of our global using above +global using Range = System.Range; + +// We put our extensions on Roslyn's LSP types in the same namespace, for convenience, but of course without the alias, +// so to prevent confusion at not needing a using directive to access types, but needing one for extensions, we just +// global using the our extensions (which of course means they didn't need to be in the same namespace for convenience!) +global using Roslyn.LanguageServer.Protocol; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/AbstractRazorComponentDefinitionService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/AbstractRazorComponentDefinitionService.cs index 56f2c139a33..12f8754cb0d 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/AbstractRazorComponentDefinitionService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/AbstractRazorComponentDefinitionService.cs @@ -4,15 +4,11 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using LspLocation = Microsoft.VisualStudio.LanguageServer.Protocol.Location; -using LspRange = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.CodeAnalysis.Razor.GoToDefinition; @@ -38,7 +34,7 @@ internal abstract class AbstractRazorComponentDefinitionService( return null; } - if (!FileKinds.IsComponent(documentSnapshot.FileKind)) + if (!documentSnapshot.FileKind.IsComponent()) { _logger.LogInformation($"'{documentSnapshot.FileKind}' is not a component type."); return null; @@ -68,7 +64,7 @@ internal abstract class AbstractRazorComponentDefinitionService( var range = await GetNavigateRangeAsync(componentDocument, boundAttribute, cancellationToken).ConfigureAwait(false); - return VsLspFactory.CreateLocation(componentFilePath, range); + return LspFactory.CreateLocation(componentFilePath, range); } private async Task GetNavigateRangeAsync(IDocumentSnapshot documentSnapshot, BoundAttributeDescriptor? attributeDescriptor, CancellationToken cancellationToken) @@ -91,6 +87,6 @@ private async Task GetNavigateRangeAsync(IDocumentSnapshot documentSna // If we were trying to navigate to a property, and we couldn't find it, we can at least take // them to the file for the component. If the property was defined in a partial class they can // at least then press F7 to go there. - return VsLspFactory.DefaultRange; + return LspFactory.DefaultRange; } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/IRazorComponentDefinitionService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/IRazorComponentDefinitionService.cs index e5c3114e8c5..737e13794d5 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/IRazorComponentDefinitionService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/IRazorComponentDefinitionService.cs @@ -3,10 +3,8 @@ using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using LspLocation = Microsoft.VisualStudio.LanguageServer.Protocol.Location; namespace Microsoft.CodeAnalysis.Razor.GoToDefinition; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/RazorComponentDefinitionHelpers.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/RazorComponentDefinitionHelpers.cs index 3a93c429238..307f0100d9d 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/RazorComponentDefinitionHelpers.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/GoToDefinition/RazorComponentDefinitionHelpers.cs @@ -8,13 +8,11 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Syntax; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using LspRange = Microsoft.VisualStudio.LanguageServer.Protocol.Range; using RazorSyntaxKind = Microsoft.AspNetCore.Razor.Language.SyntaxKind; using RazorSyntaxNode = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxNode; using RazorSyntaxToken = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxToken; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Hover/HoverDisplayOptions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Hover/HoverDisplayOptions.cs index 6d56f33edd3..135ec99ecd2 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Hover/HoverDisplayOptions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Hover/HoverDisplayOptions.cs @@ -1,8 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.VisualStudio.LanguageServer.Protocol; - namespace Microsoft.CodeAnalysis.Razor.Hover; internal readonly record struct HoverDisplayOptions(MarkupKind MarkupKind, bool SupportsVisualStudioExtensions) diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Hover/HoverFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Hover/HoverFactory.cs index 7d41224c3c4..0cd22df76fb 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Hover/HoverFactory.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Hover/HoverFactory.cs @@ -17,9 +17,7 @@ using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.Editor.Razor; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Microsoft.VisualStudio.Text.Adornments; -using LspHover = Microsoft.VisualStudio.LanguageServer.Protocol.Hover; +using Roslyn.Text.Adornments; namespace Microsoft.CodeAnalysis.Razor.Hover; @@ -49,7 +47,7 @@ internal static class HoverFactory owner = owner.Parent; } - var tagHelperDocumentContext = codeDocument.GetTagHelperContext(); + var tagHelperContext = codeDocument.GetRequiredTagHelperContext(); if (HtmlFacts.TryGetElementInfo(owner, out var containingTagNameToken, out var attributes, closingForwardSlashOrCloseAngleToken: out _) && containingTagNameToken.Span.IntersectsWith(absoluteIndex)) @@ -73,7 +71,7 @@ internal static class HoverFactory var (parentTag, parentIsTagHelper) = TagHelperFacts.GetNearestAncestorTagInfo(ancestors); var stringifiedAttributes = TagHelperFacts.StringifyAttributes(attributes); var binding = TagHelperFacts.GetTagHelperBinding( - tagHelperDocumentContext, + tagHelperContext, containingTagNameToken.Content, stringifiedAttributes, parentTag: parentTag, @@ -94,8 +92,10 @@ internal static class HoverFactory var span = containingTagNameToken.GetLinePositionSpan(codeDocument.Source); + var filePath = codeDocument.Source.FilePath.AssumeNotNull(); + return ElementInfoToHoverAsync( - codeDocument.Source.FilePath, binding.Descriptors, span, options, componentAvailabilityService, cancellationToken); + filePath, binding.Descriptors, span, options, componentAvailabilityService, cancellationToken); } if (HtmlFacts.TryGetAttributeInfo(owner, out containingTagNameToken, out _, out var selectedAttributeName, out var selectedAttributeNameLocation, out attributes) && @@ -111,7 +111,7 @@ internal static class HoverFactory var stringifiedAttributes = TagHelperFacts.StringifyAttributes(attributes); var binding = TagHelperFacts.GetTagHelperBinding( - tagHelperDocumentContext, + tagHelperContext, containingTagNameToken.Content, stringifiedAttributes, parentTag: parentTag, @@ -125,7 +125,7 @@ internal static class HoverFactory Debug.Assert(binding.Descriptors.Any()); var tagHelperAttributes = TagHelperFacts.GetBoundTagHelperAttributes( - tagHelperDocumentContext, + tagHelperContext, selectedAttributeName.AssumeNotNull(), binding); @@ -158,13 +158,13 @@ internal static class HoverFactory { case SyntaxKind.MarkupTagHelperDirectiveAttribute: var directiveAttribute = (MarkupTagHelperDirectiveAttributeSyntax)attribute.Parent; - span = span.WithStart(start => start.WithCharacter(ch => ch - directiveAttribute.Transition.FullWidth)); + span = span.WithStart(start => start.WithCharacter(ch => ch - directiveAttribute.Transition.Width)); attributeName = "@" + attributeName; break; case SyntaxKind.MarkupMinimizedTagHelperDirectiveAttribute: var minimizedAttribute = (MarkupMinimizedTagHelperDirectiveAttributeSyntax)containingTag; - span = span.WithStart(start => start.WithCharacter(ch => ch - minimizedAttribute.Transition.FullWidth)); + span = span.WithStart(start => start.WithCharacter(ch => ch - minimizedAttribute.Transition.Width)); attributeName = "@" + attributeName; break; } @@ -217,7 +217,7 @@ internal static class HoverFactory } private static async Task ElementInfoToHoverAsync( - string? documentFilePath, + string documentFilePath, ImmutableArray descriptors, LinePositionSpan span, HoverDisplayOptions options, @@ -225,7 +225,7 @@ internal static class HoverFactory CancellationToken cancellationToken) { // Filter out attribute descriptors since we're creating an element hover - var keepAttributeInfo = FileKinds.GetFileKindFromFilePath(documentFilePath) == FileKinds.Legacy; + var keepAttributeInfo = FileKinds.GetFileKindFromPath(documentFilePath) == RazorFileKind.Legacy; var descriptionInfos = descriptors .Where(d => keepAttributeInfo || !d.IsAttributeDescriptor()) .SelectAsArray(BoundElementDescriptionInfo.From); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ICapabilitiesProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ICapabilitiesProvider.cs index e878ebdcd02..1bd61eb7102 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ICapabilitiesProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ICapabilitiesProvider.cs @@ -1,8 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.VisualStudio.LanguageServer.Protocol; - namespace Microsoft.AspNetCore.Razor.LanguageServer; internal interface ICapabilitiesProvider diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/IFilePathService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/IFilePathService.cs index 7813709d2be..1898cddf503 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/IFilePathService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/IFilePathService.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.Workspaces; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/IRazorComponentSearchEngine.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/IRazorComponentSearchEngine.cs index 3977c48b367..45a998e88c1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/IRazorComponentSearchEngine.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/IRazorComponentSearchEngine.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.Workspaces; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Logging/Handlers/LogMessageInterpolatedStringHandler.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Logging/Handlers/LogMessageInterpolatedStringHandler.cs index 3725b6662a2..76d81a010fd 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Logging/Handlers/LogMessageInterpolatedStringHandler.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Logging/Handlers/LogMessageInterpolatedStringHandler.cs @@ -4,8 +4,6 @@ using System.Runtime.CompilerServices; using System.Text; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Roslyn.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Logging; @@ -52,13 +50,9 @@ public override string ToString() private static string GetMessage(object? value) => value switch { - VisualStudio.LanguageServer.Protocol.Range range => range.ToDisplayString(), - VisualStudio.LanguageServer.Protocol.Position position => position.ToDisplayString(), - VisualStudio.LanguageServer.Protocol.ISumType sumType => GetMessage(sumType.Value), - - Roslyn.LanguageServer.Protocol.Range range => range.ToDisplayString(), - Roslyn.LanguageServer.Protocol.Position position => position.ToDisplayString(), - Roslyn.LanguageServer.Protocol.ISumType sumType => GetMessage(sumType.Value), + LspRange range => range.ToDisplayString(), + Position position => position.ToDisplayString(), + ISumType sumType => GetMessage(sumType.Value), null => "[null]", _ => value.ToString() ?? "[null]" diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Microsoft.CodeAnalysis.Razor.Workspaces.csproj b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Microsoft.CodeAnalysis.Razor.Workspaces.csproj index 5cf5e0393f5..08d59580d87 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Microsoft.CodeAnalysis.Razor.Workspaces.csproj +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Microsoft.CodeAnalysis.Razor.Workspaces.csproj @@ -12,11 +12,8 @@ - + - - - diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/DefaultProjectEngineFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/DefaultProjectEngineFactory.cs index 19e898887f5..9bbe818dcf7 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/DefaultProjectEngineFactory.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/DefaultProjectEngineFactory.cs @@ -3,11 +3,10 @@ using System; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis.Razor; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost; -internal class DefaultProjectEngineFactory : IProjectEngineFactory +internal sealed class DefaultProjectEngineFactory : IProjectEngineFactory { public string ConfigurationName => "Default"; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/EmptyProjectEngineFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/EmptyProjectEngineFactory.cs index fa13093d499..4a092e7527b 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/EmptyProjectEngineFactory.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/EmptyProjectEngineFactory.cs @@ -2,24 +2,19 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost; internal sealed class EmptyProjectEngineFactory : IProjectEngineFactory { public string ConfigurationName => "Empty"; + public RazorProjectEngine Create(RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action? configure) { - if (configuration is null) - { - throw new ArgumentNullException(nameof(configuration)); - } - - if (fileSystem is null) - { - throw new ArgumentNullException(nameof(fileSystem)); - } + ArgHelper.ThrowIfNull(configuration); + ArgHelper.ThrowIfNull(fileSystem); // This is a very basic implementation that will provide reasonable support without crashing. // If the user falls into this situation, ideally they can realize that something is wrong and take diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactory.cs index ca161df7f5a..ef6caceca7c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactory.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactory.cs @@ -4,7 +4,7 @@ using System; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost; internal interface IProjectEngineFactory { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactoryExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactoryExtensions.cs index a81a89b5c97..3bf046b3663 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactoryExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactoryExtensions.cs @@ -4,7 +4,7 @@ using System; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost; internal static class IProjectEngineFactoryExtensions { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactoryProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactoryProvider.cs index 1e8820866df..3c921d346f4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactoryProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/IProjectEngineFactoryProvider.cs @@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost; internal interface IProjectEngineFactoryProvider { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactories.SimpleFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactories.SimpleFactory.cs new file mode 100644 index 00000000000..d05c6c8cd11 --- /dev/null +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactories.SimpleFactory.cs @@ -0,0 +1,29 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the MIT license. See License.txt in the project root for license information. + +using System; +using System.Diagnostics; +using Microsoft.AspNetCore.Razor.Language; + +namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost; + +internal static partial class ProjectEngineFactories +{ + private sealed class SimpleFactory(string configurationName) : IProjectEngineFactory + { + public string ConfigurationName => configurationName; + + public RazorProjectEngine Create( + RazorConfiguration configuration, + RazorProjectFileSystem fileSystem, + Action? configure) + => RazorProjectEngine.Create(configuration, fileSystem, builder => + { + Debug.Assert(configuration.ConfigurationName == ConfigurationName); + + CompilerFeatures.Register(builder); + builder.RegisterExtensions(); + configure?.Invoke(builder); + }); + } +} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactories.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactories.cs index 0ca4a603d87..b6fe131ff13 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactories.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactories.cs @@ -3,7 +3,7 @@ using System.Collections.Immutable; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost; internal static partial class ProjectEngineFactories { @@ -11,13 +11,11 @@ internal static partial class ProjectEngineFactories public static IProjectEngineFactory Default { get; } = new DefaultProjectEngineFactory(); - public static IProjectEngineFactory MVC_1_0 { get; } = new ProjectEngineFactory("MVC-1.0"); - public static IProjectEngineFactory MVC_1_1 { get; } = new ProjectEngineFactory("MVC-1.1"); - public static IProjectEngineFactory MVC_2_0 { get; } = new ProjectEngineFactory("MVC-2.0"); - public static IProjectEngineFactory MVC_2_1 { get; } = new ProjectEngineFactory("MVC-2.1"); - public static IProjectEngineFactory MVC_3_0 { get; } = new ProjectEngineFactory("MVC-3.0"); - - public static IProjectEngineFactory Unsupported { get; } = new ProjectEngineFactory_Unsupported(); + public static IProjectEngineFactory MVC_1_0 { get; } = new SimpleFactory("MVC-1.0"); + public static IProjectEngineFactory MVC_1_1 { get; } = new SimpleFactory("MVC-1.1"); + public static IProjectEngineFactory MVC_2_0 { get; } = new SimpleFactory("MVC-2.0"); + public static IProjectEngineFactory MVC_2_1 { get; } = new SimpleFactory("MVC-2.1"); + public static IProjectEngineFactory MVC_3_0 { get; } = new SimpleFactory("MVC-3.0"); public static ImmutableArray All { get; } = [ @@ -27,10 +25,7 @@ internal static partial class ProjectEngineFactories MVC_1_1, MVC_2_0, MVC_2_1, - MVC_3_0, - - // Unsupported (Legacy/System.Web.Razor) - Unsupported + MVC_3_0 ]; public static IProjectEngineFactoryProvider DefaultProvider { get; } = new ProjectEngineFactoryProvider(All); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactory.InitializerKey.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactory.InitializerKey.cs deleted file mode 100644 index 20d5774714f..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactory.InitializerKey.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System; -using Microsoft.Extensions.Internal; - -namespace Microsoft.AspNetCore.Razor.ProjectSystem; - -internal sealed partial class ProjectEngineFactory -{ - private readonly record struct InitializerKey(string ConfigurationName, string AssemblyName) - { - public bool Equals(InitializerKey other) - => ConfigurationName == other.ConfigurationName && - AssemblyName == other.AssemblyName; - - public override int GetHashCode() - { - var hash = HashCodeCombiner.Start(); - hash.Add(ConfigurationName, StringComparer.Ordinal); - hash.Add(AssemblyName, StringComparer.Ordinal); - - return hash.CombinedHash; - } - } -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactory.cs deleted file mode 100644 index 5a9962a4163..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactory.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System; -using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis.Razor; - -namespace Microsoft.AspNetCore.Razor.ProjectSystem; - -internal sealed partial class ProjectEngineFactory(string configurationName) : IProjectEngineFactory -{ - public string ConfigurationName => configurationName; - - public RazorProjectEngine Create( - RazorConfiguration configuration, - RazorProjectFileSystem fileSystem, - Action? configure) - => RazorProjectEngine.Create(configuration, fileSystem, builder => - { - CompilerFeatures.Register(builder); - builder.RegisterExtensions(); - configure?.Invoke(builder); - }); -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactoryProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactoryProvider.cs index 548f0319d1a..18d5e9b42a5 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactoryProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactoryProvider.cs @@ -4,9 +4,9 @@ using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost; -internal class ProjectEngineFactoryProvider(ImmutableArray factories) : IProjectEngineFactoryProvider +internal sealed class ProjectEngineFactoryProvider(ImmutableArray factories) : IProjectEngineFactoryProvider { public IProjectEngineFactory GetFactory(RazorConfiguration configuration) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactory_Unsupported.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactory_Unsupported.cs deleted file mode 100644 index 21b61e44395..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/ProjectEngineFactory_Unsupported.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System; -using System.Linq; -using Microsoft.AspNetCore.Razor.Language; - -namespace Microsoft.AspNetCore.Razor.ProjectSystem; - -internal class ProjectEngineFactory_Unsupported : IProjectEngineFactory -{ - public string ConfigurationName => UnsupportedRazorConfiguration.Instance.ConfigurationName; - - public RazorProjectEngine Create(RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action? configure) - { - return RazorProjectEngine.Create(configuration, fileSystem, builder => - { - var csharpLoweringIndex = builder.Phases.IndexOf(builder.Phases.OfType().Single()); - builder.Phases[csharpLoweringIndex] = new UnsupportedCSharpLoweringPhase(); - }); - } -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/UnsupportedCSharpLoweringPhase.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/UnsupportedCSharpLoweringPhase.cs deleted file mode 100644 index a02f6422904..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/UnsupportedCSharpLoweringPhase.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System.Text; -using System.Threading; -using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis.Text; - -namespace Microsoft.AspNetCore.Razor.ProjectSystem; - -internal class UnsupportedCSharpLoweringPhase : RazorEnginePhaseBase, IRazorCSharpLoweringPhase -{ - internal const string UnsupportedDisclaimer = "// Razor CSharp output is not supported for this project's version of Razor."; - - private static readonly SourceText s_disclaimerText = SourceText.From(UnsupportedDisclaimer, Encoding.UTF8); - - protected override void ExecuteCore(RazorCodeDocument codeDocument, CancellationToken cancellationToken) - { - var documentNode = codeDocument.GetDocumentIntermediateNode(); - ThrowForMissingDocumentDependency(documentNode); - - var csharpDocument = new RazorCSharpDocument(codeDocument, s_disclaimerText, documentNode.Options, diagnostics: []); - codeDocument.SetCSharpDocument(csharpDocument); - codeDocument.SetUnsupported(); - } -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/UnsupportedRazorConfiguration.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/UnsupportedRazorConfiguration.cs deleted file mode 100644 index ab36442b339..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectEngineHost/UnsupportedRazorConfiguration.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using Microsoft.AspNetCore.Razor.Language; - -namespace Microsoft.AspNetCore.Razor.ProjectSystem; - -internal static class UnsupportedRazorConfiguration -{ - public static readonly RazorConfiguration Instance = new( - RazorLanguageVersion.Version_1_0, - "UnsupportedRazor", - [new("UnsupportedRazorExtension")]); -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/AbstractRazorProjectInfoDriver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/AbstractRazorProjectInfoDriver.cs index b26d502a35a..63b40516f8a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/AbstractRazorProjectInfoDriver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/AbstractRazorProjectInfoDriver.cs @@ -8,9 +8,8 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.VisualStudio.Threading; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/CodeDocumentGenerator.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/CodeDocumentGenerator.cs index efa7739afed..32f1b0cac45 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/CodeDocumentGenerator.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/CodeDocumentGenerator.cs @@ -12,7 +12,7 @@ internal readonly struct CodeDocumentGenerator(RazorProjectEngine projectEngine, { public RazorCodeDocument Generate( RazorSourceDocument source, - string fileKind, + RazorFileKind fileKind, ImmutableArray importSources, ImmutableArray tagHelpers, CancellationToken cancellationToken) @@ -26,7 +26,7 @@ public RazorCodeDocument Generate( public RazorCodeDocument GenerateDesignTime( RazorSourceDocument source, - string fileKind, + RazorFileKind fileKind, ImmutableArray importSources, ImmutableArray tagHelpers, CancellationToken cancellationToken) diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/CompilationHelpers.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/CompilationHelpers.cs index 9796decc4d6..db960f2d816 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/CompilationHelpers.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/CompilationHelpers.cs @@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentContext.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentContext.cs index 70bc53b8b3f..3caaa93fed4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentContext.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentContext.cs @@ -8,10 +8,8 @@ using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Syntax; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using RazorSyntaxNode = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxNode; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; @@ -25,7 +23,7 @@ internal class DocumentContext(Uri uri, IDocumentSnapshot snapshot, VSProjectCon public Uri Uri { get; } = uri; public IDocumentSnapshot Snapshot { get; } = snapshot; public string FilePath => Snapshot.FilePath; - public string FileKind => Snapshot.FileKind; + public RazorFileKind FileKind => Snapshot.FileKind; public IProjectSnapshot Project => Snapshot.Project; public TextDocumentIdentifier GetTextDocumentIdentifier() @@ -106,7 +104,7 @@ public ValueTask GetTagHelperContextAsync(Cancellation static TagHelperDocumentContext GetTagHelperContextCore(RazorCodeDocument codeDocument) { - return codeDocument.GetTagHelperContext().AssumeNotNull(); + return codeDocument.GetRequiredTagHelperContext(); } async ValueTask GetTagHelperContextCoreAsync(CancellationToken cancellationToken) diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentKey.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentKey.cs index e4b48fe8df8..b20cf283f2d 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentKey.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentKey.cs @@ -2,10 +2,9 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; -using Microsoft.CodeAnalysis.Razor; using Microsoft.Extensions.Internal; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; internal readonly record struct DocumentKey : IComparable { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentSnapshot.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentSnapshot.cs index 9a31327616c..085592f2d69 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentSnapshot.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentSnapshot.cs @@ -5,22 +5,31 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem.Legacy; +using Microsoft.CodeAnalysis.Razor.ProjectSystem.Sources; using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; -internal sealed class DocumentSnapshot(ProjectSnapshot project, DocumentState state) : IDocumentSnapshot, ILegacyDocumentSnapshot, IDesignTimeCodeGenerator +internal sealed class DocumentSnapshot : IDocumentSnapshot, ILegacyDocumentSnapshot, IDesignTimeCodeGenerator { - public ProjectSnapshot Project { get; } = project; + private readonly GeneratedOutputSource _generatedOutputSource; - private readonly DocumentState _state = state; + public ProjectSnapshot Project { get; } + + private readonly DocumentState _state; + + public DocumentSnapshot(ProjectSnapshot project, DocumentState state) + { + Project = project; + _state = state; + _generatedOutputSource = new(this); + } public HostDocument HostDocument => _state.HostDocument; public DocumentKey Key => new(Project.Key, FilePath); - public string FileKind => _state.HostDocument.FileKind; + public RazorFileKind FileKind => _state.HostDocument.FileKind; public string FilePath => _state.HostDocument.FilePath; public string TargetPath => _state.HostDocument.TargetPath; public int Version => _state.Version; @@ -40,10 +49,10 @@ public ValueTask GetTextVersionAsync(CancellationToken cancellatio => _state.GetTextVersionAsync(cancellationToken); public bool TryGetGeneratedOutput([NotNullWhen(true)] out RazorCodeDocument? result) - => _state.TryGetGeneratedOutput(out result); + => _generatedOutputSource.TryGetValue(out result); public ValueTask GetGeneratedOutputAsync(CancellationToken cancellationToken) - => _state.GetGeneratedOutputAsync(this, cancellationToken); + => _generatedOutputSource.GetValueAsync(cancellationToken); public IDocumentSnapshot WithText(SourceText text) { @@ -68,7 +77,7 @@ public Task GenerateDesignTimeOutputAsync(CancellationToken c #region ILegacyDocumentSnapshot support - string ILegacyDocumentSnapshot.FileKind => FileKind; + RazorFileKind ILegacyDocumentSnapshot.FileKind => FileKind; #endregion } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentState.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentState.cs index 91ff97c3e46..e2f589905ef 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentState.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/DocumentState.cs @@ -4,7 +4,6 @@ using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Language; using Microsoft.CodeAnalysis.Razor.ProjectSystem.Sources; using Microsoft.CodeAnalysis.Text; @@ -16,14 +15,12 @@ internal sealed partial class DocumentState public int Version { get; } private readonly ITextAndVersionSource _textAndVersionSource; - private readonly GeneratedOutputSource _generatedOutputSource; private DocumentState(HostDocument hostDocument, ITextAndVersionSource textAndVersionSource) { HostDocument = hostDocument; Version = 1; _textAndVersionSource = textAndVersionSource; - _generatedOutputSource = new(); } private DocumentState(DocumentState oldState, ITextAndVersionSource textAndVersionSource) @@ -31,7 +28,6 @@ private DocumentState(DocumentState oldState, ITextAndVersionSource textAndVersi HostDocument = oldState.HostDocument; Version = oldState.Version + 1; _textAndVersionSource = textAndVersionSource; - _generatedOutputSource = new(); } public static DocumentState Create(HostDocument hostDocument, SourceText text) @@ -46,12 +42,6 @@ private static ConstantTextAndVersionSource CreateTextAndVersionSource(SourceTex private static LoadableTextAndVersionSource CreateTextAndVersionSource(TextLoader textLoader) => new(textLoader); - public bool TryGetGeneratedOutput([NotNullWhen(true)] out RazorCodeDocument? result) - => _generatedOutputSource.TryGetValue(out result); - - public ValueTask GetGeneratedOutputAsync(DocumentSnapshot document, CancellationToken cancellationToken) - => _generatedOutputSource.GetValueAsync(document, cancellationToken); - public bool TryGetTextAndVersion([NotNullWhen(true)] out TextAndVersion? result) => _textAndVersionSource.TryGetValue(out result); @@ -110,13 +100,7 @@ async ValueTask GetTextVersionCoreAsync(CancellationToken cancella } } - public DocumentState WithConfigurationChange() - => new(this, _textAndVersionSource); - - public DocumentState WithImportsChange() - => new(this, _textAndVersionSource); - - public DocumentState WithProjectWorkspaceStateChange() + public DocumentState UpdateVersion() => new(this, _textAndVersionSource); public DocumentState WithText(SourceText text, VersionStamp textVersion) diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/EmptyTextLoader.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/EmptyTextLoader.cs index d57c6451e75..658b3fc020e 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/EmptyTextLoader.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/EmptyTextLoader.cs @@ -1,8 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -#nullable disable - using System.Text; using System.Threading; using System.Threading.Tasks; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Extensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Extensions.cs index 1eee49750d9..3c590cbeee7 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Extensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Extensions.cs @@ -6,11 +6,10 @@ #endif using System.Diagnostics; -using Microsoft.AspNetCore.Razor.Serialization; -using Microsoft.AspNetCore.Razor.Utilities; -using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Razor.Serialization; +using Microsoft.CodeAnalysis.Razor.Utilities; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; internal static class Extensions { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/HostDocument.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/HostDocument.cs index 61f0bbdccc0..260b9cff47c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/HostDocument.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/HostDocument.cs @@ -7,14 +7,14 @@ namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; internal sealed record class HostDocument { - public string FileKind { get; init; } + public RazorFileKind FileKind { get; init; } public string FilePath { get; init; } public string TargetPath { get; init; } - public HostDocument(string filePath, string targetPath, string? fileKind = null) + public HostDocument(string filePath, string targetPath, RazorFileKind? fileKind = null) { FilePath = filePath; TargetPath = targetPath; - FileKind = fileKind ?? FileKinds.GetFileKindFromFilePath(filePath); + FileKind = fileKind ?? FileKinds.GetFileKindFromPath(filePath); } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/HostProject.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/HostProject.cs index f4f00481a0f..2a344a34bcc 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/HostProject.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/HostProject.cs @@ -3,7 +3,6 @@ using System.IO; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.Extensions.Internal; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentSnapshot.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentSnapshot.cs index a82ec285804..84cf230a744 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentSnapshot.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentSnapshot.cs @@ -5,14 +5,13 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Text; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; internal interface IDocumentSnapshot { - string FileKind { get; } + RazorFileKind FileKind { get; } string FilePath { get; } string TargetPath { get; } IProjectSnapshot Project { get; } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentSnapshotExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentSnapshotExtensions.cs index 6325c6a0dd9..4d3a574b86b 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentSnapshotExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IDocumentSnapshotExtensions.cs @@ -6,7 +6,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; @@ -28,7 +27,7 @@ public static async Task GetSourceAsync(this IDocumentSnaps CancellationToken cancellationToken) { // No point doing anything if its not a component - if (documentSnapshot.FileKind != FileKinds.Component) + if (documentSnapshot.FileKind != RazorFileKind.Component) { return null; } @@ -58,7 +57,7 @@ public static async Task GetSourceAsync(this IDocumentSnaps public static bool IsPathCandidateForComponent(this IDocumentSnapshot documentSnapshot, ReadOnlyMemory path) { - if (documentSnapshot.FileKind != FileKinds.Component) + if (documentSnapshot.FileKind != RazorFileKind.Component) { return false; } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IProjectSnapshot.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IProjectSnapshot.cs index 9ca0249622f..f01a18a7ef1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IProjectSnapshot.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IProjectSnapshot.cs @@ -9,7 +9,7 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.CodeAnalysis.CSharp; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; internal interface IProjectSnapshot { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IRazorProjectInfoDriver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IRazorProjectInfoDriver.cs index c465e309174..8a9127987a7 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IRazorProjectInfoDriver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IRazorProjectInfoDriver.cs @@ -3,7 +3,6 @@ using System.Collections.Immutable; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IRazorProjectInfoListener.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IRazorProjectInfoListener.cs index e0ab8f312db..c047b6b9c88 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IRazorProjectInfoListener.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/IRazorProjectInfoListener.cs @@ -3,7 +3,6 @@ using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ISolutionQueryOperations.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ISolutionQueryOperations.cs index 3703a0ee9a7..068a4547d84 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ISolutionQueryOperations.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ISolutionQueryOperations.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Collections.Immutable; -using Microsoft.AspNetCore.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Legacy/ILegacyDocumentSnapshot.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Legacy/ILegacyDocumentSnapshot.cs index a8df3962469..0420c28a8a1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Legacy/ILegacyDocumentSnapshot.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Legacy/ILegacyDocumentSnapshot.cs @@ -1,6 +1,8 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. +using Microsoft.AspNetCore.Razor.Language; + namespace Microsoft.CodeAnalysis.Razor.ProjectSystem.Legacy; /// @@ -11,5 +13,5 @@ namespace Microsoft.CodeAnalysis.Razor.ProjectSystem.Legacy; /// internal interface ILegacyDocumentSnapshot { - string FileKind { get; } + RazorFileKind FileKind { get; } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectChangeEventArgs.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectChangeEventArgs.cs index 879600a6945..95422d0f931 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectChangeEventArgs.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectChangeEventArgs.cs @@ -3,7 +3,6 @@ using System; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectKey.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectKey.cs index 034f91d6263..33349ec59f4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectKey.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectKey.cs @@ -4,10 +4,9 @@ using System; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; -using Microsoft.AspNetCore.Razor.Utilities; -using Microsoft.CodeAnalysis.Razor; +using Microsoft.CodeAnalysis.Razor.Utilities; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; /// /// A very light wrapper around a file path, used to ensure consistency across the code base for what constitutes the unique diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshot.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshot.cs index 07ba138b574..11a26b5bd89 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshot.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshot.cs @@ -8,10 +8,9 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Razor.ProjectSystem.Legacy; +using Microsoft.CodeAnalysis.Razor.Utilities; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; @@ -20,7 +19,7 @@ internal sealed class ProjectSnapshot(ProjectState state) : IProjectSnapshot, IL private readonly ProjectState _state = state; private readonly object _gate = new(); - private readonly Dictionary _filePathToDocumentMap = new(FilePathNormalizingComparer.Instance); + private Dictionary? _filePathToDocumentMap; public HostProject HostProject => _state.HostProject; public RazorCompilerOptions CompilerOptions => _state.CompilerOptions; @@ -53,8 +52,12 @@ public bool ContainsDocument(string filePath) // ImmutableDictionary<,>, which has O(log n) lookup. So, checking _filePathToDocumentMap // first is faster if the DocumentSnapshot has already been created. - return _filePathToDocumentMap.ContainsKey(filePath) || - _state.Documents.ContainsKey(filePath); + if (_filePathToDocumentMap is not null && _filePathToDocumentMap.ContainsKey(filePath)) + { + return true; + } + + return _state.Documents.ContainsKey(filePath); } } @@ -63,7 +66,8 @@ public bool TryGetDocument(string filePath, [NotNullWhen(true)] out DocumentSnap lock (_gate) { // Have we already seen this document? If so, return it! - if (_filePathToDocumentMap.TryGetValue(filePath, out var snapshot)) + if (_filePathToDocumentMap is not null && + _filePathToDocumentMap.TryGetValue(filePath, out var snapshot)) { document = snapshot; return true; @@ -78,6 +82,8 @@ public bool TryGetDocument(string filePath, [NotNullWhen(true)] out DocumentSnap // If we have DocumentState, go ahead and create a new DocumentSnapshot. snapshot = new DocumentSnapshot(this, state); + + _filePathToDocumentMap ??= new(capacity: _state.Documents.Count, FilePathNormalizingComparer.Instance); _filePathToDocumentMap.Add(filePath, snapshot); document = snapshot; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotExtensions.cs index e0b53cdfbfa..de8f196963b 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotExtensions.cs @@ -3,8 +3,7 @@ using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Serialization; +using Microsoft.CodeAnalysis.Razor.Serialization; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManager.Updater.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManager.Updater.cs index ea36430034a..3ec450833c0 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManager.Updater.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManager.Updater.cs @@ -3,7 +3,6 @@ using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManager.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManager.cs index b92ac3a4bf0..100aac25fe5 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManager.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManager.cs @@ -9,9 +9,9 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Threading; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManagerExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManagerExtensions.cs index 1e9a7fba8ab..e75de0820d5 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManagerExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectSnapshotManagerExtensions.cs @@ -3,7 +3,6 @@ using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectState.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectState.cs index 2a1f79d2d96..c7c77c9d2d4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectState.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectState.cs @@ -11,10 +11,9 @@ using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.CSharp; - +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Text; using Microsoft.Extensions.ObjectPool; @@ -259,7 +258,7 @@ public ProjectState WithHostProject(HostProject hostProject) return this; } - var documents = UpdateDocuments(static x => x.WithConfigurationChange()); + var documents = UpdateDocuments(static x => x.UpdateVersion()); // If the host project has changed then we need to recompute the imports map var importsToRelatedDocuments = BuildImportsMap(documents.Values, ProjectEngine); @@ -277,7 +276,7 @@ public ProjectState WithProjectWorkspaceState(ProjectWorkspaceState projectWorks return this; } - var documents = UpdateDocuments(static x => x.WithProjectWorkspaceStateChange()); + var documents = UpdateDocuments(static x => x.UpdateVersion()); return new(this, HostProject, projectWorkspaceState, documents, ImportsToRelatedDocuments, retainProjectEngine: true); } @@ -378,7 +377,7 @@ private ImmutableDictionary UpdateRelatedDocumentsIfNeces return documents; } - var updates = relatedDocuments.Select(x => KeyValuePair.Create(x, documents[x].WithImportsChange())); + var updates = relatedDocuments.Select(x => KeyValuePair.Create(x, documents[x].UpdateVersion())); return documents.SetItems(updates); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectWorkspaceState.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectWorkspaceState.cs index f8eb552ce80..ecbc2807360 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectWorkspaceState.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/ProjectWorkspaceState.cs @@ -7,7 +7,7 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.Extensions.Internal; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; internal sealed class ProjectWorkspaceState : IEquatable { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/RazorProjectInfo.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/RazorProjectInfo.cs index 86158c6ceb9..af4fbdc65f7 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/RazorProjectInfo.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/RazorProjectInfo.cs @@ -11,12 +11,12 @@ using MessagePack; using MessagePack.Resolvers; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.Serialization; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Resolvers; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Razor.Serialization; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; using Microsoft.Extensions.Internal; -namespace Microsoft.AspNetCore.Razor.ProjectSystem; +namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; internal sealed record class RazorProjectInfo { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Sources/GeneratedOutputSource.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Sources/GeneratedOutputSource.cs index 218a6b5b305..57243cc51d2 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Sources/GeneratedOutputSource.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/Sources/GeneratedOutputSource.cs @@ -1,27 +1,38 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. +using System; using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.Threading; +using Microsoft.CodeAnalysis.Razor.Threading; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem.Sources; -internal sealed class GeneratedOutputSource +internal sealed class GeneratedOutputSource(DocumentSnapshot document) { + private readonly DocumentSnapshot _document = document; private readonly SemaphoreSlim _gate = new(initialCount: 1); - private RazorCodeDocument? _output; + // Hold the output in a WeakReference to avoid memory leaks in the case of a long-lived + // document snapshots. In particular, the DynamicFileInfo system results in the Roslyn + // workspace holding onto document snapshots. + private WeakReference? _output; public bool TryGetValue([NotNullWhen(true)] out RazorCodeDocument? result) { - result = _output; - return result is not null; + var output = _output; + if (output is null) + { + result = null; + return false; + } + + return output.TryGetTarget(out result); } - public async ValueTask GetValueAsync(DocumentSnapshot document, CancellationToken cancellationToken) + public async ValueTask GetValueAsync(CancellationToken cancellationToken) { if (TryGetValue(out var result)) { @@ -35,15 +46,24 @@ public async ValueTask GetValueAsync(DocumentSnapshot documen return result; } - var project = document.Project; + var project = _document.Project; var projectEngine = project.ProjectEngine; var compilerOptions = project.CompilerOptions; - _output = await CompilationHelpers - .GenerateCodeDocumentAsync(document, projectEngine, compilerOptions, cancellationToken) + result = await CompilationHelpers + .GenerateCodeDocumentAsync(_document, projectEngine, compilerOptions, cancellationToken) .ConfigureAwait(false); - return _output; + if (_output is null) + { + _output = new(result); + } + else + { + _output.SetTarget(result); + } + + return result; } } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/AbstractClientCapabilitiesService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/AbstractClientCapabilitiesService.cs index c79fa014352..c6150c8fc01 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/AbstractClientCapabilitiesService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/AbstractClientCapabilitiesService.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/AutoInsert/RemoteAutoInsertTextEdit.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/AutoInsert/RemoteAutoInsertTextEdit.cs index 0a56e5b12c2..acb0073d424 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/AutoInsert/RemoteAutoInsertTextEdit.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/AutoInsert/RemoteAutoInsertTextEdit.cs @@ -3,10 +3,6 @@ using System.Runtime.Serialization; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using static Microsoft.VisualStudio.LanguageServer.Protocol.VsLspExtensions; -using static Roslyn.LanguageServer.Protocol.RoslynLspExtensions; -using RoslynInsertTextFormat = Roslyn.LanguageServer.Protocol.InsertTextFormat; namespace Microsoft.CodeAnalysis.Razor.Protocol.AutoInsert; @@ -14,19 +10,19 @@ namespace Microsoft.CodeAnalysis.Razor.Protocol.AutoInsert; internal readonly record struct RemoteAutoInsertTextEdit( [property: DataMember(Order = 0)] LinePositionSpan LinePositionSpan, [property: DataMember(Order = 1)] string NewText, - [property: DataMember(Order = 2)] RoslynInsertTextFormat InsertTextFormat) + [property: DataMember(Order = 2)] InsertTextFormat InsertTextFormat) { public static RemoteAutoInsertTextEdit FromLspInsertTextEdit(VSInternalDocumentOnAutoInsertResponseItem edit) => new( edit.TextEdit.Range.ToLinePositionSpan(), edit.TextEdit.NewText, - (RoslynInsertTextFormat)edit.TextEditFormat); + edit.TextEditFormat); public static VSInternalDocumentOnAutoInsertResponseItem ToLspInsertTextEdit(RemoteAutoInsertTextEdit edit) => new() { - TextEdit = VsLspFactory.CreateTextEdit(edit.LinePositionSpan, edit.NewText), - TextEditFormat = (InsertTextFormat)edit.InsertTextFormat, + TextEdit = LspFactory.CreateTextEdit(edit.LinePositionSpan, edit.NewText), + TextEditFormat = edit.InsertTextFormat, }; public override string ToString() diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/FormatNewFileParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/FormatNewFileParams.cs index 6c2f5d4b282..4fa3b5b7fbd 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/FormatNewFileParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/FormatNewFileParams.cs @@ -3,7 +3,6 @@ using System.Runtime.Serialization; using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/RazorResolveCodeActionParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/RazorResolveCodeActionParams.cs index 4ecf43d0505..5e82598af39 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/RazorResolveCodeActionParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/RazorResolveCodeActionParams.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/SimplifyMethodParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/SimplifyMethodParams.cs index 516afa1fd4d..2a25dd30c47 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/SimplifyMethodParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/SimplifyMethodParams.cs @@ -3,7 +3,6 @@ using System.Runtime.Serialization; using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/VSCodeActionParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/VSCodeActionParams.cs index ae017574b92..6f6c27b574f 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/VSCodeActionParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/CodeActions/VSCodeActionParams.cs @@ -3,7 +3,6 @@ using System.Runtime.Serialization; using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; @@ -22,7 +21,7 @@ internal class VSCodeActionParams [JsonPropertyName("range")] [DataMember(Name = "range")] - public required Range Range { get; set; } + public required LspRange Range { get; set; } [JsonPropertyName("context")] [DataMember(Name = "context")] diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/ColorPresentation/ColorPresentation.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/ColorPresentation/ColorPresentation.cs deleted file mode 100644 index d8f678ac6bc..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/ColorPresentation/ColorPresentation.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -#nullable disable - -using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; - -namespace Microsoft.CodeAnalysis.Razor.Protocol.ColorPresentation; - -// VS doesn't support textDocument/colorPresentation but VSCode does. This class is a workaround until VS adds support. -internal sealed class ColorPresentation -{ - [JsonPropertyName("label")] - public string Label { get; set; } - - [JsonPropertyName("textEdit")] - public TextEdit TextEdit { get; set; } - - [JsonPropertyName("additionalTextEdits")] - public TextEdit[] AdditionalTextEdits { get; set; } -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/ColorPresentation/ColorPresentationParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/ColorPresentation/ColorPresentationParams.cs deleted file mode 100644 index e56dfddec45..00000000000 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/ColorPresentation/ColorPresentationParams.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -#nullable disable - -using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; - -namespace Microsoft.CodeAnalysis.Razor.Protocol.ColorPresentation; - -// VS doesn't support textDocument/colorPresentation but VSCode does. This class is a workaround until VS adds support. -internal class ColorPresentationParams -{ - [JsonPropertyName("textDocument")] - public TextDocumentIdentifier TextDocument { get; set; } - - [JsonPropertyName("color")] - public Color Color { get; set; } - - [JsonPropertyName("range")] - public Range Range { get; set; } -} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/ColorPresentation/DelegatedDocumentColorParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/ColorPresentation/DelegatedDocumentColorParams.cs index 89729afc428..6c5709be2a3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/ColorPresentation/DelegatedDocumentColorParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/ColorPresentation/DelegatedDocumentColorParams.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.ColorPresentation; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Competion/CompletionPositionInfo.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Completion/CompletionPositionInfo.cs similarity index 96% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Competion/CompletionPositionInfo.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Completion/CompletionPositionInfo.cs index 9132419d11b..66788f38f5e 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Competion/CompletionPositionInfo.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Completion/CompletionPositionInfo.cs @@ -3,7 +3,6 @@ using System.Text.Json.Serialization; using Microsoft.CodeAnalysis.Razor.DocumentMapping; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Completion; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Completion/RazorInlineCompletionRequest.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Completion/RazorInlineCompletionRequest.cs index 2c4a0a6b689..07aaf76af78 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Completion/RazorInlineCompletionRequest.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Completion/RazorInlineCompletionRequest.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Completion; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Completion/RazorVSInternalCompletionList.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Completion/RazorVSInternalCompletionList.cs new file mode 100644 index 00000000000..eccf35ebb18 --- /dev/null +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Completion/RazorVSInternalCompletionList.cs @@ -0,0 +1,45 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the MIT license. See License.txt in the project root for license information. + +using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Serialization; +using Microsoft.CodeAnalysis.Razor.Protocol; + +namespace Roslyn.LanguageServer.Protocol; + +/// +/// A subclass of the LSP protocol that ensures correct serialization between LSP servers. +/// +/// +/// This is the same as the LSP protocol except that it strongly types the property, +/// because our custom message target gets handled by a JsonRpc connection set up by the editor, that has no Roslyn converters. +/// +internal sealed class RazorVSInternalCompletionList : VSInternalCompletionList +{ + public RazorVSInternalCompletionList() + { + } + + [SetsRequiredMembers] + public RazorVSInternalCompletionList(VSInternalCompletionList completionList) + { + this.Data = completionList.Data; + this.CommitCharacters = completionList.CommitCharacters; + this.ContinueCharacters = completionList.ContinueCharacters; + this.IsIncomplete = completionList.IsIncomplete; + this.Items = JsonHelpers.ConvertAll(completionList.Items); + this.ItemDefaults = completionList.ItemDefaults; + this.SuggestionMode = completionList.SuggestionMode; + } + + /// + /// The completion items. + /// + [JsonPropertyName("items")] + [JsonRequired] + public new required VSInternalCompletionItem[] Items + { + get => (VSInternalCompletionItem[])base.Items; + set => base.Items = value; + } +} diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorBreakpointSpanParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorBreakpointSpanParams.cs index fdf956fc7f4..40db6e9e947 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorBreakpointSpanParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorBreakpointSpanParams.cs @@ -3,7 +3,6 @@ using System; using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Debugging; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorBreakpointSpanResponse.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorBreakpointSpanResponse.cs index c12d63eb605..880ae17e051 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorBreakpointSpanResponse.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorBreakpointSpanResponse.cs @@ -2,12 +2,11 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Debugging; internal class RazorBreakpointSpanResponse { [JsonPropertyName("range")] - public required Range Range { get; init; } + public required LspRange Range { get; init; } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorProximityExpressionsParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorProximityExpressionsParams.cs index 8f20b3ff8ac..93b268338a9 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorProximityExpressionsParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Debugging/RazorProximityExpressionsParams.cs @@ -3,7 +3,6 @@ using System; using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Debugging; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DelegatedTypes.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DelegatedTypes.cs index bbfb3dcf1fd..6e974b7c7e3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DelegatedTypes.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DelegatedTypes.cs @@ -11,7 +11,6 @@ namespace Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Completion; -using Microsoft.VisualStudio.LanguageServer.Protocol; internal record DelegatedSpellCheckParams( [property: JsonPropertyName("identifier")] TextDocumentIdentifierAndVersion Identifier); @@ -27,7 +26,7 @@ internal record DelegatedPositionParams( internal record DelegatedInlayHintParams( [property: JsonPropertyName("identifier")] TextDocumentIdentifierAndVersion Identifier, - [property: JsonPropertyName("projectedRange")] Range ProjectedRange, + [property: JsonPropertyName("projectedRange")] LspRange ProjectedRange, [property: JsonPropertyName("projectedKind")] RazorLanguageKind ProjectedKind) : IDelegatedParams; internal record DelegatedInlayHintResolveParams( @@ -37,7 +36,7 @@ internal record DelegatedInlayHintResolveParams( internal record DelegatedValidateBreakpointRangeParams( [property: JsonPropertyName("identifier")] TextDocumentIdentifierAndVersion Identifier, - [property: JsonPropertyName("projectedRange")] Range ProjectedRange, + [property: JsonPropertyName("projectedRange")] LspRange ProjectedRange, [property: JsonPropertyName("projectedKind")] RazorLanguageKind ProjectedKind) : IDelegatedParams; internal record DelegatedOnAutoInsertParams( @@ -67,7 +66,7 @@ internal record DelegatedMapCodeParams( [property: JsonPropertyName("projectedKind")] RazorLanguageKind ProjectedKind, [property: JsonPropertyName("mapCodeCorrelationId")] Guid MapCodeCorrelationId, [property: JsonPropertyName("contents")] string[] Contents, - [property: JsonPropertyName("focusLocations")] Location[][] FocusLocations) : IDelegatedParams; + [property: JsonPropertyName("focusLocations")] LspLocation[][] FocusLocations) : IDelegatedParams; internal record DelegatedCompletionResolutionContext( [property: JsonPropertyName("originalRequestParams")] DelegatedCompletionParams OriginalRequestParams, diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Diagnostics/RazorPullDiagnosticResponse.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Diagnostics/RazorPullDiagnosticResponse.cs index 91ee4523003..a619552fde2 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Diagnostics/RazorPullDiagnosticResponse.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Diagnostics/RazorPullDiagnosticResponse.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Diagnostics; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentHighlight/RemoteDocumentHighlight.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentHighlight/RemoteDocumentHighlight.cs index c40741ebff5..27d88ed9c3e 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentHighlight/RemoteDocumentHighlight.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentHighlight/RemoteDocumentHighlight.cs @@ -3,10 +3,6 @@ using System.Runtime.Serialization; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using static Roslyn.LanguageServer.Protocol.RoslynLspExtensions; -using RoslynDocumentHighlight = Roslyn.LanguageServer.Protocol.DocumentHighlight; -using VsDocumentHighlight = Microsoft.VisualStudio.LanguageServer.Protocol.DocumentHighlight; namespace Microsoft.CodeAnalysis.Razor.Protocol.DocumentHighlight; @@ -15,13 +11,13 @@ internal readonly record struct RemoteDocumentHighlight( [property: DataMember(Order = 0)] LinePositionSpan Span, [property: DataMember(Order = 1)] DocumentHighlightKind Kind) { - public static RemoteDocumentHighlight FromRoslynDocumentHighlight(RoslynDocumentHighlight highlight) - => new(highlight.Range.ToLinePositionSpan(), (DocumentHighlightKind)highlight.Kind); + public static RemoteDocumentHighlight FromLspDocumentHighlight(LspDocumentHighlight highlight) + => new(highlight.Range.ToLinePositionSpan(), highlight.Kind); - public static VsDocumentHighlight ToVsDocumentHighlight(RemoteDocumentHighlight highlight) + public static LspDocumentHighlight ToLspDocumentHighlight(RemoteDocumentHighlight highlight) => new() { - Range = VsLspExtensions.ToRange(highlight.Span), + Range = highlight.Span.ToRange(), Kind = highlight.Kind }; } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentMapping/RazorMapToDocumentRangesParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentMapping/RazorMapToDocumentRangesParams.cs index cd9b57edc84..78137566d81 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentMapping/RazorMapToDocumentRangesParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentMapping/RazorMapToDocumentRangesParams.cs @@ -4,7 +4,6 @@ using System; using System.Text.Json.Serialization; using Microsoft.CodeAnalysis.Razor.DocumentMapping; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.CodeAnalysis.Razor.Protocol.DocumentMapping; @@ -17,7 +16,7 @@ internal class RazorMapToDocumentRangesParams public required Uri RazorDocumentUri { get; init; } [JsonPropertyName("projectedRanges")] - public required Range[] ProjectedRanges { get; init; } + public required LspRange[] ProjectedRanges { get; init; } [JsonPropertyName("mappingBehavior")] public MappingBehavior MappingBehavior { get; init; } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentMapping/RazorMapToDocumentRangesResponse.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentMapping/RazorMapToDocumentRangesResponse.cs index 60e5f99fbc4..f82ea528651 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentMapping/RazorMapToDocumentRangesResponse.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentMapping/RazorMapToDocumentRangesResponse.cs @@ -2,14 +2,13 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.DocumentMapping; internal class RazorMapToDocumentRangesResponse { [JsonPropertyName("ranges")] - public required Range[] Ranges { get; init; } + public required LspRange[] Ranges { get; init; } [JsonPropertyName("hostDocumentVersion")] public int? HostDocumentVersion { get; init; } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/IPresentationParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/IPresentationParams.cs index 374c2f7c136..603c3a5c336 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/IPresentationParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/IPresentationParams.cs @@ -1,14 +1,12 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.VisualStudio.LanguageServer.Protocol; - namespace Microsoft.CodeAnalysis.Razor.Protocol.DocumentPresentation; internal interface IPresentationParams { TextDocumentIdentifier TextDocument { get; set; } - Range Range { get; set; } + LspRange Range { get; set; } } internal interface IRazorPresentationParams : IPresentationParams diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/TextPresentationParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/TextPresentationParams.cs index 8e5efe7327d..dde9959fc0a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/TextPresentationParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/TextPresentationParams.cs @@ -1,8 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.VisualStudio.LanguageServer.Protocol; - namespace Microsoft.CodeAnalysis.Razor.Protocol.DocumentPresentation; /// diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/UriPresentationParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/UriPresentationParams.cs index 0bd8aa3fe21..aab83fadf5b 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/UriPresentationParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentPresentation/UriPresentationParams.cs @@ -1,8 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.VisualStudio.LanguageServer.Protocol; - namespace Microsoft.CodeAnalysis.Razor.Protocol.DocumentPresentation; /// diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentSymbols/DocumentSymbolService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentSymbols/DocumentSymbolService.cs index aafd371c38e..38f148ae0ed 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentSymbols/DocumentSymbolService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentSymbols/DocumentSymbolService.cs @@ -6,7 +6,6 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Razor.DocumentMapping; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.DocumentSymbols; @@ -26,12 +25,15 @@ internal class DocumentSymbolService(IDocumentMappingService documentMappingServ foreach (var symbolInformation in symbolInformations) { +#pragma warning disable CS0618 // Type or member is obsolete + // SymbolInformation is obsolete, but things still return it so we have to handle it if (_documentMappingService.TryMapToHostDocumentRange(csharpDocument, symbolInformation.Location.Range, out var newRange)) { symbolInformation.Location.Range = newRange; symbolInformation.Location.Uri = razorDocumentUri; mappedSymbols.Add(symbolInformation); } +#pragma warning restore CS0618 // Type or member is obsolete } return mappedSymbols.ToArray(); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentSymbols/IDocumentSymbolService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentSymbols/IDocumentSymbolService.cs index e2a579a5c07..5bec48765da 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentSymbols/IDocumentSymbolService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DocumentSymbols/IDocumentSymbolService.cs @@ -3,7 +3,6 @@ using System; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.DocumentSymbols; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RazorFoldingRangeRequestParam.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RazorFoldingRangeRequestParam.cs index 90b07fe6ad2..6b73e90c6b1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RazorFoldingRangeRequestParam.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RazorFoldingRangeRequestParam.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Folding; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RazorFoldingRangeResponse.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RazorFoldingRangeResponse.cs index b08e8a162c7..c39b0968321 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RazorFoldingRangeResponse.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RazorFoldingRangeResponse.cs @@ -3,7 +3,6 @@ using System.Collections.Immutable; using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Folding; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RemoteFoldingRange.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RemoteFoldingRange.cs index 59d83bb8603..ea5883997db 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RemoteFoldingRange.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Folding/RemoteFoldingRange.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Runtime.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Folding; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentFormattingParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentFormattingParams.cs index c4a4f7cceb3..d7b3047ba22 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentFormattingParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentFormattingParams.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Formatting; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentFormattingResponse.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentFormattingResponse.cs index b9cb31f7344..4601480b045 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentFormattingResponse.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentFormattingResponse.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Formatting; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentOnTypeFormattingParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentOnTypeFormattingParams.cs index 818c49d9197..3162fbec804 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentOnTypeFormattingParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/Formatting/RazorDocumentOnTypeFormattingParams.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol.Formatting; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/IClientCapabilitiesService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/IClientCapabilitiesService.cs index c8d26fd18c6..53c5c1aa096 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/IClientCapabilitiesService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/IClientCapabilitiesService.cs @@ -1,8 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.VisualStudio.LanguageServer.Protocol; - namespace Microsoft.CodeAnalysis.Razor.Protocol; internal interface IClientCapabilitiesService diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/InlayHints/InlayHintDataWrapper.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/InlayHints/InlayHintDataWrapper.cs index 78dd8b5f351..ab42932d7de 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/InlayHints/InlayHintDataWrapper.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/InlayHints/InlayHintDataWrapper.cs @@ -1,8 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Roslyn.LanguageServer.Protocol; - namespace Microsoft.CodeAnalysis.Razor.Protocol.InlayHints; internal record class InlayHintDataWrapper(TextDocumentIdentifier TextDocument, object? OriginalData, Position OriginalPosition); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/JsonHelpers.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/JsonHelpers.cs index 67fd12b5d1c..7ead0d6947c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/JsonHelpers.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/JsonHelpers.cs @@ -2,53 +2,57 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; +using System.Diagnostics; using System.Text.Json; +using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol; internal static class JsonHelpers { - private static readonly Lazy s_roslynLspJsonSerializerOptions = new(CreateRoslynLspJsonSerializerOptions); - private static readonly Lazy s_vsLspJsonSerializerOptions = new(CreateVsLspJsonSerializerOptions); + private static readonly Lazy s_jsonSerializerOptions = new(CreateJsonSerializerOptions); /// /// Serializer options to use when serializing or deserializing a Roslyn LSP type /// - internal static JsonSerializerOptions RoslynLspJsonSerializerOptions => s_roslynLspJsonSerializerOptions.Value; + internal static JsonSerializerOptions JsonSerializerOptions => s_jsonSerializerOptions.Value; /// - /// Serializer options to use when serializing or deserializing a VS Platform LSP type + /// Converts an LSP object to a different LSP object, either by casting or serializing and deserializing /// - internal static JsonSerializerOptions VsLspJsonSerializerOptions => s_vsLspJsonSerializerOptions.Value; - - /// - /// Converts a Roslyn LSP object to a VS Platform LSP object via serializing to text and deserializing to VS LSP type - /// - internal static TVsLspResult? ToVsLSP(TRoslynLspSource source) + internal static TResult? Convert(TSource? source) { - return JsonSerializer.Deserialize(JsonSerializer.SerializeToDocument(source, RoslynLspJsonSerializerOptions), VsLspJsonSerializerOptions); - } + if (source is TResult result) + { + return result; + } - /// - /// Converts a VS Platform LSP object to a Roslyn LSP object via serializing to text and deserializing to Roslyn LSP type - /// - internal static TRoslynLspResult? ToRoslynLSP(TVsLspSource? source) - { - return JsonSerializer.Deserialize(JsonSerializer.SerializeToDocument(source, VsLspJsonSerializerOptions), RoslynLspJsonSerializerOptions); + return JsonSerializer.Deserialize(JsonSerializer.SerializeToDocument(source, JsonSerializerOptions), JsonSerializerOptions); } /// - /// Adds VS Platform LSP converters for VSInternal variation of types (e.g. VSInternalClientCapability from ClientCapability) + /// Converts an array of LSP objects to a different LSP object, either by casting or serializing and deserializing /// - internal static void AddVSInternalExtensionConverters(JsonSerializerOptions serializerOptions) + internal static TResult[] ConvertAll(TSource[] source) { - // In its infinite wisdom, the LSP client has a public method that takes Newtonsoft.Json types, but an internal method that takes System.Text.Json types. - typeof(VSInternalExtensionUtilities).GetMethod("AddVSInternalExtensionConverters", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic)!.Invoke(null, [serializerOptions]); + using var results = new PooledArrayBuilder(source.Length); + foreach (var item in source) + { + if (Convert(item) is { } converted) + { + results.Add(converted); + } + else + { + Debug.Fail("Could not convert item to expected type."); + } + } + + return results.ToArray(); } - private static JsonSerializerOptions CreateRoslynLspJsonSerializerOptions() + private static JsonSerializerOptions CreateJsonSerializerOptions() { var serializerOptions = new JsonSerializerOptions(); @@ -59,12 +63,4 @@ private static JsonSerializerOptions CreateRoslynLspJsonSerializerOptions() return serializerOptions; } - - private static JsonSerializerOptions CreateVsLspJsonSerializerOptions() - { - var serializerOptions = new JsonSerializerOptions(); - - AddVSInternalExtensionConverters(serializerOptions); - return serializerOptions; - } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/SemanticTokens/ProvideSemanticTokensRangesParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/SemanticTokens/ProvideSemanticTokensRangesParams.cs index b1f7082ecbe..de4b8175176 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/SemanticTokens/ProvideSemanticTokensRangesParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/SemanticTokens/ProvideSemanticTokensRangesParams.cs @@ -3,8 +3,6 @@ using System; using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.CodeAnalysis.Razor.Workspaces.Protocol.SemanticTokens; @@ -14,12 +12,12 @@ internal class ProvideSemanticTokensRangesParams : SemanticTokensParams public int RequiredHostDocumentVersion { get; } [JsonPropertyName("ranges")] - public Range[] Ranges { get; } + public LspRange[] Ranges { get; } [JsonPropertyName("correlationId")] public Guid CorrelationId { get; } - public ProvideSemanticTokensRangesParams(TextDocumentIdentifier textDocument, int requiredHostDocumentVersion, Range[] ranges, Guid correlationId) + public ProvideSemanticTokensRangesParams(TextDocumentIdentifier textDocument, int requiredHostDocumentVersion, LspRange[] ranges, Guid correlationId) { TextDocument = textDocument; RequiredHostDocumentVersion = requiredHostDocumentVersion; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/SemanticTokens/SemanticTokensRangesParams.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/SemanticTokens/SemanticTokensRangesParams.cs index 10864b93015..6f17bab2471 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/SemanticTokens/SemanticTokensRangesParams.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/SemanticTokens/SemanticTokensRangesParams.cs @@ -2,12 +2,11 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Workspaces.Protocol.SemanticTokens; -internal class SemanticTokensRangesParams : SemanticTokensParams +internal class SemanticTokensRangesParams : SemanticTokensRangeParams { [JsonPropertyName("ranges")] - public required Range[] Ranges { get; set; } + public required LspRange[] Ranges { get; set; } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/TextDocumentIdentifierAndVersion.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/TextDocumentIdentifierAndVersion.cs index 14ba06b25a8..80fab7d2d60 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/TextDocumentIdentifierAndVersion.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/TextDocumentIdentifierAndVersion.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Protocol; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/UpdateBufferRequest.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/UpdateBufferRequest.cs index 41da2755228..20d919e88c4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/UpdateBufferRequest.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/UpdateBufferRequest.cs @@ -11,6 +11,9 @@ internal sealed class UpdateBufferRequest [JsonPropertyName("hostDocumentVersion")] public int? HostDocumentVersion { get; set; } + [JsonPropertyName("previousHostDocumentVersion")] + public int? PreviousHostDocumentVersion { get; set; } + [JsonPropertyName("projectKeyId")] public string? ProjectKeyId { get; set; } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/RazorComponentSearchEngine.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/RazorComponentSearchEngine.cs index 3dd695c253c..070970f6b65 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/RazorComponentSearchEngine.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/RazorComponentSearchEngine.cs @@ -5,7 +5,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteCodeActionsService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteCodeActionsService.cs index 16dc36c7828..62c7f5a3378 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteCodeActionsService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteCodeActionsService.cs @@ -7,7 +7,6 @@ using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Remote; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteCompletionService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteCompletionService.cs index 1f371d4a92d..9ed8c840bb3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteCompletionService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteCompletionService.cs @@ -7,8 +7,7 @@ using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor.Completion; using Microsoft.CodeAnalysis.Razor.Protocol.Completion; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Response = Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; +using Response = Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; namespace Microsoft.CodeAnalysis.Razor.Remote; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDiagnosticsService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDiagnosticsService.cs index 3aa6be1954c..60fd4fc3f32 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDiagnosticsService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDiagnosticsService.cs @@ -5,20 +5,19 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using RoslynLspDiagnostic = Microsoft.VisualStudio.LanguageServer.Protocol.Diagnostic; namespace Microsoft.CodeAnalysis.Razor.Remote; internal interface IRemoteDiagnosticsService : IRemoteJsonService { - ValueTask> GetDiagnosticsAsync( + ValueTask> GetDiagnosticsAsync( JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId documentId, - RoslynLspDiagnostic[] csharpDiagnostics, - RoslynLspDiagnostic[] htmlDiagnostics, + LspDiagnostic[] csharpDiagnostics, + LspDiagnostic[] htmlDiagnostics, CancellationToken cancellationToken); - ValueTask> GetTaskListDiagnosticsAsync( + ValueTask> GetTaskListDiagnosticsAsync( JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId documentId, ImmutableArray taskListDescriptors, diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDocumentSymbolService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDocumentSymbolService.cs index 095033d8932..e1a3785d215 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDocumentSymbolService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteDocumentSymbolService.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Remote; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteFindAllReferencesService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteFindAllReferencesService.cs index 156601890c5..21f03cc8aa6 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteFindAllReferencesService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteFindAllReferencesService.cs @@ -4,8 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using Roslyn.LanguageServer.Protocol; -using LspLocation = Roslyn.LanguageServer.Protocol.Location; namespace Microsoft.CodeAnalysis.Razor.Remote; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteGoToDefinitionService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteGoToDefinitionService.cs index b8e91db72c5..ae88daac58c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteGoToDefinitionService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteGoToDefinitionService.cs @@ -4,16 +4,14 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using RoslynLocation = Roslyn.LanguageServer.Protocol.Location; -using RoslynPosition = Roslyn.LanguageServer.Protocol.Position; namespace Microsoft.CodeAnalysis.Razor.Remote; internal interface IRemoteGoToDefinitionService : IRemoteJsonService { - ValueTask> GetDefinitionAsync( + ValueTask> GetDefinitionAsync( JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId razorDocumentId, - RoslynPosition position, + Position position, CancellationToken cancellationToken); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteGoToImplementationService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteGoToImplementationService.cs index 41311404578..7036cc58073 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteGoToImplementationService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteGoToImplementationService.cs @@ -4,16 +4,14 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using RoslynLocation = Roslyn.LanguageServer.Protocol.Location; -using RoslynPosition = Roslyn.LanguageServer.Protocol.Position; namespace Microsoft.CodeAnalysis.Razor.Remote; internal interface IRemoteGoToImplementationService : IRemoteJsonService { - ValueTask> GetImplementationAsync( + ValueTask> GetImplementationAsync( JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId razorDocumentId, - RoslynPosition position, + Position position, CancellationToken cancellationToken); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteHoverService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteHoverService.cs index 9a47dc792b9..d0d8dc8772a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteHoverService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteHoverService.cs @@ -4,16 +4,14 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using RoslynHover = Roslyn.LanguageServer.Protocol.Hover; -using RoslynPosition = Roslyn.LanguageServer.Protocol.Position; namespace Microsoft.CodeAnalysis.Razor.Remote; internal interface IRemoteHoverService : IRemoteJsonService { - ValueTask> GetHoverAsync( + ValueTask> GetHoverAsync( JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId documentId, - RoslynPosition position, + Position position, CancellationToken cancellationToken); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteInlayHintService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteInlayHintService.cs index 978e8d0ecb8..b27def1f0f1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteInlayHintService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteInlayHintService.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using Roslyn.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Remote; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteRenameService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteRenameService.cs index 0ccaf327c37..1a2cdf02ab1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteRenameService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteRenameService.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Remote; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteSignatureHelpService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteSignatureHelpService.cs index 82163933eef..5092f5cdfbd 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteSignatureHelpService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteSignatureHelpService.cs @@ -4,13 +4,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using Roslyn.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Remote; -using SignatureHelp = Roslyn.LanguageServer.Protocol.SignatureHelp; - internal interface IRemoteSignatureHelpService : IRemoteJsonService { - ValueTask GetSignatureHelpAsync(JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId documentId, Position linePosition, CancellationToken cancellationToken); + ValueTask GetSignatureHelpAsync(JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId documentId, Position linePosition, CancellationToken cancellationToken); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteTagHelperProviderService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteTagHelperProviderService.cs index eb17de0887c..d9899bec3d6 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteTagHelperProviderService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/IRemoteTagHelperProviderService.cs @@ -4,9 +4,9 @@ using System.Collections.Immutable; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Serialization; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.ExternalAccess.Razor; +using Microsoft.CodeAnalysis.Razor.Serialization; namespace Microsoft.CodeAnalysis.Razor.Remote; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/RazorServices.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/RazorServices.cs index 8d8b0a05d00..046e49b8eb2 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/RazorServices.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/RazorServices.cs @@ -3,8 +3,8 @@ using System; using System.Collections.Generic; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Resolvers; using Microsoft.CodeAnalysis.ExternalAccess.Razor; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; namespace Microsoft.CodeAnalysis.Razor.Remote; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/RemoteClientLSPInitializationOptions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/RemoteClientLSPInitializationOptions.cs index 5c74a839ecc..f179b3d92a7 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/RemoteClientLSPInitializationOptions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/RemoteClientLSPInitializationOptions.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Remote; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/TagHelperResultCache.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/TagHelperResultCache.cs index c24e623bf4f..a0bb918a00b 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/TagHelperResultCache.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/TagHelperResultCache.cs @@ -3,6 +3,7 @@ using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.Utilities; +using Microsoft.CodeAnalysis.Razor.Utilities; namespace Microsoft.CodeAnalysis.Razor.Remote; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Rename/IRenameService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Rename/IRenameService.cs index 0c2f6b6044c..d22718840e1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Rename/IRenameService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Rename/IRenameService.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Rename; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Rename/RenameService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Rename/RenameService.cs index ba8493f85c9..230ace81fbb 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Rename/RenameService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Rename/RenameService.cs @@ -14,12 +14,10 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; using RazorSyntaxKind = Microsoft.AspNetCore.Razor.Language.SyntaxKind; using RazorSyntaxNode = Microsoft.AspNetCore.Razor.Language.Syntax.SyntaxNode; @@ -40,7 +38,7 @@ internal class RenameService( CancellationToken cancellationToken) { // We only support renaming of .razor components, not .cshtml tag helpers - if (!FileKinds.IsComponent(documentContext.FileKind)) + if (!documentContext.FileKind.IsComponent()) { return null; } @@ -148,7 +146,7 @@ private Uri BuildUri(string filePath) var updatedPath = _languageServerFeatureOptions.ReturnCodeActionAndRenamePathsWithPrefixedSlash && !filePath.StartsWith("/") ? '/' + filePath : filePath; - return VsLspFactory.CreateFilePathUri(updatedPath); + return LspFactory.CreateFilePathUri(updatedPath); } private static string MakeNewPath(string originalPath, string newName) @@ -165,16 +163,12 @@ private async Task AddEditsForCodeDocumentAsync( IDocumentSnapshot documentSnapshot, CancellationToken cancellationToken) { - if (!FileKinds.IsComponent(documentSnapshot.FileKind)) + if (!documentSnapshot.FileKind.IsComponent()) { return; } var codeDocument = await documentSnapshot.GetGeneratedOutputAsync(cancellationToken).ConfigureAwait(false); - if (codeDocument.IsUnsupported()) - { - return; - } // VS Code in Windows expects path to start with '/' var uri = BuildUri(documentSnapshot.FilePath); @@ -226,13 +220,13 @@ private static void AddEditsForCodeDocument( } } - private static TextEdit[] CreateEditsForMarkupTagHelperElement(MarkupTagHelperElementSyntax element, RazorCodeDocument codeDocument, string newName) + private static SumType[] CreateEditsForMarkupTagHelperElement(MarkupTagHelperElementSyntax element, RazorCodeDocument codeDocument, string newName) { - var startTagEdit = VsLspFactory.CreateTextEdit(element.StartTag.Name.GetRange(codeDocument.Source), newName); + var startTagEdit = LspFactory.CreateTextEdit(element.StartTag.Name.GetRange(codeDocument.Source), newName); if (element.EndTag is MarkupTagHelperEndTagSyntax endTag) { - var endTagEdit = VsLspFactory.CreateTextEdit(endTag.Name.GetRange(codeDocument.Source), newName); + var endTagEdit = LspFactory.CreateTextEdit(endTag.Name.GetRange(codeDocument.Source), newName); return [startTagEdit, endTagEdit]; } @@ -295,7 +289,7 @@ private static bool TryGetTagHelperBinding(RazorSyntaxNode owner, int absoluteIn // Ensure the rename action was invoked on the component name instead of a component parameter. This serves as an issue // mitigation till `textDocument/prepareRename` is supported and we can ensure renames aren't triggered in unsupported // contexts. (https://github.com/dotnet/razor/issues/4285) - if (!tagHelperStartTag.Name.FullSpan.IntersectsWith(absoluteIndex)) + if (!tagHelperStartTag.Name.Span.IntersectsWith(absoluteIndex)) { binding = null; return false; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.cs.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.cs.xlf index 8230976e64a..adc26227836 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.cs.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.cs.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + Nepodporované rozšíření Razor: {0}. Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + Nepodporovaný druh argumentu: {0}. Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + Nepodporovaný typ argumentu: {0}. Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + Byla započítána nepodporovaná verze informací o projektu Razor. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.de.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.de.xlf index 6acf0573fa2..e81caa55514 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.de.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.de.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + Nicht unterstützte Razor-Erweiterung: „{0}“. Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + Nicht unterstützte Argumentart: "{0}". Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + Nicht unterstützter Argumenttyp: "{0}". Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + Nicht unterstützte Razor-Projektinformationen werden gezählt. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.es.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.es.xlf index 57367bbae63..1f122ad7355 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.es.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.es.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + Extensión Razor no admitida: '{0}'. Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + Variante de argumento no admitida: ''{0}''. Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + Tipo de argumento no admitido: ''{0}''. Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + Se ha encontrado una versión de información de proyecto de Razor no admitida. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.fr.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.fr.xlf index 7d0b7273d14..0971a4344fd 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.fr.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.fr.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + Extension Razor non prise en charge : « {0} ». Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + Genre d’argument non pris en charge : « {0} ». Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + Type d’argument non pris en charge : « {0} ». Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + Version des informations de projet Razor non prise en charge. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.it.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.it.xlf index 29fb9dc57bb..a06ac238ca0 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.it.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.it.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + Estensione Razor non supportata: '{0}'. Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + Genere di argomento non supportato: '{0}'. Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + Tipo di argomento non supportato: '{0}'. Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + Incontrata versione delle informazioni sul progetto Razor non supportata. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ja.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ja.xlf index 00656ea8d2f..26f480da60b 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ja.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ja.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + サポートされていない Razor 拡張機能: '{0}'。 Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + サポートされていない引数の種類: '{0}'。 Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + サポートされていない引数の型: '{0}'。 Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + サポートされていない Razor プロジェクト情報バージョンを検出しました。 diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ko.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ko.xlf index 5ba1c067127..e29e6acd3bd 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ko.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ko.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + 지원되지 않는 Razor 확장: '{0}'. Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + 지원되지 않는 인수 종류: '{0}'. Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + 지원되지 않는 인수 유형: '{0}'. Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + 지원되지 않는 Razor 프로젝트 정보 버전이 발견되었습니다. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.pl.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.pl.xlf index 5b31a239beb..8ac0ae41f62 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.pl.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.pl.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + Nieobsługiwane rozszerzenie Razor: „{0}”. Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + Nieobsługiwany rodzaj argumentu: „{0}”. Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + Nieobsługiwany typ argumentu: „{0}”. Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + Napotkano nieobsługiwaną wersję informacji o projekcie Razor. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.pt-BR.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.pt-BR.xlf index c5f4ca4b226..250102fc9b8 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.pt-BR.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.pt-BR.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + Extensão Razor sem suporte: '{0}'. Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + Tipo de argumento sem suporte: '{0}'. Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + Tipo de argumento sem suporte: '{0}'. Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + Foi encontrada uma versão de informações do projeto Razor sem suporte. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ru.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ru.xlf index 1aba54a459e..a4d2418b483 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ru.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.ru.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + Неподдерживаемое расширение Razor: "{0}". Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + Неподдерживаемый вид аргумента: "{0}". Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + Неподдерживаемый тип аргумента: "{0}". Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + Неподдерживаемая версия сведений о проекте Razor diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.tr.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.tr.xlf index 682f4fba0ac..ca6d55c9a37 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.tr.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.tr.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + Desteklenmeyen Razor uzantısı: '{0}'. Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + Desteklenmeyen bağımsız değişken tipi: '{0}'. Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + Desteklenmeyen bağımsız değişken türü: '{0}'. Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + Desteklenmeyen razor proje bilgileri sürümüyle karşılaşıldı. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.zh-Hans.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.zh-Hans.xlf index 4bc9b40a208..966f449d33c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.zh-Hans.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.zh-Hans.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + 不支持的 Razor 扩展:“{0}”。 Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + 不支持的参数类型: "{0}"。 Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + 不支持的参数类型: "{0}"。 Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + razor 项目信息版本计数不受支持。 diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.zh-Hant.xlf b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.zh-Hant.xlf index a3d930f6dd6..2ab6a430f3e 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.zh-Hant.xlf +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Resources/xlf/SR.zh-Hant.xlf @@ -136,22 +136,22 @@ Unsupported Razor extension: '{0}'. - Unsupported Razor extension: '{0}'. + 不支援的 Razor 延伸模組: '{0}'。 Unsupported argument kind: '{0}'. - Unsupported argument kind: '{0}'. + 不支援的引數種類: '{0}'。 Unsupported argument type: '{0}'. - Unsupported argument type: '{0}'. + 不支援的引數類型: '{0}'。 Unsupported razor project info version encounted. - Unsupported razor project info version encounted. + 不支援的 razor 專案資訊版本已列舉。 diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/DocumentSnapshotHandle.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/DocumentSnapshotHandle.cs index 9b4bafb1f27..87e7ecbd4cb 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/DocumentSnapshotHandle.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/DocumentSnapshotHandle.cs @@ -1,6 +1,8 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.Serialization; +using Microsoft.AspNetCore.Razor.Language; -internal record DocumentSnapshotHandle(string FilePath, string TargetPath, string FileKind); +namespace Microsoft.CodeAnalysis.Razor.Serialization; + +internal record DocumentSnapshotHandle(string FilePath, string TargetPath, RazorFileKind FileKind); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/FetchTagHelpersResult.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/FetchTagHelpersResult.cs index fb2429947fa..ab95fb67f90 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/FetchTagHelpersResult.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/FetchTagHelpersResult.cs @@ -4,7 +4,7 @@ using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.Serialization; +namespace Microsoft.CodeAnalysis.Razor.Serialization; internal sealed record FetchTagHelpersResult(ImmutableArray TagHelpers) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/ArgKind.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/ArgKind.cs index a54bd88567c..31e58ca1f50 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/ArgKind.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/ArgKind.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack; internal enum ArgKind { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/DocumentationKind.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/DocumentationKind.cs index d6ca105fb83..8e758ffbdbf 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/DocumentationKind.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/DocumentationKind.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack; internal enum DocumentationKind { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/CachedStringFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/CachedStringFormatter.cs index 243c31af545..c1c369f8b08 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/CachedStringFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/CachedStringFormatter.cs @@ -3,7 +3,7 @@ using MessagePack; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal sealed class CachedStringFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ChecksumFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ChecksumFormatter.cs index 7e1cd220e70..a9f1324b642 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ChecksumFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ChecksumFormatter.cs @@ -4,7 +4,7 @@ using MessagePack; using Microsoft.AspNetCore.Razor.Utilities; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal sealed class ChecksumFormatter : NonCachingFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/DocumentSnapshotFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/DocumentSnapshotFormatter.cs index 6cf7401e9df..275f5444b2f 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/DocumentSnapshotFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/DocumentSnapshotFormatter.cs @@ -2,8 +2,10 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using MessagePack; +using Microsoft.AspNetCore.Razor; +using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal sealed class DocumentSnapshotHandleFormatter : ValueFormatter { @@ -19,7 +21,7 @@ public override DocumentSnapshotHandle Deserialize(ref MessagePackReader reader, var filePath = CachedStringFormatter.Instance.Deserialize(ref reader, options).AssumeNotNull(); var targetPath = CachedStringFormatter.Instance.Deserialize(ref reader, options).AssumeNotNull(); - var fileKind = CachedStringFormatter.Instance.Deserialize(ref reader, options).AssumeNotNull(); + var fileKind = (RazorFileKind)reader.ReadByte(); return new DocumentSnapshotHandle(filePath, targetPath, fileKind); } @@ -30,6 +32,6 @@ public override void Serialize(ref MessagePackWriter writer, DocumentSnapshotHan CachedStringFormatter.Instance.Serialize(ref writer, value.FilePath, options); CachedStringFormatter.Instance.Serialize(ref writer, value.TargetPath, options); - CachedStringFormatter.Instance.Serialize(ref writer, value.FileKind, options); + writer.Write((byte)value.FileKind); } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/Extensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/Extensions.cs index 44b41db9183..af3a6a828ea 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/Extensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/Extensions.cs @@ -3,7 +3,7 @@ using MessagePack; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal static class Extensions { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/FetchTagHelpersResultFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/FetchTagHelpersResultFormatter.cs index aa41f45a054..4dd330f8f24 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/FetchTagHelpersResultFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/FetchTagHelpersResultFormatter.cs @@ -5,7 +5,7 @@ using MessagePack; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal sealed class FetchTagHelpersResultFormatter : TopLevelFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/NonCachingFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/NonCachingFormatter.cs index 8615c3403ae..3f18f835d71 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/NonCachingFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/NonCachingFormatter.cs @@ -5,7 +5,7 @@ using MessagePack; using MessagePack.Formatters; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal abstract partial class NonCachingFormatter : IMessagePackFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ProjectSnapshotHandleFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ProjectSnapshotHandleFormatter.cs index 52763e77807..9c058f7592d 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ProjectSnapshotHandleFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ProjectSnapshotHandleFormatter.cs @@ -4,9 +4,8 @@ using MessagePack; using MessagePack.Formatters; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal sealed class ProjectSnapshotHandleFormatter : TopLevelFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ProjectWorkspaceStateFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ProjectWorkspaceStateFormatter.cs index 156c443958e..3a69251b662 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ProjectWorkspaceStateFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ProjectWorkspaceStateFormatter.cs @@ -5,11 +5,12 @@ using MessagePack; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; using Microsoft.AspNetCore.Razor.Utilities; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; +using Microsoft.CodeAnalysis.Razor.Utilities; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal sealed class ProjectWorkspaceStateFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorConfigurationFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorConfigurationFormatter.cs index 211dc350e79..05e82b9a163 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorConfigurationFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorConfigurationFormatter.cs @@ -3,11 +3,12 @@ using System.Collections.Immutable; using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.CSharp; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal sealed class RazorConfigurationFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorDiagnosticFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorDiagnosticFormatter.cs index 6bd2a2a0b71..e63866a46cc 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorDiagnosticFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorDiagnosticFormatter.cs @@ -3,9 +3,10 @@ using System.Globalization; using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal sealed class RazorDiagnosticFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorProjectInfoFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorProjectInfoFormatter.cs index 6cafb011c69..c1952d09a11 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorProjectInfoFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/RazorProjectInfoFormatter.cs @@ -3,10 +3,11 @@ using System.Collections.Immutable; using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal sealed class RazorProjectInfoFormatter : TopLevelFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/SerializerCachingOptions.ReferenceMap`1.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/SerializerCachingOptions.ReferenceMap`1.cs index 4e7073428ac..ff733006588 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/SerializerCachingOptions.ReferenceMap`1.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/SerializerCachingOptions.ReferenceMap`1.cs @@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.Extensions.ObjectPool; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal partial class SerializerCachingOptions { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/SerializerCachingOptions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/SerializerCachingOptions.cs index 89ba51917cb..df01ef45efa 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/SerializerCachingOptions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/SerializerCachingOptions.cs @@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.Extensions.ObjectPool; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal partial class SerializerCachingOptions(MessagePackSerializerOptions copyFrom) : MessagePackSerializerOptions(copyFrom), IDisposable { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelperDeltaResultFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelperDeltaResultFormatter.cs index a6bd0df1684..f01799245e2 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelperDeltaResultFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelperDeltaResultFormatter.cs @@ -5,7 +5,7 @@ using MessagePack; using Microsoft.AspNetCore.Razor.Utilities; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; internal sealed class TagHelperDeltaResultFormatter : TopLevelFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/AllowChildTagFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/AllowChildTagFormatter.cs index 3673151a2af..e5c4df4ad71 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/AllowChildTagFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/AllowChildTagFormatter.cs @@ -3,9 +3,10 @@ using System.Collections.Immutable; using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; internal sealed class AllowedChildTagFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/BoundAttributeFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/BoundAttributeFormatter.cs index 2c1b574fa3c..aca548001dd 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/BoundAttributeFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/BoundAttributeFormatter.cs @@ -3,9 +3,10 @@ using System.Collections.Immutable; using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; internal sealed class BoundAttributeFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/BoundAttributeParameterFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/BoundAttributeParameterFormatter.cs index 396c68f1cb9..fca63974b20 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/BoundAttributeParameterFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/BoundAttributeParameterFormatter.cs @@ -3,9 +3,10 @@ using System.Collections.Immutable; using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; internal sealed class BoundAttributeParameterFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/DocumentationObjectFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/DocumentationObjectFormatter.cs index 0eb3d47e9d6..9fc58133a69 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/DocumentationObjectFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/DocumentationObjectFormatter.cs @@ -5,10 +5,11 @@ using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; internal sealed class DocumentationObjectFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/MetadataCollectionFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/MetadataCollectionFormatter.cs index 122ed466178..ce68385ae4c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/MetadataCollectionFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/MetadataCollectionFormatter.cs @@ -2,13 +2,14 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; #if !NET using System.Collections.Generic; #endif -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; internal sealed class MetadataCollectionFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/RequiredAttributeFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/RequiredAttributeFormatter.cs index a4f1c41dc35..59c52b8e88f 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/RequiredAttributeFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/RequiredAttributeFormatter.cs @@ -3,10 +3,11 @@ using System.Collections.Immutable; using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using static Microsoft.AspNetCore.Razor.Language.RequiredAttributeDescriptor; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; internal sealed class RequiredAttributeFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/TagHelperFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/TagHelperFormatter.cs index 4191c4ab04d..eb3905398dd 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/TagHelperFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/TagHelperFormatter.cs @@ -3,9 +3,10 @@ using System.Collections.Immutable; using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; internal sealed class TagHelperFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/TagMatchingRuleFormatter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/TagMatchingRuleFormatter.cs index 37276cddb01..9309af46ced 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/TagMatchingRuleFormatter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TagHelpers/TagMatchingRuleFormatter.cs @@ -3,9 +3,10 @@ using System.Collections.Immutable; using MessagePack; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; internal sealed class TagMatchingRuleFormatter : ValueFormatter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TopLevelFormatter`1.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TopLevelFormatter`1.cs index 93dd18a71d2..df351a41590 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TopLevelFormatter`1.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/TopLevelFormatter`1.cs @@ -5,7 +5,7 @@ using MessagePack; using MessagePack.Formatters; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; /// /// A message pack formatter that can be serialized at the top-level. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ValueFormatter`1.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ValueFormatter`1.cs index f9b86708b2c..fe96c6b3ed5 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ValueFormatter`1.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Formatters/ValueFormatter`1.cs @@ -6,7 +6,7 @@ using MessagePack; using MessagePack.Formatters; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; /// /// A message package formatter that cannot be serialized at the top-level. It expects a diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/ChecksumResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/ChecksumResolver.cs index 6eeff228aeb..09289a2d43a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/ChecksumResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/ChecksumResolver.cs @@ -3,10 +3,10 @@ using MessagePack; using MessagePack.Formatters; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; using Microsoft.AspNetCore.Razor.Utilities; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Resolvers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; internal sealed class ChecksumResolver : IFormatterResolver { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/Extensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/Extensions.cs index d0a10a2774a..0a0a5d8efb4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/Extensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/Extensions.cs @@ -3,9 +3,9 @@ using System; using System.Collections.Generic; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Resolvers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; internal static class Extensions { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/FetchTagHelpersResultResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/FetchTagHelpersResultResolver.cs index 3eec0f3d74a..fb489d20ce5 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/FetchTagHelpersResultResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/FetchTagHelpersResultResolver.cs @@ -5,10 +5,10 @@ using System.Collections.Generic; using MessagePack; using MessagePack.Formatters; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Resolvers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; internal sealed class FetchTagHelpersResultResolver : IFormatterResolver { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/ProjectSnapshotHandleResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/ProjectSnapshotHandleResolver.cs index 06ab5169141..f99bee14f04 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/ProjectSnapshotHandleResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/ProjectSnapshotHandleResolver.cs @@ -5,9 +5,9 @@ using System.Collections.Generic; using MessagePack; using MessagePack.Formatters; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Resolvers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; internal sealed class ProjectSnapshotHandleResolver : IFormatterResolver { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/RazorProjectInfoResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/RazorProjectInfoResolver.cs index 5eff22396b9..fb764bb8fe3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/RazorProjectInfoResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/RazorProjectInfoResolver.cs @@ -5,10 +5,10 @@ using System.Collections.Generic; using MessagePack; using MessagePack.Formatters; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters.TagHelpers; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters.TagHelpers; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Resolvers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; internal sealed class RazorProjectInfoResolver : IFormatterResolver { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/TagHelperDeltaResultResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/TagHelperDeltaResultResolver.cs index bb42f23c2ff..36e985eceda 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/TagHelperDeltaResultResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/TagHelperDeltaResultResolver.cs @@ -5,9 +5,9 @@ using System.Collections.Generic; using MessagePack; using MessagePack.Formatters; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Resolvers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; internal sealed class TagHelperDeltaResultResolver : IFormatterResolver { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/TopLevelResolvers.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/TopLevelResolvers.cs index eff4e3d4d30..2dfadadf8b9 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/TopLevelResolvers.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/Resolvers/TopLevelResolvers.cs @@ -4,7 +4,7 @@ using System.Collections.Immutable; using MessagePack; -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack.Resolvers; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; internal static class TopLevelResolvers { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/SerializationFormat.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/SerializationFormat.cs index bb7d6524f7b..8502239657e 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/SerializationFormat.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/MessagePack/SerializationFormat.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.Serialization.MessagePack; +namespace Microsoft.CodeAnalysis.Razor.Serialization.MessagePack; internal static class SerializationFormat { @@ -9,5 +9,5 @@ internal static class SerializationFormat // or any of the types that compose it changes. This includes: RazorConfiguration, // ProjectWorkspaceState, TagHelperDescriptor, and DocumentSnapshotHandle. // NOTE: If this version is changed, a coordinated insertion is required between Roslyn and Razor for the C# extension. - public const int Version = 7; + public const int Version = 8; } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/ProjectSnapshotHandle.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/ProjectSnapshotHandle.cs index cf8de7e3bc9..ed6c79aa8ec 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/ProjectSnapshotHandle.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/ProjectSnapshotHandle.cs @@ -3,9 +3,8 @@ using System; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis; -namespace Microsoft.AspNetCore.Razor.Serialization; +namespace Microsoft.CodeAnalysis.Razor.Serialization; internal record ProjectSnapshotHandle { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/RazorProjectInfoSerializationException.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/RazorProjectInfoSerializationException.cs index 44496b2162b..d9ad1360628 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/RazorProjectInfoSerializationException.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/RazorProjectInfoSerializationException.cs @@ -3,7 +3,7 @@ using System; -namespace Microsoft.AspNetCore.Razor.Serialization; +namespace Microsoft.CodeAnalysis.Razor.Serialization; internal class RazorProjectInfoSerializationException(string? message) : Exception(message) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/TagHelperDeltaResult.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/TagHelperDeltaResult.cs index fa3d92045fe..48553a95a0c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/TagHelperDeltaResult.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Serialization/TagHelperDeltaResult.cs @@ -6,12 +6,13 @@ using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.Extensions.Internal; +using Microsoft.AspNetCore.Razor; #if DEBUG using System.Diagnostics; #endif -namespace Microsoft.AspNetCore.Razor.Serialization; +namespace Microsoft.CodeAnalysis.Razor.Serialization; internal sealed record TagHelperDeltaResult( bool IsDelta, diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/SpellCheck/SpellCheckService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/SpellCheck/SpellCheckService.cs index 0ab6c5ac690..34a1d02b765 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/SpellCheck/SpellCheckService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/SpellCheck/SpellCheckService.cs @@ -9,7 +9,6 @@ using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.SpellCheck; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporter.cs index cfd87d36b2d..948c7441359 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporter.cs @@ -3,7 +3,7 @@ using System; -namespace Microsoft.AspNetCore.Razor.Telemetry; +namespace Microsoft.CodeAnalysis.Razor.Telemetry; internal interface ITelemetryReporter { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporterExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporterExtensions.cs index fb21f9c2328..a12358f7926 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporterExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporterExtensions.cs @@ -3,7 +3,7 @@ using System; -namespace Microsoft.AspNetCore.Razor.Telemetry; +namespace Microsoft.CodeAnalysis.Razor.Telemetry; internal static class ITelemetryReporterExtensions { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporterInitializer.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporterInitializer.cs index bce5e6bf77b..f4ce6a02262 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporterInitializer.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/ITelemetryReporterInitializer.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.Telemetry; +namespace Microsoft.CodeAnalysis.Razor.Telemetry; internal interface ITelemetryReporterInitializer { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/NoOpTelemetryReporter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/NoOpTelemetryReporter.cs index eca3dedebbb..a4aa2e385e0 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/NoOpTelemetryReporter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/NoOpTelemetryReporter.cs @@ -3,9 +3,9 @@ using System; -namespace Microsoft.AspNetCore.Razor.Telemetry; +namespace Microsoft.CodeAnalysis.Razor.Telemetry; -internal class NoOpTelemetryReporter : ITelemetryReporter +internal sealed class NoOpTelemetryReporter : ITelemetryReporter { public static readonly NoOpTelemetryReporter Instance = new(); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/Property.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/Property.cs index 152858edc08..841ef81ad36 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/Property.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/Property.cs @@ -1,6 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.Telemetry; +namespace Microsoft.CodeAnalysis.Razor.Telemetry; internal readonly record struct Property(string Name, object? Value); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/Severity.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/Severity.cs index 6eb118f8383..5c6b5c57762 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/Severity.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/Severity.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.Telemetry; +namespace Microsoft.CodeAnalysis.Razor.Telemetry; internal enum Severity { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryResult.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryResult.cs index 4e642467f80..6f10d7af582 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryResult.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryResult.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.Telemetry; +namespace Microsoft.CodeAnalysis.Razor.Telemetry; internal enum TelemetryResult { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryScope.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryScope.cs index ae5f4537575..2d49416f2dd 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryScope.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryScope.cs @@ -5,7 +5,7 @@ using System.Diagnostics; using Microsoft.AspNetCore.Razor.PooledObjects; -namespace Microsoft.AspNetCore.Razor.Telemetry; +namespace Microsoft.CodeAnalysis.Razor.Telemetry; internal sealed class TelemetryScope : IDisposable { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryThresholds.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryThresholds.cs index 636dc392c83..c4a06c07fba 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryThresholds.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Telemetry/TelemetryThresholds.cs @@ -3,7 +3,7 @@ using System; -namespace Microsoft.CodeAnalysis.Razor.Workspaces.Telemetry; +namespace Microsoft.CodeAnalysis.Razor.Telemetry; /// /// A set of constants used to reduce the telemetry emitted to the set that help us understand diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/DiffKind.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/DiffKind.cs index d68974149fb..55e0efca90c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/DiffKind.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/DiffKind.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.TextDifferencing; +namespace Microsoft.CodeAnalysis.Razor.TextDifferencing; internal enum DiffKind : byte { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.CharDiffer.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.CharDiffer.cs index 2a19c7a313c..3939e1ebb1a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.CharDiffer.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.CharDiffer.cs @@ -7,7 +7,7 @@ using System.Text; using Microsoft.CodeAnalysis.Text; -namespace Microsoft.AspNetCore.Razor.TextDifferencing; +namespace Microsoft.CodeAnalysis.Razor.TextDifferencing; internal partial class SourceTextDiffer { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.LineDiffer.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.LineDiffer.cs index b9f0502ef88..ece81b9818c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.LineDiffer.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.LineDiffer.cs @@ -4,7 +4,7 @@ using System.Text; using Microsoft.CodeAnalysis.Text; -namespace Microsoft.AspNetCore.Razor.TextDifferencing; +namespace Microsoft.CodeAnalysis.Razor.TextDifferencing; internal partial class SourceTextDiffer { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.cs index 34d63963afa..2a84400545c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/SourceTextDiffer.cs @@ -11,7 +11,7 @@ using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Text; -namespace Microsoft.AspNetCore.Razor.TextDifferencing; +namespace Microsoft.CodeAnalysis.Razor.TextDifferencing; internal abstract partial class SourceTextDiffer : TextDiffer, IDisposable { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEdit.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEdit.cs index 806a1ed2425..568551b9adc 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEdit.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEdit.cs @@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Razor.PooledObjects; -namespace Microsoft.AspNetCore.Razor.TextDifferencing; +namespace Microsoft.CodeAnalysis.Razor.TextDifferencing; internal abstract partial class TextDiffer { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEditBuilder.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEditBuilder.cs index 1726fdbd9eb..5f805269a89 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEditBuilder.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEditBuilder.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; -namespace Microsoft.AspNetCore.Razor.TextDifferencing; +namespace Microsoft.CodeAnalysis.Razor.TextDifferencing; internal abstract partial class TextDiffer { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEditKind.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEditKind.cs index 7d47378d85c..aa07bf06dad 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEditKind.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.DiffEditKind.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.TextDifferencing; +namespace Microsoft.CodeAnalysis.Razor.TextDifferencing; internal abstract partial class TextDiffer { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.IntArray.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.IntArray.cs index 120685d419f..60b39206eb7 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.IntArray.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.IntArray.cs @@ -5,7 +5,7 @@ using System.Buffers; using System.Runtime.CompilerServices; -namespace Microsoft.AspNetCore.Razor.TextDifferencing; +namespace Microsoft.CodeAnalysis.Razor.TextDifferencing; internal abstract partial class TextDiffer { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.cs index 9dc51c1c326..c18d124bc96 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/TextDifferencing/TextDiffer.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; -namespace Microsoft.AspNetCore.Razor.TextDifferencing; +namespace Microsoft.CodeAnalysis.Razor.TextDifferencing; // // This class implements the linear space variation of the difference algorithm described in diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/CancellationSeries.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/CancellationSeries.cs index 3003774fdf0..80d9e941cda 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/CancellationSeries.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/CancellationSeries.cs @@ -4,7 +4,7 @@ using System; using System.Threading; -namespace Microsoft.AspNetCore.Razor.Threading; +namespace Microsoft.CodeAnalysis.Razor.Threading; // NOTE: This code is copied from dotnet/roslyn: // https://github.com/dotnet/roslyn/blob/98cd097bf122677378692ebe952b71ab6e5bb013/src/Workspaces/Core/Portable/Utilities/CancellationSeries.cs diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/SemaphoreSlimExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/SemaphoreSlimExtensions.cs index 89ff9360f54..f61b97f2fa3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/SemaphoreSlimExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/SemaphoreSlimExtensions.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Utilities; -namespace Microsoft.AspNetCore.Razor.Threading; +namespace Microsoft.CodeAnalysis.Razor.Threading; internal static class SemaphoreSlimExtensions { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/TaskExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/TaskExtensions.cs index 36038bec832..b66d988bbc5 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/TaskExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Threading/TaskExtensions.cs @@ -2,8 +2,9 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor; -namespace Microsoft.AspNetCore.Razor.Threading; +namespace Microsoft.CodeAnalysis.Razor.Threading; internal static class TaskExtensions { @@ -20,7 +21,10 @@ public static void VerifyCompleted(this ValueTask task) Assumed.True(task.IsCompleted); // Propagate any exceptions that may have been thrown. + +#pragma warning disable VSTHRD002 // Avoid problematic synchronous waits task.GetAwaiter().GetResult(); +#pragma warning restore VSTHRD002 // Avoid problematic synchronous waits } /// @@ -36,6 +40,9 @@ public static TResult VerifyCompleted(this ValueTask task) Assumed.True(task.IsCompleted); // Propagate any exceptions that may have been thrown. + +#pragma warning disable VSTHRD002 // Avoid problematic synchronous waits return task.GetAwaiter().GetResult(); +#pragma warning restore VSTHRD002 // Avoid problematic synchronous waits } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/AbstractComponentAvailabilityService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/AbstractComponentAvailabilityService.cs index a754879bdc2..49d910c2888 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/AbstractComponentAvailabilityService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/AbstractComponentAvailabilityService.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.Tooltip; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/ClassifiedTagHelperTooltipFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/ClassifiedTagHelperTooltipFactory.cs index b5e4f7440f3..93a4289c9a7 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/ClassifiedTagHelperTooltipFactory.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/ClassifiedTagHelperTooltipFactory.cs @@ -12,8 +12,8 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Classification; -using Microsoft.VisualStudio.Core.Imaging; -using Microsoft.VisualStudio.Text.Adornments; +using Roslyn.Core.Imaging; +using Roslyn.Text.Adornments; namespace Microsoft.CodeAnalysis.Razor.Tooltip; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/IComponentAvailabilityService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/IComponentAvailabilityService.cs index 3259c4c67ab..048226d4294 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/IComponentAvailabilityService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/IComponentAvailabilityService.cs @@ -4,7 +4,7 @@ using System.Collections.Immutable; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.Tooltip; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/MarkupTagHelperTooltipFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/MarkupTagHelperTooltipFactory.cs index 3d9b6ab7ade..805d5e0caaf 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/MarkupTagHelperTooltipFactory.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Tooltip/MarkupTagHelperTooltipFactory.cs @@ -8,7 +8,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Razor.Tooltip; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/UriExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/UriExtensions.cs index b1ae800478f..f2cf6458933 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/UriExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/UriExtensions.cs @@ -3,8 +3,8 @@ using System; using System.Net; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.ExternalAccess.Razor; +using Microsoft.CodeAnalysis.Razor.Utilities; namespace Microsoft.CodeAnalysis.Razor; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue.cs index d34eac98049..c4b47b864d5 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue.cs @@ -6,8 +6,9 @@ using System.Collections.Immutable; using System.Threading; using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor; -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; // NOTE: This code is copied and modified slightly from dotnet/roslyn: // https://github.com/dotnet/roslyn/blob/98cd097bf122677378692ebe952b71ab6e5bb013/src/Workspaces/Core/Portable/Shared/Utilities/AsyncBatchingWorkQueue%600.cs @@ -22,5 +23,5 @@ private static Func, CancellationToken, ValueTask> Co => (items, ct) => processBatchAsync(ct); public void AddWork(bool cancelExistingWork = false) - => base.AddWork(default(VoidResult), cancelExistingWork); + => AddWork(default(VoidResult), cancelExistingWork); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue`1.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue`1.cs index 5d36d279774..1dbdc13fc16 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue`1.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue`1.cs @@ -6,8 +6,9 @@ using System.Collections.Immutable; using System.Threading; using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor; -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; // NOTE: This code is copied and modified slightly from dotnet/roslyn: // https://github.com/dotnet/roslyn/blob/98cd097bf122677378692ebe952b71ab6e5bb013/src/Workspaces/Core/Portable/Shared/Utilities/AsyncBatchingWorkQueue%601.cs diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue`2.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue`2.cs index cccdd28d1db..2079cd71c63 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue`2.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/AsyncBatchingWorkQueue`2.cs @@ -6,11 +6,13 @@ using System.Collections.Immutable; using System.Threading; using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.AspNetCore.Razor.Threading; +using Microsoft.CodeAnalysis.Razor.Threading; using Microsoft.VisualStudio.Threading; -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; // NOTE: This code is derived from dotnet/roslyn: // https://github.com/dotnet/roslyn/blob/98cd097bf122677378692ebe952b71ab6e5bb013/src/Workspaces/Core/Portable/Shared/Utilities/AsyncBatchingWorkQueue%602.cs diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/FilePathNormalizer.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/FilePathNormalizer.cs index ec419431db0..d28208ad9a5 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/FilePathNormalizer.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/FilePathNormalizer.cs @@ -5,10 +5,11 @@ using System.Buffers; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -using Microsoft.CodeAnalysis.Razor; +using Microsoft.AspNetCore.Razor; +using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.Extensions.Internal; -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; internal static class FilePathNormalizer { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/FilePathNormalizingComparer.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/FilePathNormalizingComparer.cs index 7bf93173c2a..e7f2d01507a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/FilePathNormalizingComparer.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/FilePathNormalizingComparer.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; internal sealed class FilePathNormalizingComparer : IEqualityComparer { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/MemoryCache.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/MemoryCache`2.cs similarity index 97% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/MemoryCache.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/MemoryCache`2.cs index edbabdfaca2..21dbfda4149 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/MemoryCache.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/MemoryCache`2.cs @@ -7,7 +7,7 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; // We've created our own MemoryCache here, ideally we would use the one in Microsoft.Extensions.Caching.Memory, // but until we update O# that causes an Assembly load problem. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/ProjectInfoAction.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/RazorProjectInfoAction.cs similarity index 67% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/ProjectInfoAction.cs rename to src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/RazorProjectInfoAction.cs index d5faca0a5b9..ae08bb230f0 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/ProjectInfoAction.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/RazorProjectInfoAction.cs @@ -1,9 +1,9 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; -internal enum ProjectInfoAction +internal enum RazorProjectInfoAction { Update, Remove diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/RazorProjectInfoFactory.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/RazorProjectInfoFactory.cs index 6f04f75b435..bc872b9f071 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/RazorProjectInfoFactory.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/RazorProjectInfoFactory.cs @@ -7,16 +7,18 @@ using System.IO; using System.Threading; using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Serialization; -using Microsoft.AspNetCore.Razor.Telemetry; -using Microsoft.CodeAnalysis; +using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Razor.Compiler.CSharp; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Serialization; +using Microsoft.CodeAnalysis.Razor.Telemetry; -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; internal static class RazorProjectInfoFactory { @@ -148,7 +150,7 @@ internal static ImmutableArray GetDocuments(Project proj foreach (var document in project.AdditionalDocuments) { if (document.FilePath is { } filePath && - TryGetFileKind(filePath, out var kind)) + FileKinds.TryGetFileKindFromPath(filePath, out var kind)) { documents.Add(new DocumentSnapshotHandle(filePath, GetTargetPath(filePath, normalizedProjectPath), kind)); } @@ -163,7 +165,7 @@ internal static ImmutableArray GetDocuments(Project proj foreach (var document in project.Documents) { if (TryGetRazorFileName(document.FilePath, out var razorFilePath) && - TryGetFileKind(razorFilePath, out var kind)) + FileKinds.TryGetFileKindFromPath(razorFilePath, out var kind)) { documents.Add(new DocumentSnapshotHandle(razorFilePath, GetTargetPath(razorFilePath, normalizedProjectPath), kind)); } @@ -188,25 +190,6 @@ private static string GetTargetPath(string documentFilePath, string normalizedPr return normalizedTargetFilePath; } - private static bool TryGetFileKind(string filePath, [NotNullWhen(true)] out string? fileKind) - { - var extension = Path.GetExtension(filePath); - - if (extension.Equals(".cshtml", s_stringComparison)) - { - fileKind = FileKinds.Legacy; - return true; - } - else if (extension.Equals(".razor", s_stringComparison)) - { - fileKind = FileKinds.GetComponentFileKindFromFilePath(filePath); - return true; - } - - fileKind = null; - return false; - } - private static bool TryGetRazorFileName(string? filePath, [NotNullWhen(true)] out string? razorFilePath) { if (filePath is null) diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/StreamExtensions.NetCore.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/StreamExtensions.NetCore.cs index ebde4991abc..c1c6d837e18 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/StreamExtensions.NetCore.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/StreamExtensions.NetCore.cs @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.ProjectSystem; using System; using System.Buffers; using System.Diagnostics; @@ -9,8 +8,10 @@ using System.Text; using System.Threading; using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; internal static class StreamExtensions { @@ -24,7 +25,7 @@ public static Task WriteStringAsync(this Stream stream, string text, Encoding? e var usedBytes = encoding.GetBytes(text, byteArray); - WriteSize(stream, usedBytes); + stream.WriteSize(usedBytes); return stream.WriteAsync(byteArray, 0, usedBytes, cancellationToken); } @@ -33,7 +34,7 @@ public static async Task ReadStringAsync(this Stream stream, Encoding? e Debug.Assert(stream.CanRead); encoding ??= Encoding.UTF8; - var length = ReadSize(stream); + var length = stream.ReadSize(); using var _ = ArrayPool.Shared.GetPooledArray(length, out var encodedBytes); @@ -41,30 +42,30 @@ public static async Task ReadStringAsync(this Stream stream, Encoding? e return encoding.GetString(encodedBytes, 0, length); } - public static ProjectInfoAction ReadProjectInfoAction(this Stream stream) + public static RazorProjectInfoAction ReadProjectInfoAction(this Stream stream) { var action = stream.ReadByte(); return action switch { - 0 => ProjectInfoAction.Update, - 1 => ProjectInfoAction.Remove, + 0 => RazorProjectInfoAction.Update, + 1 => RazorProjectInfoAction.Remove, _ => throw Assumes.NotReachable() }; } - public static void WriteProjectInfoAction(this Stream stream, ProjectInfoAction projectInfoAction) + public static void WriteProjectInfoAction(this Stream stream, RazorProjectInfoAction projectInfoAction) { stream.WriteByte(projectInfoAction switch { - ProjectInfoAction.Update => 0, - ProjectInfoAction.Remove => 1, + RazorProjectInfoAction.Update => 0, + RazorProjectInfoAction.Remove => 1, _ => throw Assumes.NotReachable() }); } public static Task WriteProjectInfoRemovalAsync(this Stream stream, string intermediateOutputPath, CancellationToken cancellationToken) { - WriteProjectInfoAction(stream, ProjectInfoAction.Remove); + stream.WriteProjectInfoAction(RazorProjectInfoAction.Remove); return stream.WriteStringAsync(intermediateOutputPath, encoding: null, cancellationToken); } @@ -76,13 +77,13 @@ public static Task ReadProjectInfoRemovalAsync(this Stream stream, Cance public static async Task WriteProjectInfoAsync(this Stream stream, RazorProjectInfo projectInfo, CancellationToken cancellationToken) { var bytes = projectInfo.Serialize(); - WriteSize(stream, bytes.Length); + stream.WriteSize(bytes.Length); await stream.WriteAsync(bytes, cancellationToken).ConfigureAwait(false); } public static async Task ReadProjectInfoAsync(this Stream stream, CancellationToken cancellationToken) { - var sizeToRead = ReadSize(stream); + var sizeToRead = stream.ReadSize(); using var _ = ArrayPool.Shared.GetPooledArray(sizeToRead, out var projectInfoBytes); await stream.ReadExactlyAsync(projectInfoBytes, 0, sizeToRead, cancellationToken).ConfigureAwait(false); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/TagHelperCache.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/TagHelperCache.cs index 9c1fe1a3df2..a03227b57a0 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/TagHelperCache.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/TagHelperCache.cs @@ -6,8 +6,9 @@ using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; +using Microsoft.AspNetCore.Razor.Utilities; -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; internal sealed class TagHelperCache { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/UrlDecoder.cs b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/UrlDecoder.cs index 84ea8161ed5..abe8e19eb3a 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/UrlDecoder.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Utilities/UrlDecoder.cs @@ -10,8 +10,9 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; +using Microsoft.AspNetCore.Razor; -namespace Microsoft.AspNetCore.Razor.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; internal static class UrlDecoder { @@ -126,7 +127,7 @@ public static void Decode(ReadOnlySpan source, Span destination, out if ((h1 | h2) != 0xff) { // Valid 2 hex character - var b = (byte)((h1 << 4) | h2); + var b = (byte)(h1 << 4 | h2); i += 2; // Add to our byte buffer. diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor.CoreComponents/Microsoft.CodeAnalysis.Remote.Razor.CoreComponents.csproj b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor.CoreComponents/Microsoft.CodeAnalysis.Remote.Razor.CoreComponents.csproj index 709694915b4..358f5f2ed54 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor.CoreComponents/Microsoft.CodeAnalysis.Remote.Razor.CoreComponents.csproj +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor.CoreComponents/Microsoft.CodeAnalysis.Remote.Razor.CoreComponents.csproj @@ -30,8 +30,6 @@ <_PublishedFiles Include="$(PublishDir)**\Microsoft.AspNetCore.*" /> <_PublishedFiles Include="$(PublishDir)**\Microsoft.Extensions.ObjectPool.dll" /> - <_PublishedFiles Include="$(PublishDir)**\Microsoft.VisualStudio.LanguageServer.Protocol.*" /> - <_PublishedFiles Remove="@(_PublishedFiles)" Condition="'%(Extension)' == '.pdb'" /> <_PublishedFiles Remove="@(_PublishedFiles)" Condition="'%(Extension)' == '.xml'" /> diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/AutoInsert/RemoteAutoInsertService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/AutoInsert/RemoteAutoInsertService.cs index 4aae34ae003..d6a8cdeacbb 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/AutoInsert/RemoteAutoInsertService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/AutoInsert/RemoteAutoInsertService.cs @@ -15,10 +15,7 @@ using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Roslyn.LanguageServer.Protocol; using Response = Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; -using RoslynInsertTextFormat = Roslyn.LanguageServer.Protocol.InsertTextFormat; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -74,7 +71,7 @@ private async ValueTask TryResolveInsertionAsync( // that adds closing tag instead of HTML even though we are in HTML if (_autoInsertService.TryResolveInsertion( codeDocument, - VsLspExtensions.ToPosition(linePosition), + linePosition.ToPosition(), character, options.EnableAutoClosingTags, out var insertTextEdit)) @@ -145,7 +142,7 @@ private async ValueTask TryResolveInsertionInCSharpAsync( generatedDocument, mappedPosition, character, - options.FormattingOptions.ToRoslynFormattingOptions(), + options.FormattingOptions.ToLspFormattingOptions(), cancellationToken ).ConfigureAwait(false); @@ -158,7 +155,7 @@ private async ValueTask TryResolveInsertionInCSharpAsync( var csharpSourceText = await remoteDocumentContext.GetCSharpSourceTextAsync(cancellationToken).ConfigureAwait(false); var csharpTextChange = new TextChange(csharpSourceText.GetTextSpan(autoInsertResponseItem.TextEdit.Range), autoInsertResponseItem.TextEdit.NewText); - var mappedChange = autoInsertResponseItem.TextEditFormat == RoslynInsertTextFormat.Snippet + var mappedChange = autoInsertResponseItem.TextEditFormat == InsertTextFormat.Snippet ? await _razorFormattingService.TryGetCSharpSnippetFormattingEditAsync( remoteDocumentContext, [csharpTextChange], diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RemoteCodeActionsService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RemoteCodeActionsService.cs index 9fabf787caf..1de432143e1 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RemoteCodeActionsService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RemoteCodeActionsService.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Remote.Razor; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RoslynCodeActionHelpers.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RoslynCodeActionHelpers.cs index dd9273321d7..6b5d85d2392 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RoslynCodeActionHelpers.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/CodeActions/RoslynCodeActionHelpers.cs @@ -7,16 +7,11 @@ using System.Diagnostics; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor.CodeActions; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; using ExternalHandlers = Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; -using RoslynTextEdit = Roslyn.LanguageServer.Protocol.TextEdit; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -57,10 +52,6 @@ public Task GetFormattedNewFileContentsAsync(IProjectSnapshot projectSna document = solution.GetRequiredDocument(documentIds.First(d => d.ProjectId == context.TextDocument.Project.Id)); } - var convertedEdit = JsonHelpers.ToRoslynLSP(edit).AssumeNotNull(); - - var edits = await ExternalHandlers.CodeActions.GetSimplifiedEditsAsync(document, convertedEdit, cancellationToken).ConfigureAwait(false); - - return JsonHelpers.ToVsLSP(edits); + return await ExternalHandlers.CodeActions.GetSimplifiedEditsAsync(document, edit, cancellationToken).ConfigureAwait(false); } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/RemoteCompletionService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/RemoteCompletionService.cs index 8ac661d9c3a..325d4743cba 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/RemoteCompletionService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/RemoteCompletionService.cs @@ -15,11 +15,7 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Response = Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; -using RoslynCompletionContext = Roslyn.LanguageServer.Protocol.CompletionContext; -using RoslynCompletionList = Roslyn.LanguageServer.Protocol.CompletionList; -using RoslynCompletionSetting = Roslyn.LanguageServer.Protocol.CompletionSetting; +using Response = Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -121,7 +117,7 @@ private async ValueTask GetCompletionAsync( var codeDocument = await documentSnapshot.GetGeneratedOutputAsync(cancellationToken).ConfigureAwait(false); - VSInternalCompletionList? csharpCompletionList = null; + RazorVSInternalCompletionList? csharpCompletionList = null; if (isCSharpTrigger) { var mappedPosition = documentPositionInfo.Position; @@ -146,7 +142,7 @@ private async ValueTask GetCompletionAsync( } } - VSInternalCompletionList? razorCompletionList = null; + RazorVSInternalCompletionList? razorCompletionList = null; if (isRazorTrigger) { @@ -169,7 +165,7 @@ private async ValueTask GetCompletionAsync( return Response.Results(mergedCompletionList); } - private async ValueTask GetCSharpCompletionAsync( + private async ValueTask GetCSharpCompletionAsync( SourceGeneratedDocument generatedDocument, RazorCodeDocument codeDocument, int documentIndex, @@ -178,47 +174,38 @@ private async ValueTask GetCompletionAsync( RazorCompletionOptions razorCompletionOptions, CancellationToken cancellationToken) { - // This is, to say the least, not ideal. In future we're going to normalize on to Roslyn LSP types, and this can go. - if (JsonHelpers.ToRoslynLSP(completionContext) is not { } roslynCompletionContext) - { - Debug.Fail("Unable to convert VS to Roslyn LSP completion context"); - return null; - } - var clientCapabilities = _clientCapabilitiesService.ClientCapabilities; - if (JsonHelpers.ToRoslynLSP(clientCapabilities.TextDocument?.Completion) is not { } roslynCompletionSetting) + if (clientCapabilities.TextDocument?.Completion is not { } completionSetting) { Debug.Fail("Unable to convert VS to Roslyn LSP completion setting"); return null; } var mappedLinePosition = mappedPosition.ToLinePosition(); - var roslynCompletionList = await ExternalAccess.Razor.Cohost.Handlers.Completion.GetCompletionListAsync( + var completionList = await ExternalAccess.Razor.Cohost.Handlers.Completion.GetCompletionListAsync( generatedDocument, mappedLinePosition, - roslynCompletionContext, + completionContext, clientCapabilities.SupportsVisualStudioExtensions, - roslynCompletionSetting, + completionSetting, cancellationToken) .ConfigureAwait(false); - if (roslynCompletionList is null) + if (completionList is null) { // If we don't get a response from the delegated server, we have to make sure to return an incomplete completion // list. When a user is typing quickly, the delegated request from the first keystroke will fail to synchronize, // so if we return a "complete" list then the query won't re-query us for completion once the typing stops/slows // so we'd only ever return Razor completion items. - return new VSInternalCompletionList() + return new RazorVSInternalCompletionList() { Items = [], IsIncomplete = true }; } - var vsPlatformCompletionList = JsonHelpers.ToVsLSP(roslynCompletionList); - var rewrittenResponse = DelegatedCompletionHelper.RewriteCSharpResponse( - vsPlatformCompletionList, + new(completionList), documentIndex, codeDocument, mappedPosition, diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Diagnostics/RemoteDiagnosticsService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Diagnostics/RemoteDiagnosticsService.cs index 096b8744b0d..4fd66dc4027 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Diagnostics/RemoteDiagnosticsService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Diagnostics/RemoteDiagnosticsService.cs @@ -10,7 +10,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; -using LspDiagnostic = Microsoft.VisualStudio.LanguageServer.Protocol.Diagnostic; namespace Microsoft.CodeAnalysis.Remote.Razor; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentHighlight/RemoteDocumentHighlightService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentHighlight/RemoteDocumentHighlightService.cs index 0fdb8119224..a0d4d3c83bf 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentHighlight/RemoteDocumentHighlightService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentHighlight/RemoteDocumentHighlightService.cs @@ -13,8 +13,6 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using static Microsoft.VisualStudio.LanguageServer.Protocol.VsLspExtensions; -using static Roslyn.LanguageServer.Protocol.RoslynLspExtensions; using Response = Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -78,8 +76,8 @@ private async ValueTask GetHighlightsAsync( { if (DocumentMappingService.TryMapToHostDocumentRange(csharpDocument, highlight.Range.ToLinePositionSpan(), out var mappedRange)) { - highlight.Range = Roslyn.LanguageServer.Protocol.RoslynLspExtensions.ToRange(mappedRange); - results.Add(RemoteDocumentHighlight.FromRoslynDocumentHighlight(highlight)); + highlight.Range = mappedRange.ToRange(); + results.Add(RemoteDocumentHighlight.FromLspDocumentHighlight(highlight)); } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/IDocumentMappingServiceExtensions.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/IDocumentMappingServiceExtensions.cs index f51c649eb18..55662182119 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/IDocumentMappingServiceExtensions.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/IDocumentMappingServiceExtensions.cs @@ -8,8 +8,6 @@ using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Roslyn.LanguageServer.Protocol; -using RoslynRange = Roslyn.LanguageServer.Protocol.Range; namespace Microsoft.CodeAnalysis.Remote.Razor.DocumentMapping; @@ -40,11 +38,11 @@ internal static class IDocumentMappingServiceExtensions /// generated document. If the uri passed in is not for a generated document, or the range cannot be mapped /// for some other reason, the original passed in range is returned unchanged. /// - public static async Task<(Uri MappedDocumentUri, RoslynRange MappedRange)> MapToHostDocumentUriAndRangeAsync( + public static async Task<(Uri MappedDocumentUri, LspRange MappedRange)> MapToHostDocumentUriAndRangeAsync( this IDocumentMappingService service, RemoteDocumentSnapshot originSnapshot, Uri generatedDocumentUri, - RoslynRange generatedDocumentRange, + LspRange generatedDocumentRange, CancellationToken cancellationToken) { var (mappedDocumentUri, mappedRange) = await service diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/RemoteEditMappingService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/RemoteEditMappingService.cs index 4d5ed800e82..a3d327d03ef 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/RemoteEditMappingService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentMapping/RemoteEditMappingService.cs @@ -4,12 +4,10 @@ using System; using System.Composition; using System.Diagnostics.CodeAnalysis; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Remote.Razor.DocumentMapping; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentSymbols/RemoteDocumentSymbolService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentSymbols/RemoteDocumentSymbolService.cs index b2377bb95da..e7f647d64b8 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentSymbols/RemoteDocumentSymbolService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/DocumentSymbols/RemoteDocumentSymbolService.cs @@ -9,9 +9,7 @@ using Microsoft.CodeAnalysis.Razor.Protocol.DocumentSymbols; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; using ExternalHandlers = Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; -using RoslynSymbolSumType = Roslyn.LanguageServer.Protocol.SumType; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -27,7 +25,7 @@ protected override IRemoteDocumentSymbolService CreateService(in ServiceArgs arg private readonly IClientCapabilitiesService _clientCapabilitiesService = args.ExportProvider.GetExportedValue(); public ValueTask?> GetDocumentSymbolsAsync(JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId razorDocumentId, bool useHierarchicalSymbols, CancellationToken cancellationToken) - => RunServiceAsync( + => RunServiceAsync( solutionInfo, razorDocumentId, context => GetDocumentSymbolsAsync(context, useHierarchicalSymbols, cancellationToken), @@ -48,13 +46,6 @@ protected override IRemoteDocumentSymbolService CreateService(in ServiceArgs arg var codeDocument = await context.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); var csharpDocument = codeDocument.GetCSharpDocument(); - // This is, to say the least, not ideal. In future we're going to normalize on to Roslyn LSP types, and this can go. - var vsCSharpSymbols = JsonHelpers.ToVsLSP?, RoslynSymbolSumType>(csharpSymbols); - if (vsCSharpSymbols is not { } convertedSymbols) - { - return null; - } - - return _documentSymbolService.GetDocumentSymbols(context.Uri, csharpDocument, convertedSymbols); + return _documentSymbolService.GetDocumentSymbols(context.Uri, csharpDocument, csharpSymbols); } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FindAllReferences/RemoteFindAllReferencesService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FindAllReferences/RemoteFindAllReferencesService.cs index 36da4a96d49..6392f9cd351 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FindAllReferences/RemoteFindAllReferencesService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FindAllReferences/RemoteFindAllReferencesService.cs @@ -12,11 +12,9 @@ using Microsoft.CodeAnalysis.Remote.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Roslyn.LanguageServer.Protocol; -using static Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse[]?>; +using static Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse< + Roslyn.LanguageServer.Protocol.SumType[]?>; using ExternalHandlers = Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; -using LspLocation = Roslyn.LanguageServer.Protocol.Location; -using VsLspExtensions = Microsoft.VisualStudio.LanguageServer.Protocol.VsLspExtensions; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -71,7 +69,7 @@ protected override IRemoteFindAllReferencesService CreateService(in ServiceArgs .FindReferencesAsync( RemoteWorkspaceAccessor.GetWorkspace(), generatedDocument, - VsLspExtensions.ToLinePosition(positionInfo.Position), + positionInfo.Position.ToLinePosition(), _clientCapabilitiesService.ClientCapabilities.SupportsVisualStudioExtensions, cancellationToken) .ConfigureAwait(false); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FoldingRanges/RemoteFoldingRangeService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FoldingRanges/RemoteFoldingRangeService.cs index 0e587b74773..37ec1071436 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FoldingRanges/RemoteFoldingRangeService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/FoldingRanges/RemoteFoldingRangeService.cs @@ -10,7 +10,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol.Folding; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; using ExternalHandlers = Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -55,7 +54,7 @@ private async ValueTask> GetFoldingRangesAsyn .SelectAsArray(RemoteFoldingRange.FromVsFoldingRange); } - public static FoldingRange ToFoldingRange(Roslyn.LanguageServer.Protocol.FoldingRange r) + public static FoldingRange ToFoldingRange(FoldingRange r) => new() { StartLine = r.StartLine, diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteFormattingService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteFormattingService.cs index b9921462a6a..98a0411145f 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteFormattingService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Formatting/RemoteFormattingService.cs @@ -11,7 +11,6 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Response = Microsoft.CodeAnalysis.Razor.Remote.IRemoteFormattingService.TriggerKind; namespace Microsoft.CodeAnalysis.Remote.Razor; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToDefinition/RemoteGoToDefinitionService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToDefinition/RemoteGoToDefinitionService.cs index 001d3b959e7..1b448a68a4d 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToDefinition/RemoteGoToDefinitionService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToDefinition/RemoteGoToDefinitionService.cs @@ -12,12 +12,8 @@ using Microsoft.CodeAnalysis.Remote.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Roslyn.LanguageServer.Protocol; using static Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; using ExternalHandlers = Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; -using RoslynLocation = Roslyn.LanguageServer.Protocol.Location; -using RoslynPosition = Roslyn.LanguageServer.Protocol.Position; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -33,10 +29,10 @@ protected override IRemoteGoToDefinitionService CreateService(in ServiceArgs arg protected override IDocumentPositionInfoStrategy DocumentPositionInfoStrategy => PreferAttributeNameDocumentPositionInfoStrategy.Instance; - public ValueTask> GetDefinitionAsync( + public ValueTask> GetDefinitionAsync( JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId documentId, - RoslynPosition position, + Position position, CancellationToken cancellationToken) => RunServiceAsync( solutionInfo, @@ -44,9 +40,9 @@ protected override IRemoteGoToDefinitionService CreateService(in ServiceArgs arg context => GetDefinitionAsync(context, position, cancellationToken), cancellationToken); - private async ValueTask> GetDefinitionAsync( + private async ValueTask> GetDefinitionAsync( RemoteDocumentContext context, - RoslynPosition position, + Position position, CancellationToken cancellationToken) { var codeDocument = await context.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); @@ -68,7 +64,7 @@ protected override IRemoteGoToDefinitionService CreateService(in ServiceArgs arg if (componentLocation is not null) { // Convert from VS LSP Location to Roslyn. This can be removed when Razor moves fully onto Roslyn's LSP types. - return Results([RoslynLspFactory.CreateLocation(componentLocation.Uri, componentLocation.Range.ToLinePositionSpan())]); + return Results([LspFactory.CreateLocation(componentLocation.Uri, componentLocation.Range.ToLinePositionSpan())]); } // If it isn't a Razor component, and it isn't C#, let the server know to delegate to HTML. @@ -96,7 +92,7 @@ protected override IRemoteGoToDefinitionService CreateService(in ServiceArgs arg } // Map the C# locations back to the Razor file. - using var mappedLocations = new PooledArrayBuilder(locations.Length); + using var mappedLocations = new PooledArrayBuilder(locations.Length); foreach (var location in locations) { @@ -106,7 +102,7 @@ protected override IRemoteGoToDefinitionService CreateService(in ServiceArgs arg .MapToHostDocumentUriAndRangeAsync(context.Snapshot, uri, range.ToLinePositionSpan(), cancellationToken) .ConfigureAwait(false); - var mappedLocation = RoslynLspFactory.CreateLocation(mappedDocumentUri, mappedRange); + var mappedLocation = LspFactory.CreateLocation(mappedDocumentUri, mappedRange); mappedLocations.Add(mappedLocation); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToImplementation/RemoteGoToImplementationService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToImplementation/RemoteGoToImplementationService.cs index 5dae34a51ef..8870db2029c 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToImplementation/RemoteGoToImplementationService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/GoToImplementation/RemoteGoToImplementationService.cs @@ -11,12 +11,8 @@ using Microsoft.CodeAnalysis.Remote.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Roslyn.LanguageServer.Protocol; using static Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; using ExternalHandlers = Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; -using RoslynLocation = Roslyn.LanguageServer.Protocol.Location; -using RoslynPosition = Roslyn.LanguageServer.Protocol.Position; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -30,10 +26,10 @@ protected override IRemoteGoToImplementationService CreateService(in ServiceArgs protected override IDocumentPositionInfoStrategy DocumentPositionInfoStrategy => PreferAttributeNameDocumentPositionInfoStrategy.Instance; - public ValueTask> GetImplementationAsync( + public ValueTask> GetImplementationAsync( JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId documentId, - RoslynPosition position, + Position position, CancellationToken cancellationToken) => RunServiceAsync( solutionInfo, @@ -41,9 +37,9 @@ protected override IRemoteGoToImplementationService CreateService(in ServiceArgs context => GetImplementationAsync(context, position, cancellationToken), cancellationToken); - private async ValueTask> GetImplementationAsync( + private async ValueTask> GetImplementationAsync( RemoteDocumentContext context, - RoslynPosition position, + Position position, CancellationToken cancellationToken) { var codeDocument = await context.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false); @@ -85,7 +81,7 @@ protected override IRemoteGoToImplementationService CreateService(in ServiceArgs } // Map the C# locations back to the Razor file. - using var mappedLocations = new PooledArrayBuilder(locations.Length); + using var mappedLocations = new PooledArrayBuilder(locations.Length); foreach (var location in locations) { @@ -95,7 +91,7 @@ protected override IRemoteGoToImplementationService CreateService(in ServiceArgs .MapToHostDocumentUriAndRangeAsync(context.Snapshot, uri, range.ToLinePositionSpan(), cancellationToken) .ConfigureAwait(false); - var mappedLocation = RoslynLspFactory.CreateLocation(mappedDocumentUri, mappedRange); + var mappedLocation = LspFactory.CreateLocation(mappedDocumentUri, mappedRange); mappedLocations.Add(mappedLocation); } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/ComponentAvailabilityService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/ComponentAvailabilityService.cs index 39f5f9a4457..15d50af88bd 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/ComponentAvailabilityService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/ComponentAvailabilityService.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Collections.Immutable; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Tooltip; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/RemoteHoverService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/RemoteHoverService.cs index 1b2f349de9f..9f55ba539f3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/RemoteHoverService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Hover/RemoteHoverService.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Diagnostics; -using System.Linq; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; @@ -13,14 +12,8 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; -using Roslyn.LanguageServer.Protocol; using static Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; -using static Microsoft.VisualStudio.LanguageServer.Protocol.ClientCapabilitiesExtensions; -using static Microsoft.VisualStudio.LanguageServer.Protocol.VsLspExtensions; -using static Roslyn.LanguageServer.Protocol.RoslynLspExtensions; using ExternalHandlers = Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; -using Range = Roslyn.LanguageServer.Protocol.Range; -using VsLsp = Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -87,7 +80,7 @@ protected override IRemoteHoverService CreateService(in ServiceArgs args) if (csharpHover.Range is { } range && DocumentMappingService.TryMapToHostDocumentRange(codeDocument.GetCSharpDocument(), range.ToLinePositionSpan(), out var hostDocumentSpan)) { - csharpHover.Range = RoslynLspFactory.CreateRange(hostDocumentSpan); + csharpHover.Range = LspFactory.CreateRange(hostDocumentSpan); } return Results(csharpHover); @@ -126,97 +119,30 @@ protected override IRemoteHoverService CreateService(in ServiceArgs args) } /// - /// Converts a to a . + /// Converts a to a . /// /// /// Once Razor moves wholly over to Roslyn.LanguageServer.Protocol, this method can be removed. /// - private Hover ConvertHover(VsLsp.Hover hover) + private Hover ConvertHover(Hover hover) { // Note: Razor only ever produces a Hover with MarkupContent or a VSInternalHover with RawContents. // Both variants return a Range. return hover switch { - VsLsp.VSInternalHover { Range: var range, RawContent: { } rawContent } => new VSInternalHover() + VSInternalHover { Range: var range, RawContent: { } rawContent } => new VSInternalHover() { - Range = ConvertRange(range), + Range = range, Contents = string.Empty, - RawContent = ConvertVsContent(rawContent) + RawContent = rawContent }, - VsLsp.Hover { Range: var range, Contents.Fourth: VsLsp.MarkupContent contents } => new Hover() + Hover { Range: var range, Contents.Fourth: MarkupContent contents } => new Hover() { - Range = ConvertRange(range), - Contents = ConvertMarkupContent(contents) + Range = range, + Contents = contents }, _ => Assumed.Unreachable(), }; - - static Range? ConvertRange(VsLsp.Range? range) - { - return range is not null - ? RoslynLspFactory.CreateRange(range.ToLinePositionSpan()) - : null; - } - - static object ConvertVsContent(object obj) - { - return obj switch - { - VisualStudio.Core.Imaging.ImageId imageId => ConvertImageId(imageId), - VisualStudio.Text.Adornments.ImageElement element => ConvertImageElement(element), - VisualStudio.Text.Adornments.ClassifiedTextRun run => ConvertClassifiedTextRun(run), - VisualStudio.Text.Adornments.ClassifiedTextElement element => ConvertClassifiedTextElement(element), - VisualStudio.Text.Adornments.ContainerElement element => ConvertContainerElement(element), - _ => Assumed.Unreachable() - }; - - static Roslyn.Core.Imaging.ImageId ConvertImageId(VisualStudio.Core.Imaging.ImageId imageId) - { - return new(imageId.Guid, imageId.Id); - } - - static Roslyn.Text.Adornments.ImageElement ConvertImageElement(VisualStudio.Text.Adornments.ImageElement element) - { - return new(ConvertImageId(element.ImageId), element.AutomationName); - } - - static Roslyn.Text.Adornments.ClassifiedTextRun ConvertClassifiedTextRun(VisualStudio.Text.Adornments.ClassifiedTextRun run) - { - return new( - run.ClassificationTypeName, - run.Text, - (Roslyn.Text.Adornments.ClassifiedTextRunStyle)run.Style, - run.MarkerTagType, - run.NavigationAction, - run.Tooltip); - } - - static Roslyn.Text.Adornments.ClassifiedTextElement ConvertClassifiedTextElement(VisualStudio.Text.Adornments.ClassifiedTextElement element) - { - return new(element.Runs.Select(ConvertClassifiedTextRun)); - } - - static Roslyn.Text.Adornments.ContainerElement ConvertContainerElement(VisualStudio.Text.Adornments.ContainerElement element) - { - return new((Roslyn.Text.Adornments.ContainerElementStyle)element.Style, element.Elements.Select(ConvertVsContent)); - } - } - - static MarkupContent ConvertMarkupContent(VsLsp.MarkupContent value) - { - return new() - { - Kind = ConvertMarkupKind(value.Kind), - Value = value.Value - }; - } - - static MarkupKind ConvertMarkupKind(VsLsp.MarkupKind value) - { - return value == VsLsp.MarkupKind.Markdown - ? MarkupKind.Markdown - : MarkupKind.PlainText; - } } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/InlayHints/RemoteInlayHintService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/InlayHints/RemoteInlayHintService.cs index dae994603e8..56ca3a8f579 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/InlayHints/RemoteInlayHintService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/InlayHints/RemoteInlayHintService.cs @@ -15,7 +15,6 @@ using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Roslyn.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -28,7 +27,7 @@ protected override IRemoteInlayHintService CreateService(in ServiceArgs args) } public ValueTask GetInlayHintsAsync(JsonSerializableRazorPinnedSolutionInfoWrapper solutionInfo, JsonSerializableDocumentId razorDocumentId, InlayHintParams inlayHintParams, bool displayAllOverride, CancellationToken cancellationToken) - => RunServiceAsync( + => RunServiceAsync( solutionInfo, razorDocumentId, context => GetInlayHintsAsync(context, inlayHintParams, displayAllOverride, cancellationToken), diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Microsoft.CodeAnalysis.Remote.Razor.csproj b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Microsoft.CodeAnalysis.Remote.Razor.csproj index 2e4e17b0400..3622a4f30ad 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Microsoft.CodeAnalysis.Remote.Razor.csproj +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Microsoft.CodeAnalysis.Remote.Razor.csproj @@ -31,6 +31,8 @@ + + @@ -42,9 +44,6 @@ - - - diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteDocumentSnapshot.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteDocumentSnapshot.cs index d910cd9de43..32747a75ad3 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteDocumentSnapshot.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteDocumentSnapshot.cs @@ -7,7 +7,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; @@ -31,7 +31,7 @@ public RemoteDocumentSnapshot(TextDocument textDocument, RemoteProjectSnapshot p ProjectSnapshot = projectSnapshot; } - public string FileKind => FileKinds.GetFileKindFromFilePath(FilePath); + public RazorFileKind FileKind => FileKinds.GetFileKindFromPath(FilePath); public string FilePath => TextDocument.FilePath.AssumeNotNull(); public string TargetPath => TextDocument.FilePath.AssumeNotNull(); diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteProjectSnapshot.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteProjectSnapshot.cs index b041fc20597..159a2453556 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteProjectSnapshot.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteProjectSnapshot.cs @@ -10,11 +10,11 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.ExternalAccess.Razor; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.NET.Sdk.Razor.SourceGenerators; namespace Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteSnapshotManager.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteSnapshotManager.cs index 09abbf16af7..392c84a5f18 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteSnapshotManager.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteSnapshotManager.cs @@ -3,8 +3,8 @@ using System.Composition; using System.Runtime.CompilerServices; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; namespace Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteSolutionSnapshot.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteSolutionSnapshot.cs index 0958e8bd45d..f12d8044796 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteSolutionSnapshot.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/ProjectSystem/RemoteSolutionSnapshot.cs @@ -6,7 +6,6 @@ using System.Collections.Immutable; using System.Linq; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorDocumentServiceBase.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorDocumentServiceBase.cs index 545e9eccf0e..8312472ceab 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorDocumentServiceBase.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/RazorDocumentServiceBase.cs @@ -10,10 +10,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Roslyn.LanguageServer.Protocol; -using RoslynPosition = Roslyn.LanguageServer.Protocol.Position; -using VsPosition = Microsoft.VisualStudio.LanguageServer.Protocol.Position; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -35,7 +31,7 @@ protected DocumentPositionInfo GetPositionInfo(RazorCodeDocument codeDocument, i // Sometimes Html can actually be mapped to C#, like for example component attributes, which map to // C# properties, even though they appear entirely in a Html context. Since remapping is pretty cheap // it's easier to just try mapping, and see what happens, rather than checking for specific syntax nodes. - if (DocumentMappingService.TryMapToGeneratedDocumentPosition(codeDocument.GetCSharpDocument(), positionInfo.HostDocumentIndex, out VsPosition? csharpPosition, out _)) + if (DocumentMappingService.TryMapToGeneratedDocumentPosition(codeDocument.GetCSharpDocument(), positionInfo.HostDocumentIndex, out Position? csharpPosition, out _)) { // We're just gonna pretend this mapped perfectly normally onto C#. Moving this logic to the actual position info // calculating code is possible, but could have untold effects, so opt-in is better (for now?) @@ -48,25 +44,10 @@ protected DocumentPositionInfo GetPositionInfo(RazorCodeDocument codeDocument, i return positionInfo; } - protected bool TryGetDocumentPositionInfo(RazorCodeDocument codeDocument, RoslynPosition position, out DocumentPositionInfo positionInfo) + protected bool TryGetDocumentPositionInfo(RazorCodeDocument codeDocument, Position position, out DocumentPositionInfo positionInfo) => TryGetDocumentPositionInfo(codeDocument, position, preferCSharpOverHtml: false, out positionInfo); - protected bool TryGetDocumentPositionInfo(RazorCodeDocument codeDocument, RoslynPosition position, bool preferCSharpOverHtml, out DocumentPositionInfo positionInfo) - { - if (!codeDocument.Source.Text.TryGetAbsoluteIndex(position, out var hostDocumentIndex)) - { - positionInfo = default; - return false; - } - - positionInfo = GetPositionInfo(codeDocument, hostDocumentIndex, preferCSharpOverHtml); - return true; - } - - protected bool TryGetDocumentPositionInfo(RazorCodeDocument codeDocument, VsPosition position, out DocumentPositionInfo positionInfo) - => TryGetDocumentPositionInfo(codeDocument, position, preferCSharpOverHtml: false, out positionInfo); - - protected bool TryGetDocumentPositionInfo(RazorCodeDocument codeDocument, VsPosition position, bool preferCSharpOverHtml, out DocumentPositionInfo positionInfo) + protected bool TryGetDocumentPositionInfo(RazorCodeDocument codeDocument, Position position, bool preferCSharpOverHtml, out DocumentPositionInfo positionInfo) { if (!codeDocument.Source.Text.TryGetAbsoluteIndex(position, out var hostDocumentIndex)) { diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Rename/RemoteRenameService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Rename/RemoteRenameService.cs index c0eac5efae7..ff4e576557d 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Rename/RemoteRenameService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Rename/RemoteRenameService.cs @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.ExternalAccess.Razor; @@ -10,8 +9,7 @@ using Microsoft.CodeAnalysis.Razor.Rename; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using static Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; +using static Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; using ExternalHandlers = Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; namespace Microsoft.CodeAnalysis.Remote.Razor; @@ -79,14 +77,7 @@ protected override IRemoteRenameService CreateService(in ServiceArgs args) return NoFurtherHandling; } - // This is, to say the least, not ideal. In future we're going to normalize on to Roslyn LSP types, and this can go. - var vsEdit = JsonSerializer.Deserialize(JsonSerializer.SerializeToDocument(csharpEdit)); - if (vsEdit is null) - { - return NoFurtherHandling; - } - - var mappedEdit = await _editMappingService.RemapWorkspaceEditAsync(context.Snapshot, vsEdit, cancellationToken).ConfigureAwait(false); + var mappedEdit = await _editMappingService.RemapWorkspaceEditAsync(context.Snapshot, csharpEdit, cancellationToken).ConfigureAwait(false); return Results(mappedEdit); } } diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RemoteCSharpSemanticTokensProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RemoteCSharpSemanticTokensProvider.cs index f797efb1be6..0bf56927ff8 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RemoteCSharpSemanticTokensProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RemoteCSharpSemanticTokensProvider.cs @@ -7,12 +7,11 @@ using System.Diagnostics; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.SemanticTokens; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.CodeAnalysis.Razor.Workspaces.Telemetry; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RemoteSemanticTokensLegendService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RemoteSemanticTokensLegendService.cs index 4c3b8bafe6c..60884f619e4 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RemoteSemanticTokensLegendService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SemanticTokens/RemoteSemanticTokensLegendService.cs @@ -3,6 +3,8 @@ using System.Composition; using Microsoft.CodeAnalysis.Razor.SemanticTokens; +using SemanticTokenModifiers = Microsoft.CodeAnalysis.Razor.SemanticTokens.SemanticTokenModifiers; +using SemanticTokenTypes = Microsoft.CodeAnalysis.Razor.SemanticTokens.SemanticTokenTypes; namespace Microsoft.CodeAnalysis.Remote.Razor.SemanticTokens; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SignatureHelp/RemoteSignatureHelpService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SignatureHelp/RemoteSignatureHelpService.cs index a81b7774d55..0488f7bb61e 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SignatureHelp/RemoteSignatureHelpService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/SignatureHelp/RemoteSignatureHelpService.cs @@ -8,9 +8,7 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Roslyn.LanguageServer.Protocol; using ExternalHandlers = Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; -using LspSignatureHelp = Roslyn.LanguageServer.Protocol.SignatureHelp; namespace Microsoft.CodeAnalysis.Remote.Razor; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperDeltaProvider.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperDeltaProvider.cs index 849a7f21263..4fe7b42c33e 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperDeltaProvider.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperDeltaProvider.cs @@ -3,9 +3,9 @@ using System.Collections.Immutable; using System.Composition; -using Microsoft.AspNetCore.Razor.Serialization; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Remote; +using Microsoft.CodeAnalysis.Razor.Serialization; namespace Microsoft.CodeAnalysis.Remote.Razor; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperProviderService.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperProviderService.cs index 93cca215f5d..d3e058d2f41 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperProviderService.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperProviderService.cs @@ -6,10 +6,11 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.Serialization; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor.Remote; +using Microsoft.CodeAnalysis.Razor.Serialization; +using Microsoft.CodeAnalysis.Razor.Utilities; namespace Microsoft.CodeAnalysis.Remote.Razor; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperResolver.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperResolver.cs index a4991232c48..a87054e79bb 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperResolver.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/TagHelpers/RemoteTagHelperResolver.cs @@ -8,8 +8,8 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; +using Microsoft.CodeAnalysis.Razor.Telemetry; namespace Microsoft.CodeAnalysis.Remote.Razor; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Telemetry/OutOfProcessTelemetryReporter.cs b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Telemetry/OutOfProcessTelemetryReporter.cs index f3baeebd61a..a8cbcefcc6b 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Telemetry/OutOfProcessTelemetryReporter.cs +++ b/src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Telemetry/OutOfProcessTelemetryReporter.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Composition; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.Razor.Telemetry; using Microsoft.VisualStudio.Telemetry; diff --git a/src/Razor/src/Microsoft.VisualStudio.DevKit.Razor/Telemetry/DevKitTelemetryReporter.cs b/src/Razor/src/Microsoft.VisualStudio.DevKit.Razor/Telemetry/DevKitTelemetryReporter.cs index 1746f74de7f..fa221796b94 100644 --- a/src/Razor/src/Microsoft.VisualStudio.DevKit.Razor/Telemetry/DevKitTelemetryReporter.cs +++ b/src/Razor/src/Microsoft.VisualStudio.DevKit.Razor/Telemetry/DevKitTelemetryReporter.cs @@ -6,7 +6,7 @@ using System.Diagnostics; using System.Text; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.Razor.Telemetry; using Microsoft.VisualStudio.Telemetry; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/InternalAPI.Unshipped.txt b/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/InternalAPI.Unshipped.txt index 36eda715446..dee1afd5aa3 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/InternalAPI.Unshipped.txt +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/InternalAPI.Unshipped.txt @@ -4,6 +4,7 @@ Microsoft.VisualStudio.LanguageServer.ContainedLanguage.DefaultLSPDocumentSynchr Microsoft.VisualStudio.LanguageServer.ContainedLanguage.DefaultLSPRequestInvoker.DefaultLSPRequestInvoker(Microsoft.VisualStudio.LanguageServer.Client.ILanguageServiceBroker2! languageServiceBroker) -> void Microsoft.VisualStudio.LanguageServer.ContainedLanguage.LSPDocumentSnapshot.TryGetAllVirtualDocumentsAsArray(out System.Collections.Immutable.ImmutableArray virtualDocuments) -> bool Microsoft.VisualStudio.LanguageServer.ContainedLanguage.MessageInterception.DefaultInterceptorManager.DefaultInterceptorManager(System.Collections.Generic.IEnumerable!>! lazyInterceptors, System.Collections.Generic.IEnumerable!>! lazyGenericInterceptors) -> void +Microsoft.VisualStudio.LanguageServer.ContainedLanguage.VisualStudioTextChange.VisualStudioTextChange(int startLineNumber, int startCharacter, int endLineNumber, int endCharacter, Microsoft.VisualStudio.Text.ITextSnapshot! textSnapshot, string! newText) -> void override Microsoft.VisualStudio.LanguageServer.ContainedLanguage.DefaultLSPDocument.SetVirtualDocuments(System.Collections.Generic.IReadOnlyList! virtualDocuments) -> void override Microsoft.VisualStudio.LanguageServer.ContainedLanguage.DefaultLSPDocument.UpdateVirtualDocument(TVirtualDocument! virtualDocument, System.Collections.Generic.IReadOnlyList! changes, int hostDocumentVersion, object? state) -> Microsoft.VisualStudio.LanguageServer.ContainedLanguage.LSPDocumentSnapshot! override Microsoft.VisualStudio.LanguageServer.ContainedLanguage.DefaultLSPDocumentFactory.TryRefreshVirtualDocuments(Microsoft.VisualStudio.LanguageServer.ContainedLanguage.LSPDocument! document) -> bool diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/VisualStudioTextChange.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/VisualStudioTextChange.cs index 83571783783..ba7e1931154 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/VisualStudioTextChange.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServer.ContainedLanguage/VisualStudioTextChange.cs @@ -16,16 +16,25 @@ public VisualStudioTextChange(int oldStart, int oldLength, string newText) } public VisualStudioTextChange(TextEdit textEdit, ITextSnapshot textSnapshot) + : this( + textEdit.Range.Start.Line, + textEdit.Range.Start.Character, + textEdit.Range.End.Line, + textEdit.Range.End.Character, + textSnapshot, + textEdit.NewText) { - var startRange = textEdit.Range.Start; - var startLine = textSnapshot.GetLineFromLineNumber(startRange.Line); - var startAbsoluteIndex = startLine.Start + startRange.Character; - var endRange = textEdit.Range.End; - var endLine = textSnapshot.GetLineFromLineNumber(endRange.Line); - var endAbsoluteIndex = endLine.Start + endRange.Character; + } + + public VisualStudioTextChange(int startLineNumber, int startCharacter, int endLineNumber, int endCharacter, ITextSnapshot textSnapshot, string newText) + { + var startLine = textSnapshot.GetLineFromLineNumber(startLineNumber); + var startAbsoluteIndex = startLine.Start + startCharacter; + var endLine = textSnapshot.GetLineFromLineNumber(endLineNumber); + var endAbsoluteIndex = endLine.Start + endCharacter; var length = endAbsoluteIndex - startAbsoluteIndex; OldSpan = new Span(startAbsoluteIndex, length); - NewText = textEdit.NewText; + NewText = newText; } public Span OldSpan { get; } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Debugging/IRazorBreakpointResolver.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Debugging/IRazorBreakpointResolver.cs index 62d9ec22964..dfd966ec7ff 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Debugging/IRazorBreakpointResolver.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Debugging/IRazorBreakpointResolver.cs @@ -4,11 +4,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.Text; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.VisualStudio.Razor.Debugging; internal interface IRazorBreakpointResolver { - Task TryResolveBreakpointRangeAsync(ITextBuffer textBuffer, int lineIndex, int characterIndex, CancellationToken cancellationToken); + Task TryResolveBreakpointRangeAsync(ITextBuffer textBuffer, int lineIndex, int characterIndex, CancellationToken cancellationToken); } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/IProjectStateUpdater.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/IProjectStateUpdater.cs index 0e3b198f156..99f718a425a 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/IProjectStateUpdater.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/IProjectStateUpdater.cs @@ -1,8 +1,8 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.VisualStudio.Razor.Discovery; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/OutOfProcTagHelperResolver.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/OutOfProcTagHelperResolver.cs index db3411bc55a..c7b1f830eb9 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/OutOfProcTagHelperResolver.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/OutOfProcTagHelperResolver.cs @@ -11,13 +11,14 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.Serialization; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Remote; +using Microsoft.CodeAnalysis.Razor.Serialization; +using Microsoft.CodeAnalysis.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; namespace Microsoft.VisualStudio.Razor.Discovery; @@ -59,7 +60,7 @@ public async ValueTask> GetTagHelpersAsync( catch (Exception ex) when (ex is not OperationCanceledException) { _logger.LogError(ex, $"Error encountered from project '{projectSnapshot.FilePath}':{Environment.NewLine}{ex}"); - return default; + // if not cancellation, try getting tag helpers in-proc } try diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/ProjectStateChangeDetector.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/ProjectStateChangeDetector.cs index 1e7095d0d58..52b90c1e8e0 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/ProjectStateChangeDetector.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/ProjectStateChangeDetector.cs @@ -10,12 +10,11 @@ using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language.Components; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; namespace Microsoft.VisualStudio.Razor.Discovery; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/ProjectStateUpdater.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/ProjectStateUpdater.cs index ea731eba9be..97c22b038b8 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/ProjectStateUpdater.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Discovery/ProjectStateUpdater.cs @@ -9,13 +9,12 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Razor.Compiler.CSharp; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; namespace Microsoft.VisualStudio.Razor.Discovery; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocument.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocument.cs index 8436ddbf1a9..a835809492d 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocument.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocument.cs @@ -2,8 +2,8 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.Razor.Extensions; using Microsoft.VisualStudio.Text; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocumentManager.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocumentManager.cs index 940aeb3a407..fa4dd72cdaa 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocumentManager.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocumentManager.cs @@ -4,9 +4,9 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.VisualStudio.Razor.Extensions; using Microsoft.VisualStudio.Text; using Microsoft.VisualStudio.Threading; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocumentManagerListener.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocumentManagerListener.cs index 734f63f16cb..819aaf85aa4 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocumentManagerListener.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/EditorDocumentManagerListener.cs @@ -9,10 +9,9 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.Razor.ProjectSystem; using Microsoft.VisualStudio.Threading; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/IEditorDocumentManager.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/IEditorDocumentManager.cs index 947cc07a73a..7ed4c18917f 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/IEditorDocumentManager.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/IEditorDocumentManager.cs @@ -3,7 +3,7 @@ using System; using System.Diagnostics.CodeAnalysis; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.VisualStudio.Razor.Documents; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/RazorCodeDocumentProvidingSnapshotChangeTrigger.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/RazorCodeDocumentProvidingSnapshotChangeTrigger.cs index 2ac21dc2567..587552c23e4 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/RazorCodeDocumentProvidingSnapshotChangeTrigger.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/RazorCodeDocumentProvidingSnapshotChangeTrigger.cs @@ -8,7 +8,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/VisualStudioEditorDocumentManager.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/VisualStudioEditorDocumentManager.cs index 611e826e989..d918e0eef4e 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/VisualStudioEditorDocumentManager.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Documents/VisualStudioEditorDocumentManager.cs @@ -8,8 +8,8 @@ using System.Linq; using System.Runtime.InteropServices; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.VisualStudio.Editor; using Microsoft.VisualStudio.Razor.Extensions; using Microsoft.VisualStudio.Shell; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/BackgroundDocumentGenerator.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/BackgroundDocumentGenerator.cs index 176ee3622eb..0cc22541ef6 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/BackgroundDocumentGenerator.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/BackgroundDocumentGenerator.cs @@ -9,11 +9,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.Razor.ProjectSystem; @@ -86,11 +85,11 @@ public void Dispose() protected Task WaitUntilCurrentBatchCompletesAsync() => _workQueue.WaitUntilCurrentBatchCompletesAsync(); - protected virtual async Task ProcessDocumentAsync(DocumentSnapshot document, CancellationToken cancellationToken) + protected virtual Task ProcessDocumentAsync(DocumentSnapshot document, CancellationToken cancellationToken) { - await document.GetGeneratedOutputAsync(cancellationToken).ConfigureAwait(false); - UpdateFileInfo(document); + + return Task.CompletedTask; } public virtual void EnqueueIfNecessary(DocumentKey documentKey) diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/DefaultDynamicDocumentContainer.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/DefaultDynamicDocumentContainer.cs index cbb138af890..b0d0a749fe8 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/DefaultDynamicDocumentContainer.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/DefaultDynamicDocumentContainer.cs @@ -3,12 +3,11 @@ using System; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; namespace Microsoft.VisualStudio.Razor.DynamicFiles; diff --git a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/GeneratedDocumentTextLoader.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/GeneratedDocumentTextLoader.cs similarity index 89% rename from src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/GeneratedDocumentTextLoader.cs rename to src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/GeneratedDocumentTextLoader.cs index 97816829675..538a73a30b2 100644 --- a/src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/ProjectSystem/GeneratedDocumentTextLoader.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/GeneratedDocumentTextLoader.cs @@ -6,9 +6,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; -namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; +namespace Microsoft.VisualStudio.Razor.DynamicFiles; internal class GeneratedDocumentTextLoader(IDocumentSnapshot document, string filePath) : TextLoader { diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/IRazorDynamicFileInfoProviderInternal.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/IRazorDynamicFileInfoProviderInternal.cs index 26021b48ce3..97a0794800e 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/IRazorDynamicFileInfoProviderInternal.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/IRazorDynamicFileInfoProviderInternal.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.VisualStudio.Razor.DynamicFiles; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorDocumentExcerptService.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorDocumentExcerptService.cs index 36be7575635..54abde1b7f4 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorDocumentExcerptService.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorDocumentExcerptService.cs @@ -6,11 +6,11 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Classification; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; namespace Microsoft.VisualStudio.Razor.DynamicFiles; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorDynamicFileInfoProvider.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorDynamicFileInfoProvider.cs index a974bc5d376..9218ec9878a 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorDynamicFileInfoProvider.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorDynamicFileInfoProvider.cs @@ -6,11 +6,11 @@ using System.Collections.Generic; using System.ComponentModel.Composition; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Text; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Threading; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; @@ -68,15 +68,8 @@ public void UpdateLSPFileInfo(Uri documentUri, IDynamicDocumentContainer documen { Debug.Assert(!_languageServerFeatureOptions.UseRazorCohostServer, "Should never be called in cohosting"); - if (documentUri is null) - { - throw new ArgumentNullException(nameof(documentUri)); - } - - if (documentContainer is null) - { - throw new ArgumentNullException(nameof(documentContainer)); - } + ArgHelper.ThrowIfNull(documentUri); + ArgHelper.ThrowIfNull(documentContainer); // This endpoint is only called in LSP cases when the file is open(ed) // We report diagnostics are supported to Roslyn in this case @@ -109,10 +102,7 @@ public void UpdateFileInfo(ProjectKey projectKey, IDynamicDocumentContainer docu { Debug.Assert(!_languageServerFeatureOptions.UseRazorCohostServer, "Should never be called in cohosting"); - if (documentContainer is null) - { - throw new ArgumentNullException(nameof(documentContainer)); - } + ArgHelper.ThrowIfNull(documentContainer); // This endpoint is called either when: // 1. LSP: File is closed @@ -123,8 +113,7 @@ public void UpdateFileInfo(ProjectKey projectKey, IDynamicDocumentContainer docu // There's a possible race condition here where we're processing an update // and the project is getting unloaded. So if we don't find an entry we can // just ignore it. - var projectId = TryFindProjectIdForProjectKey(projectKey); - if (projectId is null) + if (!TryFindProjectIdForProjectKey(projectKey, out var projectId)) { return; } @@ -147,45 +136,34 @@ public void PromoteBackgroundDocument(Uri documentUri, IRazorDocumentPropertiesS { Debug.Assert(!_languageServerFeatureOptions.UseRazorCohostServer, "Should never be called in cohosting"); - if (documentUri is null) - { - throw new ArgumentNullException(nameof(documentUri)); - } - - if (propertiesService is null) - { - throw new ArgumentNullException(nameof(propertiesService)); - } + ArgHelper.ThrowIfNull(documentUri); + ArgHelper.ThrowIfNull(propertiesService); var filePath = GetProjectSystemFilePath(documentUri); - foreach (var associatedKvp in GetAllKeysForPath(filePath)) + foreach (var (key, entry) in GetAllKeysForPath(filePath)) { - var associatedKey = associatedKvp.Key; - var associatedEntry = associatedKvp.Value; - - var projectId = associatedKey.ProjectId; - var projectKey = TryFindProjectKeyForProjectId(projectId); - if (projectKey is not ProjectKey key) + var projectId = key.ProjectId; + if (!TryFindProjectKeyForProjectId(projectId, out var projectKey)) { Debug.Fail("Could not find project key for project id. This should never happen."); continue; } - var filename = _filePathService.GetRazorCSharpFilePath(key, associatedKey.FilePath); + var filename = _filePathService.GetRazorCSharpFilePath(projectKey, key.FilePath); // To promote the background document, we just need to add the passed in properties service to // the dynamic file info. The properties service contains the client name and allows the C# // server to recognize the document. - var documentServiceProvider = associatedEntry.Current.DocumentServiceProvider; + var documentServiceProvider = entry.Current.DocumentServiceProvider; var excerptService = documentServiceProvider.GetService(); var mappingService = documentServiceProvider.GetService(); var emptyContainer = new PromotedDynamicDocumentContainer( - documentUri, propertiesService, excerptService, mappingService, associatedEntry.Current.TextLoader); + documentUri, propertiesService, excerptService, mappingService, entry.Current.TextLoader); - lock (associatedEntry.Lock) + lock (entry.Lock) { - associatedEntry.Current = new RazorDynamicFileInfo( - filename, associatedEntry.Current.SourceCodeKind, associatedEntry.Current.TextLoader, _factory.Create(emptyContainer)); + entry.Current = new RazorDynamicFileInfo( + filename, entry.Current.SourceCodeKind, entry.Current.TextLoader, _factory.Create(emptyContainer)); } } @@ -216,8 +194,7 @@ public void SuppressDocument(DocumentKey documentKey) // There's a possible race condition here where we're processing an update // and the project is getting unloaded. So if we don't find an entry we can // just ignore it. - var projectId = TryFindProjectIdForProjectKey(documentKey.ProjectKey); - if (projectId is null) + if (!TryFindProjectIdForProjectKey(documentKey.ProjectKey, out var projectId)) { return; } @@ -249,25 +226,17 @@ public void SuppressDocument(DocumentKey documentKey) return SpecializedTasks.Null(); } - if (projectFilePath is null) - { - throw new ArgumentNullException(nameof(projectFilePath)); - } - - if (filePath is null) - { - throw new ArgumentNullException(nameof(filePath)); - } + ArgHelper.ThrowIfNull(projectFilePath); + ArgHelper.ThrowIfNull(filePath); // We are activated for all Roslyn projects that have a .cshtml or .razor file, but they are not necessarily // C# projects that we expect. - var projectKey = TryFindProjectKeyForProjectId(projectId); - if (projectKey is not { } razorProjectKey) + if (!TryFindProjectKeyForProjectId(projectId, out var projectKey)) { return SpecializedTasks.Null(); } - _fallbackProjectManager.DynamicFileAdded(projectId, razorProjectKey, projectFilePath, filePath, cancellationToken); + _fallbackProjectManager.DynamicFileAdded(projectId, projectKey, projectFilePath, filePath, cancellationToken); var key = new Key(projectId, filePath); var entry = _entries.GetOrAdd(key, _createEmptyEntry); @@ -279,23 +248,15 @@ public Task RemoveDynamicFileInfoAsync(ProjectId projectId, string? projectFileP { Debug.Assert(!_languageServerFeatureOptions.UseRazorCohostServer, "Should never be called in cohosting"); - if (projectFilePath is null) - { - throw new ArgumentNullException(nameof(projectFilePath)); - } - - if (filePath is null) - { - throw new ArgumentNullException(nameof(filePath)); - } + ArgHelper.ThrowIfNull(projectFilePath); + ArgHelper.ThrowIfNull(filePath); - var projectKey = TryFindProjectKeyForProjectId(projectId); - if (projectKey is not { } razorProjectKey) + if (!TryFindProjectKeyForProjectId(projectId, out var projectKey)) { return Task.CompletedTask; } - _fallbackProjectManager.DynamicFileRemoved(projectId, razorProjectKey, projectFilePath, filePath, cancellationToken); + _fallbackProjectManager.DynamicFileRemoved(projectId, projectKey, projectFilePath, filePath, cancellationToken); // ---------------------------------------------------------- NOTE & CAUTION -------------------------------------------------------------- // @@ -329,8 +290,6 @@ public static string GetProjectSystemFilePath(Uri uri) return uri.AbsolutePath; } - public TestAccessor GetTestAccessor() => new(this); - private void ProjectManager_Changed(object? sender, ProjectChangeEventArgs args) { Debug.Assert(!_languageServerFeatureOptions.UseRazorCohostServer, "Should never be called in cohosting"); @@ -351,7 +310,7 @@ private void ProjectManager_Changed(object? sender, ProjectChangeEventArgs args) { var removedProject = args.Older.AssumeNotNull(); - if (TryFindProjectIdForProjectKey(removedProject.Key) is { } projectId) + if (TryFindProjectIdForProjectKey(removedProject.Key, out var projectId)) { foreach (var documentFilePath in removedProject.DocumentFilePaths) { @@ -365,46 +324,57 @@ private void ProjectManager_Changed(object? sender, ProjectChangeEventArgs args) } } - private ProjectId? TryFindProjectIdForProjectKey(ProjectKey key) + private bool TryFindProjectIdForProjectKey(ProjectKey key, [NotNullWhen(true)] out ProjectId? projectId) { var workspace = _workspaceProvider.GetWorkspace(); if (workspace.CurrentSolution.TryGetProject(key, out var project)) { - return project.Id; + projectId = project.Id; + return true; } - return null; + projectId = null; + return false; } - private ProjectKey? TryFindProjectKeyForProjectId(ProjectId projectId) + private bool TryFindProjectKeyForProjectId(ProjectId projectId, out ProjectKey projectKey) { var workspace = _workspaceProvider.GetWorkspace(); - return workspace.CurrentSolution.GetProject(projectId) is { Language: LanguageNames.CSharp } project - ? project.ToProjectKey() - : null; + if (workspace.CurrentSolution.GetProject(projectId) is { Language: LanguageNames.CSharp } project) + { + projectKey = project.ToProjectKey(); + return true; + } + + projectKey = default; + return false; } private RazorDynamicFileInfo CreateEmptyInfo(Key key) { - var projectKey = TryFindProjectKeyForProjectId(key.ProjectId).AssumeNotNull(); + Assumed.True(TryFindProjectKeyForProjectId(key.ProjectId, out var projectKey)); + var filename = _filePathService.GetRazorCSharpFilePath(projectKey, key.FilePath); var textLoader = new EmptyTextLoader(filename); + return new RazorDynamicFileInfo(filename, SourceCodeKind.Regular, textLoader, _factory.CreateEmpty()); } private RazorDynamicFileInfo CreateInfo(Key key, IDynamicDocumentContainer document) { - var projectKey = TryFindProjectKeyForProjectId(key.ProjectId).AssumeNotNull(); + Assumed.True(TryFindProjectKeyForProjectId(key.ProjectId, out var projectKey)); + var filename = _filePathService.GetRazorCSharpFilePath(projectKey, key.FilePath); var textLoader = document.GetTextLoader(filename); + return new RazorDynamicFileInfo(filename, SourceCodeKind.Regular, textLoader, _factory.Create(document)); } // Using a separate handle to the 'current' file info so that can allow Roslyn to send // us the add/remove operations, while we process the update operations. - private class Entry(RazorDynamicFileInfo current) + private sealed class Entry(RazorDynamicFileInfo current) { public RazorDynamicFileInfo Current { get; set; } = current; @@ -425,16 +395,11 @@ private readonly struct Key(ProjectId projectId, string filePath) : IEquatable ProjectId.Equals(other.ProjectId) && + FilePathComparer.Instance.Equals(FilePath, other.FilePath); public override bool Equals(object? obj) - { - return obj is Key other && Equals(other); - } + => obj is Key other && Equals(other); public override int GetHashCode() { @@ -447,14 +412,16 @@ public override int GetHashCode() private class EmptyTextLoader(string filePath) : TextLoader { + // Providing an encoding here is important for debuggability. Without this edit-and-continue + // won't work for projects with Razor files. + private static readonly SourceText s_emptyText = SourceText.From("", Encoding.UTF8); + private readonly string _filePath = filePath; - private readonly VersionStamp _version = VersionStamp.Default; public override Task LoadTextAndVersionAsync(LoadTextOptions options, CancellationToken cancellationToken) { - // Providing an encoding here is important for debuggability. Without this edit-and-continue - // won't work for projects with Razor files. - return Task.FromResult(TextAndVersion.Create(SourceText.From("", Encoding.UTF8), _version, _filePath)); + var version = VersionStamp.Default; // Version will never change so this can be reused. + return Task.FromResult(TextAndVersion.Create(s_emptyText, version, _filePath)); } } @@ -489,6 +456,8 @@ public void SetSupportsDiagnostics(bool value) public IRazorMappingService? GetMappingService() => _mappingService; } + public TestAccessor GetTestAccessor() => new(this); + public class TestAccessor(RazorDynamicFileInfoProvider provider) { private readonly RazorDynamicFileInfoProvider _provider = provider; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorMappingService.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorMappingService.cs index 5b529ea6fd5..da5c18579d7 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorMappingService.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/DynamicFiles/RazorMappingService.cs @@ -10,16 +10,15 @@ using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.DynamicFiles; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocument.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocument.cs index bc28bccb4c7..117e2bb1399 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocument.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocument.cs @@ -2,8 +2,8 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.Text; namespace Microsoft.VisualStudio.Razor.LanguageClient; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentFactory.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentFactory.cs index 1e7ff91d249..b9c3afe72ba 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentFactory.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentFactory.cs @@ -7,11 +7,10 @@ using System.ComponentModel.Composition; using System.Diagnostics.CodeAnalysis; using System.Linq; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.Client; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentManager.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentManager.cs index 9ad2b78ef77..ed15522ad76 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentManager.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentManager.cs @@ -5,8 +5,8 @@ using System.ComponentModel.Composition; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentSnapshot.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentSnapshot.cs index 2dbff3dceb6..a6b8c31d885 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentSnapshot.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/CSharpVirtualDocumentSnapshot.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; using Microsoft.VisualStudio.Text; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostCodeActionsEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostCodeActionsEndpoint.cs index 75ac8add9c0..3ed74c1aba4 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostCodeActionsEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostCodeActionsEndpoint.cs @@ -8,7 +8,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; @@ -17,9 +16,8 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; using Microsoft.CodeAnalysis.Razor.Remote; -using Microsoft.CodeAnalysis.Razor.Workspaces.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -105,12 +103,13 @@ private async Task GetCSharpCodeActionsAsync(TextDo return []; } - var csharpRequest = JsonHelpers.ToRoslynLSP(request).AssumeNotNull(); + // We have to use our own type, which doesn't inherit from CodeActionParams, so we have to use Json to convert + var csharpRequest = JsonHelpers.Convert(request).AssumeNotNull(); using var _ = _telemetryReporter.TrackLspRequest(Methods.TextDocumentCodeActionName, "Razor.ExternalAccess", TelemetryThresholds.CodeActionSubLSPTelemetryThreshold, correlationId); var csharpCodeActions = await CodeActions.GetCodeActionsAsync(generatedDocument, csharpRequest, _clientCapabilitiesService.ClientCapabilities.SupportsVisualStudioExtensions, cancellationToken).ConfigureAwait(false); - return JsonHelpers.ToVsLSP(csharpCodeActions).AssumeNotNull(); + return JsonHelpers.ConvertAll(csharpCodeActions); } private async Task GetHtmlCodeActionsAsync(TextDocument razorDocument, VSCodeActionParams request, Guid correlationId, CancellationToken cancellationToken) @@ -136,7 +135,12 @@ private async Task GetHtmlCodeActionsAsync(TextDocu request, cancellationToken).ConfigureAwait(false); - return result?.Response ?? []; + if (result?.Response is null) + { + return []; + } + + return result.Response; } finally { diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostCodeActionsResolveEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostCodeActionsResolveEndpoint.cs index fcade32dca5..e5e00a4d398 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostCodeActionsResolveEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostCodeActionsResolveEndpoint.cs @@ -16,7 +16,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Settings; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -109,12 +108,8 @@ private async Task ResolveCSharpCodeActionAsync(TextDocument razorDo } var resourceOptions = _clientCapabilitiesService.ClientCapabilities.Workspace?.WorkspaceEdit?.ResourceOperations ?? []; - var roslynCodeAction = JsonHelpers.ToRoslynLSP(codeAction).AssumeNotNull(); - var roslynResourceOptions = JsonHelpers.ToRoslynLSP(resourceOptions).AssumeNotNull(); - var resolvedCodeAction = await CodeActions.ResolveCodeActionAsync(generatedDocument, roslynCodeAction, roslynResourceOptions, cancellationToken).ConfigureAwait(false); - - return JsonHelpers.ToVsLSP(resolvedCodeAction).AssumeNotNull(); + return await CodeActions.ResolveCodeActionAsync(generatedDocument, codeAction, resourceOptions, cancellationToken).ConfigureAwait(false); } finally { diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostColorPresentationEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostColorPresentationEndpoint.cs index df265b1bdef..1344a047d60 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostColorPresentationEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostColorPresentationEndpoint.cs @@ -8,9 +8,7 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.CodeAnalysis.Razor.Protocol.ColorPresentation; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentColorEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentColorEndpoint.cs index fe9e488157a..6206fdb273e 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentColorEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentColorEndpoint.cs @@ -9,7 +9,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentCompletionEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentCompletionEndpoint.cs index d55f74dd33c..ebbd4f7e869 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentCompletionEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentCompletionEndpoint.cs @@ -18,14 +18,9 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Settings; using Microsoft.VisualStudio.Razor.Snippets; -using Response = Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; -using RoslynCompletionContext = Roslyn.LanguageServer.Protocol.CompletionContext; -using RoslynCompletionParams = Roslyn.LanguageServer.Protocol.CompletionParams; -using RoslynLspExtensions = Roslyn.LanguageServer.Protocol.RoslynLspExtensions; -using RoslynPosition = Roslyn.LanguageServer.Protocol.Position; +using Response = Microsoft.CodeAnalysis.Razor.Remote.RemoteResponse; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -44,7 +39,7 @@ internal sealed class CohostDocumentCompletionEndpoint( LanguageServerFeatureOptions languageServerFeatureOptions, LSPRequestInvoker requestInvoker, ILoggerFactory loggerFactory) - : AbstractRazorCohostDocumentRequestHandler, IDynamicRegistrationProvider + : AbstractRazorCohostDocumentRequestHandler, IDynamicRegistrationProvider { private readonly IRemoteServiceInvoker _remoteServiceInvoker = remoteServiceInvoker; private readonly IClientSettingsManager _clientSettingsManager = clientSettingsManager; @@ -77,15 +72,16 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie return []; } - protected override RazorTextDocumentIdentifier? GetRazorTextDocumentIdentifier(RoslynCompletionParams request) - => request.TextDocument is null ? null : RoslynLspExtensions.ToRazorTextDocumentIdentifier(request.TextDocument); + protected override RazorTextDocumentIdentifier? GetRazorTextDocumentIdentifier(CompletionParams request) + => request.TextDocument?.ToRazorTextDocumentIdentifier(); - protected override Task HandleRequestAsync(RoslynCompletionParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) + protected override Task HandleRequestAsync(CompletionParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) => HandleRequestAsync(request, context.TextDocument.AssumeNotNull(), cancellationToken); - private async Task HandleRequestAsync(RoslynCompletionParams request, TextDocument razorDocument, CancellationToken cancellationToken) + private async Task HandleRequestAsync(CompletionParams request, TextDocument razorDocument, CancellationToken cancellationToken) { - if (request.Context is null || JsonHelpers.ToVsLSP(request.Context) is not VSInternalCompletionContext completionContext) + if (request.Context is null || + JsonHelpers.Convert(request.Context) is not { } completionContext) { _logger.LogError("Completion request context is null"); return null; @@ -108,7 +104,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie solutionInfo, razorDocument.Id, completionContext, - JsonHelpers.ToVsLSP(request.Position).AssumeNotNull(), + request.Position, cancellationToken), cancellationToken).ConfigureAwait(false) is not { } completionPositionInfo) { @@ -130,7 +126,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie // First of all, see if we in HTML and get HTML completions before calling OOP to get Razor completions. // Razor completion provider needs a set of existing HTML item labels. - VSInternalCompletionList? htmlCompletionList = null; + RazorVSInternalCompletionList? htmlCompletionList = null; var razorCompletionOptions = new RazorCompletionOptions( SnippetsSupported: true, // always true in non-legacy Razor, always false in legacy Razor AutoInsertAttributeQuotes: clientSettings.AdvancedSettings.AutoInsertAttributeQuotes, @@ -173,7 +169,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie return null; } - VSInternalCompletionList? combinedCompletionList = null; + RazorVSInternalCompletionList? combinedCompletionList = null; if (data.Result is { } oopCompletionList) { combinedCompletionList = htmlCompletionList is { Items: [_, ..] } @@ -199,8 +195,8 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie return combinedCompletionList; } - private async Task GetHtmlCompletionListAsync( - RoslynCompletionParams request, + private async Task GetHtmlCompletionListAsync( + CompletionParams request, TextDocument razorDocument, RazorCompletionOptions razorCompletionOptions, CancellationToken cancellationToken) @@ -211,11 +207,11 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie return null; } - request.TextDocument = RoslynLspExtensions.WithUri(request.TextDocument, htmlDocument.Uri); + request.TextDocument = request.TextDocument.WithUri(htmlDocument.Uri); _logger.LogDebug($"Resolving auto-insertion edit for {htmlDocument.Uri}"); - var result = await _requestInvoker.ReinvokeRequestOnServerAsync( + var result = await _requestInvoker.ReinvokeRequestOnServerAsync( htmlDocument.Buffer, Methods.TextDocumentCompletionName, RazorLSPConstants.HtmlLanguageServerName, @@ -227,13 +223,13 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie return rewrittenResponse; } - private VSInternalCompletionList? AddSnippets( - VSInternalCompletionList? completionList, + private RazorVSInternalCompletionList? AddSnippets( + RazorVSInternalCompletionList? completionList, RazorLanguageKind languageKind, VSInternalCompletionInvokeKind invokeKind, string? triggerCharacter) { - using var builder = new PooledArrayBuilder(); + using var builder = new PooledArrayBuilder(); _snippetCompletionItemProvider.AddSnippetCompletions( languageKind, invokeKind, @@ -255,7 +251,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie // Create or update final completion list if (completionList is null) { - completionList = new VSInternalCompletionList { IsIncomplete = true, Items = builder.ToArray() }; + completionList = new RazorVSInternalCompletionList { IsIncomplete = true, Items = builder.ToArray() }; } else { @@ -269,8 +265,8 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie internal readonly struct TestAccessor(CohostDocumentCompletionEndpoint instance) { - public Task HandleRequestAsync( - RoslynCompletionParams request, + public Task HandleRequestAsync( + CompletionParams request, TextDocument razorDocument, CancellationToken cancellationToken) => instance.HandleRequestAsync(request, razorDocument, cancellationToken); diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentFormattingEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentFormattingEndpoint.cs index 6d37ea1f396..6545cddfe98 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentFormattingEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentFormattingEndpoint.cs @@ -15,7 +15,6 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Settings; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentHighlightEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentHighlightEndpoint.cs index 8a2115a5344..6039c1284ab 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentHighlightEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentHighlightEndpoint.cs @@ -13,7 +13,6 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -68,7 +67,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie // If we got a response back, then either Razor or C# wants to do something with this, so we're good to go if (csharpResult.Result is { } highlights) { - return highlights.Select(RemoteDocumentHighlight.ToVsDocumentHighlight).ToArray(); + return highlights.Select(RemoteDocumentHighlight.ToLspDocumentHighlight).ToArray(); } if (csharpResult.StopHandling) diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentPullDiagnosticsEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentPullDiagnosticsEndpoint.cs index 74977ea2f0e..050a3465aff 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentPullDiagnosticsEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentPullDiagnosticsEndpoint.cs @@ -13,15 +13,11 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Logging; -using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Extensions; using Microsoft.VisualStudio.Razor.Settings; using ExternalHandlers = Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost.Handlers; -using LspDiagnostic = Microsoft.VisualStudio.LanguageServer.Protocol.Diagnostic; -using RoslynDiagnostic = Roslyn.LanguageServer.Protocol.Diagnostic; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -163,15 +159,8 @@ await razorDocument.Project.TryGetSourceGeneratedDocumentFromHintNameAsync(hintN } _logger.LogDebug($"Getting C# diagnostics for {generatedDocument.FilePath}"); - var csharpDiagnostics = await ExternalHandlers.Diagnostics.GetDocumentDiagnosticsAsync(generatedDocument, supportsVisualStudioExtensions: true, cancellationToken).ConfigureAwait(false); - - // This is, to say the least, not ideal. In future we're going to normalize on to Roslyn LSP types, and this can go. - if (JsonHelpers.ToVsLSP>(csharpDiagnostics) is not { } convertedDiagnostics) - { - return []; - } - - return convertedDiagnostics; + var diagnostics = await ExternalHandlers.Diagnostics.GetDocumentDiagnosticsAsync(generatedDocument, supportsVisualStudioExtensions: true, cancellationToken).ConfigureAwait(false); + return diagnostics.ToArray(); } private async Task GetHtmlDiagnosticsAsync(TextDocument razorDocument, CancellationToken cancellationToken) diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentSpellCheckEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentSpellCheckEndpoint.cs index f260cd2ef5e..c90082e9ce3 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentSpellCheckEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentSpellCheckEndpoint.cs @@ -10,7 +10,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Remote; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentSymbolEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentSymbolEndpoint.cs index cade056caa7..98de7521054 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentSymbolEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentSymbolEndpoint.cs @@ -9,7 +9,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Remote; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostEndpointRegistration.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostEndpointRegistration.cs index 575e3cc83e1..1620af0df6a 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostEndpointRegistration.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostEndpointRegistration.cs @@ -4,7 +4,6 @@ using System.Collections.Immutable; using System.Composition; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostFindAllReferencesEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostFindAllReferencesEndpoint.cs index 0375f21dcba..44c3800f945 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostFindAllReferencesEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostFindAllReferencesEndpoint.cs @@ -9,9 +9,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Remote; -using Roslyn.LanguageServer.Protocol; -using LspLocation = Roslyn.LanguageServer.Protocol.Location; -using VSLSP = Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -32,14 +29,14 @@ internal sealed class CohostFindAllReferencesEndpoint( protected override bool RequiresLSPSolution => true; - public ImmutableArray GetRegistrations(VSLSP.VSInternalClientCapabilities clientCapabilities, RazorCohostRequestContext requestContext) + public ImmutableArray GetRegistrations(VSInternalClientCapabilities clientCapabilities, RazorCohostRequestContext requestContext) { if (clientCapabilities.TextDocument?.References?.DynamicRegistration == true) { - return [new VSLSP.Registration + return [new Registration { Method = Methods.TextDocumentReferencesName, - RegisterOptions = new VSLSP.ReferenceRegistrationOptions() + RegisterOptions = new ReferenceRegistrationOptions() }]; } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostFoldingRangeEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostFoldingRangeEndpoint.cs index 5313557ec1d..117c7761913 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostFoldingRangeEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostFoldingRangeEndpoint.cs @@ -14,7 +14,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol.Folding; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostGoToDefinitionEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostGoToDefinitionEndpoint.cs index 73f89001b82..b1144c7e8b6 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostGoToDefinitionEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostGoToDefinitionEndpoint.cs @@ -13,12 +13,6 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using static Roslyn.LanguageServer.Protocol.RoslynLspExtensions; -using RoslynDocumentLink = Roslyn.LanguageServer.Protocol.DocumentLink; -using RoslynLocation = Roslyn.LanguageServer.Protocol.Location; -using RoslynLspFactory = Roslyn.LanguageServer.Protocol.RoslynLspFactory; -using VsLspLocation = Microsoft.VisualStudio.LanguageServer.Protocol.Location; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -34,7 +28,7 @@ internal sealed class CohostGoToDefinitionEndpoint( IHtmlDocumentSynchronizer htmlDocumentSynchronizer, LSPRequestInvoker requestInvoker, IFilePathService filePathService) - : AbstractRazorCohostDocumentRequestHandler?>, IDynamicRegistrationProvider + : AbstractRazorCohostDocumentRequestHandler?>, IDynamicRegistrationProvider { private readonly IRemoteServiceInvoker _remoteServiceInvoker = remoteServiceInvoker; private readonly IHtmlDocumentSynchronizer _htmlDocumentSynchronizer = htmlDocumentSynchronizer; @@ -62,25 +56,25 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie protected override RazorTextDocumentIdentifier? GetRazorTextDocumentIdentifier(TextDocumentPositionParams request) => request.TextDocument.ToRazorTextDocumentIdentifier(); - protected override Task?> HandleRequestAsync(TextDocumentPositionParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) + protected override Task?> HandleRequestAsync(TextDocumentPositionParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) => HandleRequestAsync( request, context.TextDocument.AssumeNotNull(), cancellationToken); - private async Task?> HandleRequestAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) + private async Task?> HandleRequestAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) { - var position = RoslynLspFactory.CreatePosition(request.Position.ToLinePosition()); + var position = LspFactory.CreatePosition(request.Position.ToLinePosition()); var response = await _remoteServiceInvoker - .TryInvokeAsync>( + .TryInvokeAsync>( razorDocument.Project.Solution, (service, solutionInfo, cancellationToken) => service.GetDefinitionAsync(solutionInfo, razorDocument.Id, position, cancellationToken), cancellationToken) .ConfigureAwait(false); - if (response.Result is RoslynLocation[] locations) + if (response.Result is LspLocation[] locations) { return locations; } @@ -93,7 +87,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie return await GetHtmlDefinitionsAsync(request, razorDocument, cancellationToken).ConfigureAwait(false); } - private async Task?> GetHtmlDefinitionsAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) + private async Task?> GetHtmlDefinitionsAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) { var htmlDocument = await _htmlDocumentSynchronizer.TryGetSynchronizedHtmlDocumentAsync(razorDocument, cancellationToken).ConfigureAwait(false); if (htmlDocument is null) @@ -104,7 +98,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie request.TextDocument.Uri = htmlDocument.Uri; var result = await _requestInvoker - .ReinvokeRequestOnServerAsync?>( + .ReinvokeRequestOnServerAsync?>( htmlDocument.Buffer, Methods.TextDocumentDefinitionName, RazorLSPConstants.HtmlLanguageServerName, @@ -119,21 +113,21 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie if (response.TryGetFirst(out var singleLocation)) { - return RoslynLspFactory.CreateLocation(RemapVirtualHtmlUri(singleLocation.Uri), singleLocation.Range.ToLinePositionSpan()); + return LspFactory.CreateLocation(RemapVirtualHtmlUri(singleLocation.Uri), singleLocation.Range.ToLinePositionSpan()); } else if (response.TryGetSecond(out var multipleLocations)) { - return Array.ConvertAll(multipleLocations, l => RoslynLspFactory.CreateLocation(RemapVirtualHtmlUri(l.Uri), l.Range.ToLinePositionSpan())); + return Array.ConvertAll(multipleLocations, l => LspFactory.CreateLocation(RemapVirtualHtmlUri(l.Uri), l.Range.ToLinePositionSpan())); } else if (response.TryGetThird(out var documentLinks)) { - using var builder = new PooledArrayBuilder(capacity: documentLinks.Length); + using var builder = new PooledArrayBuilder(capacity: documentLinks.Length); foreach (var documentLink in documentLinks) { if (documentLink.Target is Uri target) { - builder.Add(RoslynLspFactory.CreateDocumentLink(RemapVirtualHtmlUri(target), documentLink.Range.ToLinePositionSpan())); + builder.Add(LspFactory.CreateDocumentLink(RemapVirtualHtmlUri(target), documentLink.Range.ToLinePositionSpan())); } } @@ -157,7 +151,7 @@ private Uri RemapVirtualHtmlUri(Uri uri) internal readonly struct TestAccessor(CohostGoToDefinitionEndpoint instance) { - public Task?> HandleRequestAsync( + public Task?> HandleRequestAsync( TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) => instance.HandleRequestAsync(request, razorDocument, cancellationToken); } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostGoToImplementationEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostGoToImplementationEndpoint.cs index 9c44c22785d..d63532a402a 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostGoToImplementationEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostGoToImplementationEndpoint.cs @@ -11,10 +11,6 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using RoslynLspFactory = Roslyn.LanguageServer.Protocol.RoslynLspFactory; -using RoslynLspLocation = Roslyn.LanguageServer.Protocol.Location; -using VsLspLocation = Microsoft.VisualStudio.LanguageServer.Protocol.Location; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -30,7 +26,7 @@ internal sealed class CohostGoToImplementationEndpoint( IHtmlDocumentSynchronizer htmlDocumentSynchronizer, LSPRequestInvoker requestInvoker, IFilePathService filePathService) - : AbstractRazorCohostDocumentRequestHandler?>, IDynamicRegistrationProvider + : AbstractRazorCohostDocumentRequestHandler?>, IDynamicRegistrationProvider { private readonly IRemoteServiceInvoker _remoteServiceInvoker = remoteServiceInvoker; private readonly IHtmlDocumentSynchronizer _htmlDocumentSynchronizer = htmlDocumentSynchronizer; @@ -58,25 +54,25 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie protected override RazorTextDocumentIdentifier? GetRazorTextDocumentIdentifier(TextDocumentPositionParams request) => request.TextDocument.ToRazorTextDocumentIdentifier(); - protected override Task?> HandleRequestAsync(TextDocumentPositionParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) + protected override Task?> HandleRequestAsync(TextDocumentPositionParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) => HandleRequestAsync( request, context.TextDocument.AssumeNotNull(), cancellationToken); - private async Task?> HandleRequestAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) + private async Task?> HandleRequestAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) { - var position = RoslynLspFactory.CreatePosition(request.Position.ToLinePosition()); + var position = LspFactory.CreatePosition(request.Position.ToLinePosition()); var response = await _remoteServiceInvoker - .TryInvokeAsync>( + .TryInvokeAsync>( razorDocument.Project.Solution, (service, solutionInfo, cancellationToken) => service.GetImplementationAsync(solutionInfo, razorDocument.Id, position, cancellationToken), cancellationToken) .ConfigureAwait(false); - if (response.Result is RoslynLspLocation[] locations) + if (response.Result is LspLocation[] locations) { return locations; } @@ -89,7 +85,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie return await GetHtmlImplementationsAsync(request, razorDocument, cancellationToken).ConfigureAwait(false); } - private async Task?> GetHtmlImplementationsAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) + private async Task?> GetHtmlImplementationsAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) { var htmlDocument = await _htmlDocumentSynchronizer.TryGetSynchronizedHtmlDocumentAsync(razorDocument, cancellationToken).ConfigureAwait(false); if (htmlDocument is null) @@ -100,7 +96,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie request.TextDocument = request.TextDocument.WithUri(htmlDocument.Uri); var result = await _requestInvoker - .ReinvokeRequestOnServerAsync?>( + .ReinvokeRequestOnServerAsync?>( htmlDocument.Buffer, Methods.TextDocumentImplementationName, RazorLSPConstants.HtmlLanguageServerName, @@ -135,9 +131,10 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie return null; } - private void RemapVirtualHtmlUri(VsLspLocation location) + private void RemapVirtualHtmlUri(LspLocation? location) { - if (_filePathService.IsVirtualHtmlFile(location.Uri)) + if (location is not null && + _filePathService.IsVirtualHtmlFile(location.Uri)) { location.Uri = _filePathService.GetRazorDocumentUri(location.Uri); } @@ -147,7 +144,7 @@ private void RemapVirtualHtmlUri(VsLspLocation location) internal readonly struct TestAccessor(CohostGoToImplementationEndpoint instance) { - public Task?> HandleRequestAsync( + public Task?> HandleRequestAsync( TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) => instance.HandleRequestAsync(request, razorDocument, cancellationToken); } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostHoverEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostHoverEndpoint.cs index ceac27d04cf..4d4deeda834 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostHoverEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostHoverEndpoint.cs @@ -10,10 +10,6 @@ using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using RoslynHover = Roslyn.LanguageServer.Protocol.Hover; -using RoslynLspFactory = Roslyn.LanguageServer.Protocol.RoslynLspFactory; -using VsHover = Microsoft.VisualStudio.LanguageServer.Protocol.Hover; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -28,7 +24,7 @@ internal sealed class CohostHoverEndpoint( IRemoteServiceInvoker remoteServiceInvoker, IHtmlDocumentSynchronizer htmlDocumentSynchronizer, LSPRequestInvoker requestInvoker) - : AbstractRazorCohostDocumentRequestHandler?>, IDynamicRegistrationProvider + : AbstractRazorCohostDocumentRequestHandler, IDynamicRegistrationProvider { private readonly IRemoteServiceInvoker _remoteServiceInvoker = remoteServiceInvoker; private readonly IHtmlDocumentSynchronizer _htmlDocumentSynchronizer = htmlDocumentSynchronizer; @@ -55,25 +51,25 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie protected override RazorTextDocumentIdentifier? GetRazorTextDocumentIdentifier(TextDocumentPositionParams request) => request.TextDocument.ToRazorTextDocumentIdentifier(); - protected override Task?> HandleRequestAsync(TextDocumentPositionParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) + protected override Task HandleRequestAsync(TextDocumentPositionParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) => HandleRequestAsync( request, context.TextDocument.AssumeNotNull(), cancellationToken); - private async Task?> HandleRequestAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) + private async Task HandleRequestAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) { - var position = RoslynLspFactory.CreatePosition(request.Position.ToLinePosition()); + var position = LspFactory.CreatePosition(request.Position.ToLinePosition()); var response = await _remoteServiceInvoker - .TryInvokeAsync>( + .TryInvokeAsync>( razorDocument.Project.Solution, (service, solutionInfo, cancellationToken) => service.GetHoverAsync(solutionInfo, razorDocument.Id, position, cancellationToken), cancellationToken) .ConfigureAwait(false); - if (response.Result is RoslynHover hover) + if (response.Result is LspHover hover) { return hover; } @@ -86,7 +82,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie return await GetHtmlHoverAsync(request, razorDocument, cancellationToken).ConfigureAwait(false); } - private async Task GetHtmlHoverAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) + private async Task GetHtmlHoverAsync(TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) { var htmlDocument = await _htmlDocumentSynchronizer.TryGetSynchronizedHtmlDocumentAsync(razorDocument, cancellationToken).ConfigureAwait(false); if (htmlDocument is null) @@ -97,7 +93,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie request.TextDocument = request.TextDocument.WithUri(htmlDocument.Uri); var result = await _requestInvoker - .ReinvokeRequestOnServerAsync( + .ReinvokeRequestOnServerAsync( htmlDocument.Buffer, Methods.TextDocumentHoverName, RazorLSPConstants.HtmlLanguageServerName, @@ -112,7 +108,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie internal readonly struct TestAccessor(CohostHoverEndpoint instance) { - public Task?> HandleRequestAsync( + public Task HandleRequestAsync( TextDocumentPositionParams request, TextDocument razorDocument, CancellationToken cancellationToken) => instance.HandleRequestAsync(request, razorDocument, cancellationToken); } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlayHintEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlayHintEndpoint.cs index ad6b4941ba1..361c3efd4a5 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlayHintEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlayHintEndpoint.cs @@ -9,8 +9,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Remote; -using Roslyn.LanguageServer.Protocol; -using VSLSP = Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -30,14 +28,14 @@ internal class CohostInlayHintEndpoint(IRemoteServiceInvoker remoteServiceInvoke protected override bool RequiresLSPSolution => true; - public ImmutableArray GetRegistrations(VSLSP.VSInternalClientCapabilities clientCapabilities, RazorCohostRequestContext requestContext) + public ImmutableArray GetRegistrations(VSInternalClientCapabilities clientCapabilities, RazorCohostRequestContext requestContext) { if (clientCapabilities.TextDocument?.InlayHint?.DynamicRegistration == true) { - return [new VSLSP.Registration + return [new Registration { Method = Methods.TextDocumentInlayHintName, - RegisterOptions = new VSLSP.InlayHintRegistrationOptions() + RegisterOptions = new InlayHintRegistrationOptions() }]; } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlayHintResolveEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlayHintResolveEndpoint.cs index ec464f8e448..652efd5a2a1 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlayHintResolveEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlayHintResolveEndpoint.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol.InlayHints; using Microsoft.CodeAnalysis.Razor.Remote; -using Roslyn.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlineCompletionEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlineCompletionEndpoint.cs index 4edd6cd42ac..61dcf7e2419 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlineCompletionEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostInlineCompletionEndpoint.cs @@ -14,8 +14,6 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.Razor.Settings; -using Roslyn.LanguageServer.Protocol; -using VSLSP = Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -38,14 +36,14 @@ internal sealed class CohostInlineCompletionEndpoint( protected override bool RequiresLSPSolution => true; - public ImmutableArray GetRegistrations(VSLSP.VSInternalClientCapabilities clientCapabilities, RazorCohostRequestContext requestContext) + public ImmutableArray GetRegistrations(VSInternalClientCapabilities clientCapabilities, RazorCohostRequestContext requestContext) { if (clientCapabilities.TextDocument?.CodeAction?.DynamicRegistration == true) { - return [new VSLSP.Registration + return [new Registration { Method = VSInternalMethods.TextDocumentInlineCompletionName, - RegisterOptions = new VSLSP.VSInternalInlineCompletionRegistrationOptions().EnableInlineCompletion() + RegisterOptions = new VSInternalInlineCompletionRegistrationOptions().EnableInlineCompletion() }]; } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostLinkedEditingRangeEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostLinkedEditingRangeEndpoint.cs index a3789894444..813a052ab2c 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostLinkedEditingRangeEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostLinkedEditingRangeEndpoint.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnAutoInsertEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnAutoInsertEndpoint.cs index dc62194024b..14ae75cbb47 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnAutoInsertEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnAutoInsertEndpoint.cs @@ -17,7 +17,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol.AutoInsert; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.LanguageClient.Cohost; using Microsoft.VisualStudio.Razor.Settings; using RazorLSPConstants = Microsoft.VisualStudio.Razor.LanguageClient.RazorLSPConstants; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnTypeFormattingEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnTypeFormattingEndpoint.cs index f189d74faf2..6ccf86d1721 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnTypeFormattingEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostOnTypeFormattingEndpoint.cs @@ -16,7 +16,6 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Settings; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostRangeFormattingEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostRangeFormattingEndpoint.cs index f1fbbd60f77..4145c9ecb3b 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostRangeFormattingEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostRangeFormattingEndpoint.cs @@ -15,7 +15,6 @@ using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Settings; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -67,7 +66,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie private async Task HandleRequestAsync(DocumentRangeFormattingParams request, TextDocument razorDocument, CancellationToken cancellationToken) { - if (request.Options.OtherOptions is not null && request.Options.OtherOptions.TryGetValue("fromPaste", out var fromPasteObj) && fromPasteObj is bool fromPaste) + if (request.Options.OtherOptions is not null && request.Options.OtherOptions.TryGetValue("fromPaste", out var fromPasteObj) && fromPasteObj.TryGetFirst(out var fromPaste)) { if (fromPaste && !_clientSettingsManager.GetClientSettings().AdvancedSettings.FormatOnPaste) { diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostRenameEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostRenameEndpoint.cs index 12e0c947ccc..928c23d0d22 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostRenameEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostRenameEndpoint.cs @@ -10,7 +10,6 @@ using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostSemanticTokensRangeEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostSemanticTokensRangeEndpoint.cs index 29f89c3881a..f4a4cb8564b 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostSemanticTokensRangeEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostSemanticTokensRangeEndpoint.cs @@ -9,14 +9,12 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Razor.SemanticTokens; -using Microsoft.CodeAnalysis.Razor.Workspaces.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Settings; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostSignatureHelpEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostSignatureHelpEndpoint.cs index 37506521e1b..b180ee5cb13 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostSignatureHelpEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostSignatureHelpEndpoint.cs @@ -3,7 +3,6 @@ using System.Collections.Immutable; using System.Composition; -using System.Linq; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; @@ -11,15 +10,10 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Remote; -using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.LanguageClient; using Microsoft.VisualStudio.Razor.LanguageClient.Cohost; using Microsoft.VisualStudio.Razor.Settings; -using static Roslyn.LanguageServer.Protocol.RoslynLspExtensions; -using RoslynLspFactory = Roslyn.LanguageServer.Protocol.RoslynLspFactory; -using RoslynSignatureHelp = Roslyn.LanguageServer.Protocol.SignatureHelp; namespace Microsoft.VisualStudio.LanguageServices.Razor.LanguageClient.Cohost; @@ -35,7 +29,7 @@ internal class CohostSignatureHelpEndpoint( IClientSettingsManager clientSettingsManager, IHtmlDocumentSynchronizer htmlDocumentSynchronizer, LSPRequestInvoker requestInvoker) - : AbstractRazorCohostDocumentRequestHandler?>, IDynamicRegistrationProvider + : AbstractRazorCohostDocumentRequestHandler, IDynamicRegistrationProvider { private readonly IRemoteServiceInvoker _remoteServiceInvoker = remoteServiceInvoker; private readonly IClientSettingsManager _clientSettingsManager = clientSettingsManager; @@ -67,10 +61,10 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie // NOTE: The use of SumType here is a little odd, but it allows us to return Roslyn LSP types from the Roslyn call, and VS LSP types from the Html // call. It works because both sets of types are attributed the right way, so the Json ends up looking the same and the client doesn't // care. Ideally eventually we will be able to move all of this to just Roslyn LSP types, but we might have to wait for Web Tools - protected override Task?> HandleRequestAsync(SignatureHelpParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) + protected override Task HandleRequestAsync(SignatureHelpParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) => HandleRequestAsync(request, context.TextDocument.AssumeNotNull(), cancellationToken); - private async Task?> HandleRequestAsync(SignatureHelpParams request, TextDocument razorDocument, CancellationToken cancellationToken) + private async Task HandleRequestAsync(SignatureHelpParams request, TextDocument razorDocument, CancellationToken cancellationToken) { // Return nothing if "Parameter Information" option is disabled unless signature help is invoked explicitly via command as opposed to typing or content change if (request.Context is { TriggerKind: not SignatureHelpTriggerKind.Invoked } && @@ -79,10 +73,10 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie return null; } - var data = await _remoteServiceInvoker.TryInvokeAsync( + var data = await _remoteServiceInvoker.TryInvokeAsync( razorDocument.Project.Solution, (service, solutionInfo, cancellationToken) => - service.GetSignatureHelpAsync(solutionInfo, razorDocument.Id, RoslynLspFactory.CreatePosition(request.Position.ToLinePosition()), cancellationToken), + service.GetSignatureHelpAsync(solutionInfo, razorDocument.Id, request.Position, cancellationToken), cancellationToken) .ConfigureAwait(false); @@ -116,28 +110,7 @@ public ImmutableArray GetRegistrations(VSInternalClientCapabilitie internal readonly struct TestAccessor(CohostSignatureHelpEndpoint instance) { - internal async Task HandleRequestAndGetLabelsAsync(SignatureHelpParams request, TextDocument document, CancellationToken cancellationToken) - { - // Our tests don't have IVT to Roslyn.LanguageServer.Protocol (yet!?) so we can't expose the return from HandleRequestAsync directly, - // but rather need to do a little test code here. - var result = await instance.HandleRequestAsync(request, document, cancellationToken); - - if (result is not { } signatureHelp) - { - return null; - } - - if (signatureHelp.TryGetFirst(out var sigHelp1)) - { - return sigHelp1.Signatures.Select(s => s.Label).ToArray(); - } - else if (signatureHelp.TryGetSecond(out var sigHelp2)) - { - return sigHelp2.Signatures.Select(s => s.Label).ToArray(); - } - - Assumed.Unreachable(); - return null; - } + internal Task HandleRequestAsync(SignatureHelpParams request, TextDocument document, CancellationToken cancellationToken) + => instance.HandleRequestAsync(request, document, cancellationToken); } } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostTextPresentationEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostTextPresentationEndpoint.cs index 5686cdcc040..94a112d24da 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostTextPresentationEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostTextPresentationEndpoint.cs @@ -10,7 +10,6 @@ using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostUriPresentationEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostUriPresentationEndpoint.cs index 005cd6db9a3..b7a5ec68abf 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostUriPresentationEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostUriPresentationEndpoint.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostValidateBreakableRangeEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostValidateBreakableRangeEndpoint.cs index 747d2dbc8a0..43925d28577 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostValidateBreakableRangeEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostValidateBreakableRangeEndpoint.cs @@ -10,8 +10,6 @@ using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Text; -using Roslyn.LanguageServer.Protocol; -using VSLSP = Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -24,7 +22,7 @@ namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; #pragma warning restore RS0030 // Do not use banned APIs internal sealed class CohostValidateBreakableRangeEndpoint( IRemoteServiceInvoker remoteServiceInvoker) - : AbstractRazorCohostDocumentRequestHandler, IDynamicRegistrationProvider + : AbstractRazorCohostDocumentRequestHandler, IDynamicRegistrationProvider { private readonly IRemoteServiceInvoker _remoteServiceInvoker = remoteServiceInvoker; @@ -32,25 +30,25 @@ internal sealed class CohostValidateBreakableRangeEndpoint( protected override bool RequiresLSPSolution => true; - public ImmutableArray GetRegistrations(VSLSP.VSInternalClientCapabilities clientCapabilities, RazorCohostRequestContext requestContext) + public ImmutableArray GetRegistrations(VSInternalClientCapabilities clientCapabilities, RazorCohostRequestContext requestContext) { - return [new VSLSP.Registration + return [new Registration { Method = VSInternalMethods.TextDocumentValidateBreakableRangeName, - RegisterOptions = new VSLSP.TextDocumentRegistrationOptions() + RegisterOptions = new TextDocumentRegistrationOptions() }]; } protected override RazorTextDocumentIdentifier? GetRazorTextDocumentIdentifier(VSInternalValidateBreakableRangeParams request) => request.TextDocument.ToRazorTextDocumentIdentifier(); - protected override Task HandleRequestAsync(VSInternalValidateBreakableRangeParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) + protected override Task HandleRequestAsync(VSInternalValidateBreakableRangeParams request, RazorCohostRequestContext context, CancellationToken cancellationToken) => HandleRequestAsync( context.TextDocument.AssumeNotNull(), request.Range.ToLinePositionSpan(), cancellationToken); - private async Task HandleRequestAsync(TextDocument razorDocument, LinePositionSpan span, CancellationToken cancellationToken) + private async Task HandleRequestAsync(TextDocument razorDocument, LinePositionSpan span, CancellationToken cancellationToken) { var response = await _remoteServiceInvoker .TryInvokeAsync( @@ -67,7 +65,7 @@ internal sealed class CohostValidateBreakableRangeEndpoint( internal readonly struct TestAccessor(CohostValidateBreakableRangeEndpoint instance) { - public Task HandleRequestAsync(TextDocument razorDocument, LinePositionSpan span, CancellationToken cancellationToken) + public Task HandleRequestAsync(TextDocument razorDocument, LinePositionSpan span, CancellationToken cancellationToken) => instance.HandleRequestAsync(razorDocument, span, cancellationToken); } } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostWorkspaceSpellCheckEndpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostWorkspaceSpellCheckEndpoint.cs index 7f447ab5611..8fea2a16957 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostWorkspaceSpellCheckEndpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostWorkspaceSpellCheckEndpoint.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Threading; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/IDynamicRegistrationProvider.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/IDynamicRegistrationProvider.cs index c76e6164608..cd2a94dd041 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/IDynamicRegistrationProvider.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/IDynamicRegistrationProvider.cs @@ -3,7 +3,6 @@ using System.Collections.Immutable; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/RazorCohostDynamicRegistrationService.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/RazorCohostDynamicRegistrationService.cs index c47521f56b5..19a70fa7a49 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/RazorCohostDynamicRegistrationService.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/RazorCohostDynamicRegistrationService.cs @@ -13,7 +13,6 @@ using Microsoft.CodeAnalysis.ExternalAccess.Razor.Cohost; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -42,7 +41,7 @@ public async Task RegisterAsync(string clientCapabilitiesString, RazorCohostRequ return; } - var clientCapabilities = JsonSerializer.Deserialize(clientCapabilitiesString, JsonHelpers.VsLspJsonSerializerOptions) ?? new(); + var clientCapabilities = JsonSerializer.Deserialize(clientCapabilitiesString, JsonHelpers.JsonSerializerOptions) ?? new(); _lazyRazorCohostClientCapabilitiesService.Value.SetCapabilities(clientCapabilities); diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/ILSPBreakpointSpanProvider.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/ILSPBreakpointSpanProvider.cs index cdd2d28822a..ed3547d6655 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/ILSPBreakpointSpanProvider.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/ILSPBreakpointSpanProvider.cs @@ -4,11 +4,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Debugging; internal interface ILSPBreakpointSpanProvider { - Task GetBreakpointSpanAsync(LSPDocumentSnapshot documentSnapshot, long hostDocumentSyncVersion, Position position, CancellationToken cancellationToken); + Task GetBreakpointSpanAsync(LSPDocumentSnapshot documentSnapshot, long hostDocumentSyncVersion, Position position, CancellationToken cancellationToken); } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/ILSPProximityExpressionsProvider.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/ILSPProximityExpressionsProvider.cs index 990d58f6db3..ca0fa0572d7 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/ILSPProximityExpressionsProvider.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/ILSPProximityExpressionsProvider.cs @@ -5,7 +5,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Debugging; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/LSPBreakpointSpanProvider.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/LSPBreakpointSpanProvider.cs index c8adfc7df4c..3094c93d24b 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/LSPBreakpointSpanProvider.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/LSPBreakpointSpanProvider.cs @@ -8,8 +8,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.Debugging; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.VisualStudio.Razor.LanguageClient.Debugging; @@ -22,7 +20,7 @@ internal class LSPBreakpointSpanProvider( private readonly LSPRequestInvoker _requestInvoker = requestInvoker; private readonly ILogger _logger = loggerFactory.GetOrCreateLogger(); - public async Task GetBreakpointSpanAsync(LSPDocumentSnapshot documentSnapshot, long hostDocumentSyncVersion, Position position, CancellationToken cancellationToken) + public async Task GetBreakpointSpanAsync(LSPDocumentSnapshot documentSnapshot, long hostDocumentSyncVersion, Position position, CancellationToken cancellationToken) { var languageQueryParams = new RazorBreakpointSpanParams() { diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/LSPProximityExpressionsProvider.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/LSPProximityExpressionsProvider.cs index 955dc901129..ec4404d0b79 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/LSPProximityExpressionsProvider.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/LSPProximityExpressionsProvider.cs @@ -9,7 +9,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.Debugging; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Debugging; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/RazorBreakpointResolver.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/RazorBreakpointResolver.cs index e7caffe6a7a..dc2a6674f6a 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/RazorBreakpointResolver.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/RazorBreakpointResolver.cs @@ -6,17 +6,15 @@ using System.Diagnostics; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor.Remote; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Debugging; using Microsoft.VisualStudio.Text; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.VisualStudio.Razor.LanguageClient.Debugging; @@ -42,14 +40,14 @@ private record CacheKey; // 4 is a magic number that was determined based on the functionality of VisualStudio. Currently when you set or edit a breakpoint // we get called with two different locations for the same breakpoint. Because of this 2 time call our size must be at least 2, // we grow it to 4 just to be safe for lesser known scenarios. - private readonly MemoryCache _cache = new(sizeLimit: 4); + private readonly MemoryCache _cache = new(sizeLimit: 4); - public Task TryResolveBreakpointRangeAsync(ITextBuffer textBuffer, int lineIndex, int characterIndex, CancellationToken cancellationToken) + public Task TryResolveBreakpointRangeAsync(ITextBuffer textBuffer, int lineIndex, int characterIndex, CancellationToken cancellationToken) => _languageServerFeatureOptions.UseRazorCohostServer ? TryResolveBreakpointRangeViaCohostingAsync(textBuffer, lineIndex, characterIndex, cancellationToken) : TryResolveBreakpointRangeViaLspAsync(textBuffer, lineIndex, characterIndex, cancellationToken); - private async Task TryResolveBreakpointRangeViaCohostingAsync(ITextBuffer textBuffer, int lineIndex, int characterIndex, CancellationToken cancellationToken) + private async Task TryResolveBreakpointRangeViaCohostingAsync(ITextBuffer textBuffer, int lineIndex, int characterIndex, CancellationToken cancellationToken) { if (!textBuffer.TryGetTextDocument(out var razorDocument)) { @@ -93,7 +91,7 @@ private record CacheKey; return hostDocumentRange; } - private async Task TryResolveBreakpointRangeViaLspAsync(ITextBuffer textBuffer, int lineIndex, int characterIndex, CancellationToken cancellationToken) + private async Task TryResolveBreakpointRangeViaLspAsync(ITextBuffer textBuffer, int lineIndex, int characterIndex, CancellationToken cancellationToken) { if (!_fileUriProvider.TryGet(textBuffer, out var documentUri)) { @@ -122,7 +120,7 @@ private record CacheKey; return cachedRange; } - var position = VsLspFactory.CreatePosition(lineIndex, characterIndex); + var position = LspFactory.CreatePosition(lineIndex, characterIndex); var hostDocumentRange = await _breakpointSpanProvider.GetBreakpointSpanAsync(documentSnapshot, hostDocumentSyncVersion, position, cancellationToken).ConfigureAwait(false); if (hostDocumentRange is null) { diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/RazorProximityExpressionResolver.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/RazorProximityExpressionResolver.cs index 288fff34b01..87699f3446b 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/RazorProximityExpressionResolver.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Debugging/RazorProximityExpressionResolver.cs @@ -7,13 +7,12 @@ using System.Diagnostics; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor.Remote; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Debugging; using Microsoft.VisualStudio.Text; @@ -118,7 +117,7 @@ private record CacheKey; return cachedExpressions; } - var position = VsLspFactory.CreatePosition(lineIndex, characterIndex); + var position = LspFactory.CreatePosition(lineIndex, characterIndex); var proximityExpressions = await _proximityExpressionsProvider.GetProximityExpressionsAsync(documentSnapshot, hostDocumentSyncVersion, position, cancellationToken).ConfigureAwait(false); // Cache range so if we're asked again for this document/line/character we don't have to go async. diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/DocumentMapping/LSPDocumentMappingProvider.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/DocumentMapping/LSPDocumentMappingProvider.cs index 585846509a1..c76ced9b7c0 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/DocumentMapping/LSPDocumentMappingProvider.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/DocumentMapping/LSPDocumentMappingProvider.cs @@ -13,9 +13,7 @@ using Microsoft.CodeAnalysis.Razor.Protocol.DocumentMapping; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Text; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.VisualStudio.Razor.LanguageClient.DocumentMapping; @@ -35,7 +33,7 @@ internal class LSPDocumentMappingProvider( public async Task MapToDocumentRangesAsync( RazorLanguageKind languageKind, Uri razorDocumentUri, - Range[] projectedRanges, + LspRange[] projectedRanges, CancellationToken cancellationToken) { if (!TryGetTextBuffer(razorDocumentUri, out var textBuffer)) diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget.cs index 11e7cebb5bb..9d8f3c9a8c3 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget.cs @@ -7,16 +7,12 @@ using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; -using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Microsoft.VisualStudio.Razor.LanguageClient.Cohost; using Microsoft.VisualStudio.Razor.Settings; using Microsoft.VisualStudio.Razor.Snippets; using Microsoft.VisualStudio.Text; @@ -35,8 +31,6 @@ internal partial class RazorCustomMessageTarget private readonly LanguageServerFeatureOptions _languageServerFeatureOptions; private readonly ProjectSnapshotManager _projectManager; private readonly SnippetCompletionItemProvider _snippetCompletionItemProvider; - private readonly IWorkspaceProvider _workspaceProvider; - private readonly IHtmlDocumentSynchronizer _htmlDocumentSynchronizer; private readonly FormattingOptionsProvider _formattingOptionsProvider; private readonly IClientSettingsManager _editorSettingsManager; private readonly LSPDocumentSynchronizer _documentSynchronizer; @@ -56,25 +50,13 @@ public RazorCustomMessageTarget( LanguageServerFeatureOptions languageServerFeatureOptions, ProjectSnapshotManager projectManager, SnippetCompletionItemProvider snippetCompletionItemProvider, - IWorkspaceProvider workspaceProvider, - IHtmlDocumentSynchronizer htmlDocumentSynchronizer, ILoggerFactory loggerFactory) { - if (documentManager is null) - { - throw new ArgumentNullException(nameof(documentManager)); - } - if (documentManager is not TrackingLSPDocumentManager trackingDocumentManager) { throw new ArgumentException($"The LSP document manager should be of type {typeof(TrackingLSPDocumentManager).FullName}", nameof(documentManager)); } - if (joinableTaskContext is null) - { - throw new ArgumentNullException(nameof(joinableTaskContext)); - } - _documentManager = trackingDocumentManager; _joinableTaskFactory = joinableTaskContext.Factory; @@ -87,8 +69,6 @@ public RazorCustomMessageTarget( _languageServerFeatureOptions = languageServerFeatureOptions ?? throw new ArgumentNullException(nameof(languageServerFeatureOptions)); _projectManager = projectManager ?? throw new ArgumentNullException(nameof(projectManager)); _snippetCompletionItemProvider = snippetCompletionItemProvider ?? throw new ArgumentNullException(nameof(snippetCompletionItemProvider)); - _workspaceProvider = workspaceProvider; - _htmlDocumentSynchronizer = htmlDocumentSynchronizer; _logger = loggerFactory.GetOrCreateLogger(); } @@ -133,19 +113,13 @@ public RazorCustomMessageTarget( private record struct DelegationRequestDetails(string LanguageServerName, Uri ProjectedUri, ITextBuffer TextBuffer); private async Task> TrySynchronizeVirtualDocumentAsync( - int requiredHostDocumentVersion, - TextDocumentIdentifier hostDocument, - CancellationToken cancellationToken, - bool rejectOnNewerParallelRequest = true, - [CallerMemberName] string? caller = null) - where TVirtualDocumentSnapshot : VirtualDocumentSnapshot + int requiredHostDocumentVersion, + TextDocumentIdentifier hostDocument, + CancellationToken cancellationToken, + bool rejectOnNewerParallelRequest = true, + [CallerMemberName] string? caller = null) + where TVirtualDocumentSnapshot : VirtualDocumentSnapshot { - if (_languageServerFeatureOptions.UseRazorCohostServer && - typeof(TVirtualDocumentSnapshot) == typeof(HtmlVirtualDocumentSnapshot)) - { - return await TempForCohost_TrySynchronizeVirtualDocumentAsync(hostDocument, cancellationToken); - } - _logger.LogDebug($"Trying to synchronize for {caller} to version {requiredHostDocumentVersion} of {hostDocument.Uri} for {hostDocument.GetProjectContext()?.Id ?? "(no project context)"}"); // For Html documents we don't do anything fancy, just call the standard service @@ -205,47 +179,6 @@ private async Task> TrySynchronizeV return result; } - private async Task> TempForCohost_TrySynchronizeVirtualDocumentAsync(TextDocumentIdentifier hostDocument, CancellationToken cancellationToken) - where TVirtualDocumentSnapshot : VirtualDocumentSnapshot - { - Debug.Assert(typeof(TVirtualDocumentSnapshot) == typeof(HtmlVirtualDocumentSnapshot)); - // Cohosting is responsible for Html, so we have to go through its service instead - var workspace = _workspaceProvider.GetWorkspace(); - var documentIds = workspace.CurrentSolution.GetDocumentIdsWithFilePath(RazorUri.GetDocumentFilePathFromUri(hostDocument.Uri)); - - if (documentIds.Length != 1) - { - _logger.LogError($"Couldn't get document id from the workspace for {hostDocument.Uri}"); - return new SynchronizedResult(false, null); - } - - var document = workspace.CurrentSolution.GetAdditionalDocument(documentIds[0]); - if (document is null) - { - _logger.LogError($"Couldn't get document from the workspace for {documentIds[0]} which should be {hostDocument.Uri}"); - return new SynchronizedResult(false, null); - } - - if (!await _htmlDocumentSynchronizer.TrySynchronizeAsync(document, cancellationToken).ConfigureAwait(false)) - { - return new SynchronizedResult(false, null); - } - - if (!_documentManager.TryGetDocument(hostDocument.Uri, out var snapshot)) - { - _logger.LogError($"Couldn't find document in LSPDocumentManager for {hostDocument.Uri}"); - return new SynchronizedResult(false, null); - } - - if (!snapshot.TryGetVirtualDocument(out var virtualDocument)) - { - _logger.LogError($"Couldn't find virtual document snapshot for {hostDocument.Uri}"); - return new SynchronizedResult(false, null); - } - - return new SynchronizedResult(true, virtualDocument); - } - private SynchronizedResult? TryReturnPossiblyFutureSnapshot( int requiredHostDocumentVersion, TextDocumentIdentifier hostDocument) where TVirtualDocumentSnapshot : VirtualDocumentSnapshot diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_CodeActions.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_CodeActions.cs index 965a98be7a0..a39adbdd394 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_CodeActions.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_CodeActions.cs @@ -8,9 +8,8 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; -using Microsoft.CodeAnalysis.Razor.Workspaces.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Threading; using StreamJsonRpc; @@ -74,7 +73,10 @@ internal partial class RazorCustomMessageTarget if (response.Response != null) { - codeActions.AddRange(response.Response); + foreach (var codeAction in response.Response) + { + codeActions.Add(codeAction); + } } } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Completion.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Completion.cs index bc3ebe07147..207551b6378 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Completion.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Completion.cs @@ -3,14 +3,16 @@ using System; using System.Diagnostics; +using System.Linq; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.PooledObjects; +using Microsoft.AspNetCore.Razor.Threading; +using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.Completion; -using Microsoft.CodeAnalysis.Razor.Workspaces.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Snippets; using StreamJsonRpc; @@ -59,7 +61,7 @@ internal partial class RazorCustomMessageTarget } [JsonRpcMethod(LanguageServerConstants.RazorCompletionEndpointName, UseSingleObjectParameterDeserialization = true)] - public async Task ProvideCompletionsAsync( + public async Task ProvideCompletionsAsync( DelegatedCompletionParams request, CancellationToken cancellationToken) { @@ -108,8 +110,18 @@ internal partial class RazorCustomMessageTarget { await _joinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); - var provisionalChange = new VisualStudioTextChange(provisionalTextEdit, virtualDocumentSnapshot.Snapshot); - UpdateVirtualDocument(provisionalChange, request.ProjectedKind, request.Identifier.Version, hostDocumentUri, virtualDocumentSnapshot.Uri); + var provisionalChange = new VisualStudioTextChange( + provisionalTextEdit.Range.Start.Line, + provisionalTextEdit.Range.Start.Character, + provisionalTextEdit.Range.End.Line, + provisionalTextEdit.Range.End.Character, + virtualDocumentSnapshot.Snapshot, + provisionalTextEdit.NewText); + // We update to a negative version number so that if a request comes in for v6, it won't see our modified document. We revert the version back + // later, don't worry. + UpdateVirtualDocument(provisionalChange, request.ProjectedKind, -1 * request.Identifier.Version, hostDocumentUri, virtualDocumentSnapshot.Uri); + + _logger.LogDebug($"Updated for provisional completion to version -{request.Identifier.Version} of {virtualDocumentSnapshot!.Uri}."); // We want the delegation to continue on the captured context because we're currently on the `main` thread and we need to get back to the // main thread in order to update the virtual buffer with the reverted text edit. @@ -120,10 +132,10 @@ internal partial class RazorCustomMessageTarget { var textBuffer = virtualDocumentSnapshot.Snapshot.TextBuffer; var lspMethodName = Methods.TextDocumentCompletion.Name; - ReinvocationResponse? response; + ReinvocationResponse? response; using (_telemetryReporter.TrackLspRequest(lspMethodName, languageServerName, TelemetryThresholds.CompletionSubLSPTelemetryThreshold, request.CorrelationId)) { - response = await _requestInvoker.ReinvokeRequestOnServerAsync( + response = await _requestInvoker.ReinvokeRequestOnServerAsync( textBuffer, lspMethodName, languageServerName, @@ -132,7 +144,7 @@ internal partial class RazorCustomMessageTarget } var completionList = response?.Response; - using var builder = new PooledArrayBuilder(); + using var builder = new PooledArrayBuilder(); if (completionList is not null) { @@ -140,8 +152,9 @@ internal partial class RazorCustomMessageTarget } else { - completionList = new VSInternalCompletionList() + completionList = new RazorVSInternalCompletionList() { + Items = [], // If we don't get a response from the delegated server, we have to make sure to return an incomplete completion // list. When a user is typing quickly, the delegated request from the first keystroke will fail to synchronize, // so if we return a "complete" list then the query won't re-query us for completion once the typing stops/slows @@ -163,8 +176,16 @@ internal partial class RazorCustomMessageTarget { if (provisionalTextEdit is not null) { + _logger.LogDebug($"Reverting the update for provisional completion back to {request.Identifier.Version} of {virtualDocumentSnapshot!.Uri}."); + var revertedProvisionalTextEdit = BuildRevertedEdit(provisionalTextEdit); - var revertedProvisionalChange = new VisualStudioTextChange(revertedProvisionalTextEdit, virtualDocumentSnapshot.Snapshot); + var revertedProvisionalChange = new VisualStudioTextChange( + revertedProvisionalTextEdit.Range.Start.Line, + revertedProvisionalTextEdit.Range.Start.Character, + revertedProvisionalTextEdit.Range.End.Line, + revertedProvisionalTextEdit.Range.End.Character, + virtualDocumentSnapshot.Snapshot, + revertedProvisionalTextEdit.NewText); UpdateVirtualDocument(revertedProvisionalChange, request.ProjectedKind, request.Identifier.Version, hostDocumentUri, virtualDocumentSnapshot.Uri); } } @@ -179,8 +200,8 @@ private static TextEdit BuildRevertedEdit(TextEdit provisionalTextEdit) if (range.Start == range.End) { // Insertion - revertedProvisionalTextEdit = VsLspFactory.CreateTextEdit( - range: VsLspFactory.CreateSingleLineRange( + revertedProvisionalTextEdit = LspFactory.CreateTextEdit( + range: LspFactory.CreateSingleLineRange( range.Start, length: provisionalTextEdit.NewText.Length), newText: string.Empty); @@ -188,7 +209,7 @@ private static TextEdit BuildRevertedEdit(TextEdit provisionalTextEdit) else { // Replace - revertedProvisionalTextEdit = VsLspFactory.CreateTextEdit(range, string.Empty); + revertedProvisionalTextEdit = LspFactory.CreateTextEdit(range, string.Empty); } return revertedProvisionalTextEdit; @@ -227,7 +248,7 @@ private void UpdateVirtualDocument( } [JsonRpcMethod(LanguageServerConstants.RazorCompletionResolveEndpointName, UseSingleObjectParameterDeserialization = true)] - public async Task ProvideResolvedCompletionItemAsync(DelegatedCompletionItemResolveParams request, CancellationToken cancellationToken) + public async Task ProvideResolvedCompletionItemAsync(DelegatedCompletionItemResolveParams request, CancellationToken cancellationToken) { // Check if we're completing a snippet item that we provided if (SnippetCompletionData.TryParse(request.CompletionItem.Data, out var snippetCompletionData) && @@ -281,7 +302,7 @@ private void UpdateVirtualDocument( } var textBuffer = virtualDocumentSnapshot.Snapshot.TextBuffer; - var response = await _requestInvoker.ReinvokeRequestOnServerAsync( + var response = await _requestInvoker.ReinvokeRequestOnServerAsync( textBuffer, Methods.TextDocumentCompletionResolve.Name, languageServerName, @@ -295,6 +316,25 @@ private void UpdateVirtualDocument( public Task GetFormattingOptionsAsync(TextDocumentIdentifierAndVersion document, CancellationToken _) { var formattingOptions = _formattingOptionsProvider.GetOptions(document.TextDocumentIdentifier.Uri); - return Task.FromResult(formattingOptions); + + if (formattingOptions is null) + { + return SpecializedTasks.Null(); + } + + var roslynFormattingOptions = new FormattingOptions() + { + TabSize = formattingOptions.TabSize, + InsertSpaces = formattingOptions.InsertSpaces, + // Options come from the VS protocol DLL, which uses Dict for options, but Roslyn is more strongly typed. + OtherOptions = formattingOptions.OtherOptions?.ToDictionary(k => k.Key, v => v.Value switch + { + bool b => b, + int i => i, + string s => s, + _ => Assumes.NotReachable>(), + }), + }; + return Task.FromResult(roslynFormattingOptions); } } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Diagnostics.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Diagnostics.cs index cfdbc4b3b1d..ec308593445 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Diagnostics.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Diagnostics.cs @@ -7,9 +7,8 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.Diagnostics; -using Microsoft.CodeAnalysis.Razor.Workspaces.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_DocumentColor.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_DocumentColor.cs index c43276e66bf..5920dde547c 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_DocumentColor.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_DocumentColor.cs @@ -7,7 +7,6 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.ColorPresentation; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Threading; using StreamJsonRpc; @@ -34,7 +33,7 @@ internal partial class RazorCustomMessageTarget var htmlTextBuffer = htmlDoc.Snapshot.TextBuffer; var requests = _requestInvoker.ReinvokeRequestOnMultipleServersAsync( htmlTextBuffer, - Methods.DocumentColorRequest.Name, + Methods.TextDocumentDocumentColor.Name, documentColorParams, cancellationToken).ConfigureAwait(false); diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_DocumentSymbol.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_DocumentSymbol.cs index f576c42668e..0ab0528ca76 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_DocumentSymbol.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_DocumentSymbol.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_FindAllReferences.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_FindAllReferences.cs index 8420acfa157..f0da741c9ff 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_FindAllReferences.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_FindAllReferences.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_FoldingRange.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_FoldingRange.cs index 4aff2d9d5f0..a10e94fb9d9 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_FoldingRange.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_FoldingRange.cs @@ -8,7 +8,6 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.Folding; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_HtmlFormatting.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_HtmlFormatting.cs index 69b0a4d6beb..1d24f290384 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_HtmlFormatting.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_HtmlFormatting.cs @@ -7,7 +7,6 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.Formatting; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_InlayHints.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_InlayHints.cs index 25a9154be2b..0ea3c4d254e 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_InlayHints.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_InlayHints.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_MapCode.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_MapCode.cs index 0499515498b..54026f53801 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_MapCode.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_MapCode.cs @@ -4,8 +4,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.CodeAnalysis.Razor.Workspaces.Telemetry; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.CodeAnalysis.Razor.Telemetry; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_OnAutoInsert.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_OnAutoInsert.cs index 148c2288f2e..5d9c67c7fd6 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_OnAutoInsert.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_OnAutoInsert.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Presentation.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Presentation.cs index db045614f14..9d2337ff89a 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Presentation.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Presentation.cs @@ -7,7 +7,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.DocumentPresentation; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_ProjectContexts.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_ProjectContexts.cs index 73a902c594a..f5f3a6e2e27 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_ProjectContexts.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_ProjectContexts.cs @@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Razor.Threading; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.DynamicFiles; using StreamJsonRpc; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Rename.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Rename.cs index 21d95daeda0..c30b99ea49d 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Rename.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_Rename.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SemanticTokens.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SemanticTokens.cs index 9cabff2fb78..79feaf869a0 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SemanticTokens.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SemanticTokens.cs @@ -7,9 +7,8 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces.Protocol.SemanticTokens; -using Microsoft.CodeAnalysis.Razor.Workspaces.Telemetry; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; @@ -54,7 +53,7 @@ internal partial class RazorCustomMessageTarget private async Task ProvideSemanticTokensAsync( ProvideSemanticTokensRangesParams semanticTokensParams, string lspMethodName, - SemanticTokensParams requestParams, + SemanticTokensRangeParams requestParams, CancellationToken cancellationToken) { _logger.LogDebug($"Semantic tokens request for {semanticTokensParams.Ranges.Max(static r => r.End.Line)} max line number, host version {semanticTokensParams.RequiredHostDocumentVersion}, correlation ID {semanticTokensParams.CorrelationId}"); @@ -89,7 +88,7 @@ internal partial class RazorCustomMessageTarget { try { - var result = await _requestInvoker.ReinvokeRequestOnServerAsync( + var result = await _requestInvoker.ReinvokeRequestOnServerAsync( textBuffer, lspMethodName, languageServerName, diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SimplifyMethod.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SimplifyMethod.cs index 92bf545fd9b..6201768d66a 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SimplifyMethod.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SimplifyMethod.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SpellCheck.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SpellCheck.cs index d4a224f0e82..ee0f1011080 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SpellCheck.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_SpellCheck.cs @@ -5,7 +5,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_TextDocumentPosition.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_TextDocumentPosition.cs index 31716c290e5..86fa205d7eb 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_TextDocumentPosition.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_TextDocumentPosition.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; @@ -14,8 +13,8 @@ internal partial class RazorCustomMessageTarget // These handlers do different jobs, but all take a DelegatedPositionParams and in turn request a TextDocumentPositionParams [JsonRpcMethod(CustomMessageNames.RazorDefinitionEndpointName, UseSingleObjectParameterDeserialization = true)] - public Task DefinitionAsync(DelegatedPositionParams request, CancellationToken cancellationToken) - => DelegateTextDocumentPositionAndProjectContextAsync(request, Methods.TextDocumentDefinitionName, cancellationToken); + public Task DefinitionAsync(DelegatedPositionParams request, CancellationToken cancellationToken) + => DelegateTextDocumentPositionAndProjectContextAsync(request, Methods.TextDocumentDefinitionName, cancellationToken); [JsonRpcMethod(CustomMessageNames.RazorDocumentHighlightEndpointName, UseSingleObjectParameterDeserialization = true)] public Task DocumentHighlightAsync(DelegatedPositionParams request, CancellationToken cancellationToken) @@ -26,12 +25,12 @@ internal partial class RazorCustomMessageTarget => DelegateTextDocumentPositionAndProjectContextAsync(request, Methods.TextDocumentHoverName, cancellationToken); [JsonRpcMethod(CustomMessageNames.RazorImplementationEndpointName, UseSingleObjectParameterDeserialization = true)] - public Task> ImplementationAsync(DelegatedPositionParams request, CancellationToken cancellationToken) - => DelegateTextDocumentPositionAndProjectContextAsync>(request, Methods.TextDocumentImplementationName, cancellationToken); + public Task> ImplementationAsync(DelegatedPositionParams request, CancellationToken cancellationToken) + => DelegateTextDocumentPositionAndProjectContextAsync>(request, Methods.TextDocumentImplementationName, cancellationToken); [JsonRpcMethod(CustomMessageNames.RazorSignatureHelpEndpointName, UseSingleObjectParameterDeserialization = true)] - public Task SignatureHelpAsync(DelegatedPositionParams request, CancellationToken cancellationToken) - => DelegateTextDocumentPositionAndProjectContextAsync(request, Methods.TextDocumentSignatureHelpName, cancellationToken); + public Task SignatureHelpAsync(DelegatedPositionParams request, CancellationToken cancellationToken) + => DelegateTextDocumentPositionAndProjectContextAsync(request, Methods.TextDocumentSignatureHelpName, cancellationToken); private async Task DelegateTextDocumentPositionAndProjectContextAsync(DelegatedPositionParams request, string methodName, CancellationToken cancellationToken) { diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_UpdateCSharpBuffer.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_UpdateCSharpBuffer.cs index 47b797d2ef0..1c8f18e2d96 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_UpdateCSharpBuffer.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_UpdateCSharpBuffer.cs @@ -6,8 +6,8 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using StreamJsonRpc; @@ -24,20 +24,33 @@ public async Task UpdateCSharpBufferAsync(UpdateBufferRequest request, Cancellat throw new ArgumentNullException(nameof(request)); } - await _joinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); - - await UpdateCSharpBufferCoreAsync(request, cancellationToken); + // We're going to try updating the C# buffer, and it has to happen on the UI thread. That is a single shared resource + // that can only be updated on a specific thread, and so we can easily hit contention. In particular with provisional + // completion we can end up with a state where we are waiting for completion to finish before we can update the document + // but other features are waiting on us to update the document with some changes. Normally this is fine, and we handle it + // with our sync system and simply cancel the task and let the next one in. When updating buffers from the server though + // we can't do that, as the server assumes we can always apply the update. Our only option here is to keep trying until + // we get a successful update. + // It's worth noting we only try again specifically for provisional completion, so we don't get random deadocks. + var tryAgain = true; + while (tryAgain) + { + _logger.LogDebug($"Trying a call to UpdateCSharpBufferCoreAsync for v{request.HostDocumentVersion}"); + tryAgain = await UpdateCSharpBufferCoreAsync(request, cancellationToken).ConfigureAwait(false); + } } - // Internal for testing - internal async Task UpdateCSharpBufferCoreAsync(UpdateBufferRequest request, CancellationToken cancellationToken) + private async Task UpdateCSharpBufferCoreAsync(UpdateBufferRequest request, CancellationToken cancellationToken) { - if (request is null || request.HostDocumentFilePath is null || request.HostDocumentVersion is null) + if (request.HostDocumentFilePath is null || request.HostDocumentVersion is null) { - return; + return false; } - var hostDocumentUri = new Uri(request.HostDocumentFilePath); + await _joinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); + + var identifier = CreateTextDocumentIdentifier(request); + var hostDocumentUri = identifier.Uri; _logger.LogDebug($"UpdateCSharpBuffer for {request.HostDocumentVersion} of {hostDocumentUri} in {request.ProjectKeyId}"); @@ -68,12 +81,27 @@ request.ProjectKeyId is not null && // Sadly there isn't anything we can do here to, we're just in a state where the server and client are out of // sync with their understanding of the document contents, and since changes come in as a list of changes, // the user experience is broken. All we can do is hope the user closes and re-opens the document. - Debug.Fail($"Server wants to update {hostDocumentUri} in {request.ProjectKeyId} but we don't know about the document being in any projects"); _logger.LogError($"Server wants to update {hostDocumentUri} in {request.ProjectKeyId} by we only know about that document in misc files. Server and client are now out of sync."); - return; + Debug.Fail($"Server wants to update {hostDocumentUri} in {request.ProjectKeyId} but we don't know about the document being in any projects"); + return false; } } + // First we need to make sure we're synced to the previous version, or the changes won't apply properly. This should no-op in most cases, as this + // is (almost) the only thing that actually moves documents forward, we're really just validating we're in a good state. + // We're specifically checking here for provisional completion in flight, which is a case where we update the C# document + // in a way that doesn't represent the actual state, so we can't let server updates through while in this state (represented + // by a negative version number). Due to provisional completion being on the UI thread, we have to return from this method + // and try again so we get to the back of the UI thread queue. + if (request.PreviousHostDocumentVersion is { } previousVersion && + await TrySynchronizeVirtualDocumentAsync(previousVersion, identifier, cancellationToken, rejectOnNewerParallelRequest: false) is { } synchronizedResult && + !synchronizedResult.Synchronized && + synchronizedResult.VirtualSnapshot?.HostDocumentSyncVersion < 0) + { + _logger.LogError($"Request to update C# buffer from {previousVersion} to {request.HostDocumentVersion} failed because the server Roslyn and Razor are out of sync. Server version is {synchronizedResult.VirtualSnapshot?.HostDocumentSyncVersion}. Will try again as provisional completion is in flight which is an expected cause of de-sync, which we recover from."); + return true; + } + foreach (var virtualDocument in virtualDocuments) { if (virtualDocument.ProjectKey.Equals(new ProjectKey(request.ProjectKeyId))) @@ -89,7 +117,7 @@ request.ProjectKeyId is not null && _logger.LogDebug($"UpdateCSharpBuffer finished updating doc for {request.HostDocumentVersion} of {virtualDocument.Uri}. New lines: {GetLineCountOfVirtualDocument(hostDocumentUri, virtualDocument)}"); - return; + return false; } } @@ -108,7 +136,7 @@ request.ProjectKeyId is not null && // Don't know about document, no-op. This can happen if the language server found a project.razor.bin from an old build // and is sending us updates. - return; + return false; } _logger.LogDebug($"UpdateCSharpBuffer fallback for {request.HostDocumentVersion} of {hostDocumentUri}"); @@ -118,6 +146,26 @@ request.ProjectKeyId is not null && request.Changes.Select(change => change.ToVisualStudioTextChange()).ToArray(), request.HostDocumentVersion.Value, state: request.PreviousWasEmpty); + + return false; + } + + private static TextDocumentIdentifier CreateTextDocumentIdentifier(UpdateBufferRequest request) + { + var hostDocumentUri = new Uri(request.HostDocumentFilePath); + if (request.ProjectKeyId is { } id) + { + return new VSTextDocumentIdentifier + { + Uri = hostDocumentUri, + ProjectContext = new VSProjectContext + { + Id = id, + } + }; + } + + return new TextDocumentIdentifier { Uri = hostDocumentUri }; } private int GetLineCountOfVirtualDocument(Uri hostDocumentUri, CSharpVirtualDocumentSnapshot virtualDocument) diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_ValidateBreakpoint.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_ValidateBreakpoint.cs index 64925be6dca..ab0039485bb 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_ValidateBreakpoint.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_ValidateBreakpoint.cs @@ -4,7 +4,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; @@ -12,7 +11,7 @@ namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; internal partial class RazorCustomMessageTarget { [JsonRpcMethod(CustomMessageNames.RazorValidateBreakpointRangeName, UseSingleObjectParameterDeserialization = true)] - public async Task ValidateBreakpointRangeAsync(DelegatedValidateBreakpointRangeParams request, CancellationToken cancellationToken) + public async Task ValidateBreakpointRangeAsync(DelegatedValidateBreakpointRangeParams request, CancellationToken cancellationToken) { var delegationDetails = await GetProjectedRequestDetailsAsync(request, cancellationToken).ConfigureAwait(false); if (delegationDetails is null) @@ -26,7 +25,7 @@ internal partial class RazorCustomMessageTarget Range = request.ProjectedRange }; - var response = await _requestInvoker.ReinvokeRequestOnServerAsync( + var response = await _requestInvoker.ReinvokeRequestOnServerAsync( delegationDetails.Value.TextBuffer, VSInternalMethods.TextDocumentValidateBreakableRangeName, delegationDetails.Value.LanguageServerName, diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_WorkspaceConfiguration.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_WorkspaceConfiguration.cs index 0cc9fd60ae4..8e948c297aa 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_WorkspaceConfiguration.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_WorkspaceConfiguration.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using Microsoft.VisualStudio.LanguageServer.Protocol; using StreamJsonRpc; namespace Microsoft.VisualStudio.Razor.LanguageClient.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_WrapWithTag.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_WrapWithTag.cs index 580c41628e3..9a87e888a71 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_WrapWithTag.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Endpoints/RazorCustomMessageTarget_WrapWithTag.cs @@ -6,7 +6,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.LanguageClient.WrapWithTag; using StreamJsonRpc; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/GeneratedVirtualDocument.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/GeneratedVirtualDocument.cs index 065599d315e..113a3678d29 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/GeneratedVirtualDocument.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/GeneratedVirtualDocument.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; using Microsoft.VisualStudio.Text; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/HtmlVirtualDocument.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/HtmlVirtualDocument.cs index eee0a356498..982c1dd9076 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/HtmlVirtualDocument.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/HtmlVirtualDocument.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.Text; namespace Microsoft.VisualStudio.Razor.LanguageClient; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/HtmlVirtualDocumentFactory.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/HtmlVirtualDocumentFactory.cs index 34aae8bcdd8..61d361ea68c 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/HtmlVirtualDocumentFactory.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/HtmlVirtualDocumentFactory.cs @@ -3,7 +3,7 @@ using System; using System.ComponentModel.Composition; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; using Microsoft.VisualStudio.Text; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Options/OptionsStorage.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Options/OptionsStorage.cs index 37c9a346087..ef9f943d4db 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Options/OptionsStorage.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Options/OptionsStorage.cs @@ -8,9 +8,9 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Settings; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.Internal.VisualStudio.Shell.Interop; using Microsoft.VisualStudio.Razor.Settings; using Microsoft.VisualStudio.Settings; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorCSharpInterceptionMiddleLayer.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorCSharpInterceptionMiddleLayer.cs index 7a7415f1455..8fe8e791bf8 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorCSharpInterceptionMiddleLayer.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorCSharpInterceptionMiddleLayer.cs @@ -10,7 +10,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Workspaces.Protocol.SemanticTokens; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Newtonsoft.Json.Linq; namespace Microsoft.VisualStudio.Razor.LanguageClient; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorDocumentOptionsService.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorDocumentOptionsService.cs index dd97a0de2e6..e1c36a7c57e 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorDocumentOptionsService.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorDocumentOptionsService.cs @@ -8,10 +8,10 @@ using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor.Api; -using Microsoft.CodeAnalysis.Formatting; using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.Razor.Settings; using Microsoft.VisualStudio.Razor.Settings; +using FormattingOptions = Microsoft.CodeAnalysis.Formatting.FormattingOptions; namespace Microsoft.VisualStudio.Razor.LanguageClient; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorLSPMappingService.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorLSPMappingService.cs index b037f779bba..fa36ad6f9d8 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorLSPMappingService.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorLSPMappingService.cs @@ -14,7 +14,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol.DocumentMapping; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.LanguageClient.DocumentMapping; using Microsoft.VisualStudio.Text; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorLanguageServerClient.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorLanguageServerClient.cs index 9eebaed54eb..1a4fb3e5573 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorLanguageServerClient.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/RazorLanguageServerClient.cs @@ -8,10 +8,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis.Host; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.Extensions.DependencyInjection; using Microsoft.VisualStudio.LanguageServer.Client; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WorkspaceConfigurationChangedListener.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WorkspaceConfigurationChangedListener.cs index a2ec0e79fdc..63fa7529943 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WorkspaceConfigurationChangedListener.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WorkspaceConfigurationChangedListener.cs @@ -5,7 +5,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Settings; namespace Microsoft.VisualStudio.Razor.LanguageClient; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WrapWithTag/VSInternalWrapWithTagParams.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WrapWithTag/VSInternalWrapWithTagParams.cs index b9b4d7ff394..444f550b282 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WrapWithTag/VSInternalWrapWithTagParams.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WrapWithTag/VSInternalWrapWithTagParams.cs @@ -3,7 +3,6 @@ using System.Runtime.Serialization; using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.WrapWithTag; @@ -14,7 +13,7 @@ namespace Microsoft.VisualStudio.Razor.LanguageClient.WrapWithTag; [DataContract] internal class VSInternalWrapWithTagParams { - public VSInternalWrapWithTagParams(Range range, + public VSInternalWrapWithTagParams(LspRange range, string tagName, FormattingOptions options, VersionedTextDocumentIdentifier textDocument) @@ -41,7 +40,7 @@ public VersionedTextDocumentIdentifier TextDocument /// [DataMember(Name = "_vs_range")] [JsonPropertyName("_vs_range")] - public Range Range + public LspRange Range { get; set; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WrapWithTag/VSInternalWrapWithTagResponse.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WrapWithTag/VSInternalWrapWithTagResponse.cs index 35316bc2909..4667ee202f1 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WrapWithTag/VSInternalWrapWithTagResponse.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/WrapWithTag/VSInternalWrapWithTagResponse.cs @@ -3,7 +3,6 @@ using System.Runtime.Serialization; using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.WrapWithTag; @@ -14,7 +13,7 @@ namespace Microsoft.VisualStudio.Razor.LanguageClient.WrapWithTag; [DataContract] internal class VSInternalWrapWithTagResponse { - public VSInternalWrapWithTagResponse(Range tagRange, TextEdit[] textEdits) + public VSInternalWrapWithTagResponse(LspRange tagRange, TextEdit[] textEdits) { TagRange = tagRange; TextEdits = textEdits; @@ -25,7 +24,7 @@ public VSInternalWrapWithTagResponse(Range tagRange, TextEdit[] textEdits) /// [DataMember(Name = "_vs_tagRange")] [JsonPropertyName("_vs_tagRange")] - public Range TagRange { get; } + public LspRange TagRange { get; } /// /// Gets or sets the text edits. diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LiveShare/ProjectSnapshotHandleProxy.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LiveShare/ProjectSnapshotHandleProxy.cs index 261fc0921c5..194955a7be2 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LiveShare/ProjectSnapshotHandleProxy.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LiveShare/ProjectSnapshotHandleProxy.cs @@ -3,7 +3,7 @@ using System; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.VisualStudio.Razor.LiveShare; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LiveShare/Serialization/ProjectSnapshotHandleProxyJsonConverter.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LiveShare/Serialization/ProjectSnapshotHandleProxyJsonConverter.cs index 3aef4f2a513..eeb232b1d0a 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LiveShare/Serialization/ProjectSnapshotHandleProxyJsonConverter.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LiveShare/Serialization/ProjectSnapshotHandleProxyJsonConverter.cs @@ -1,8 +1,8 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Serialization.Json; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.VisualStudio.Razor.LiveShare.Serialization; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Logging/RazorActivityLog.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Logging/RazorActivityLog.cs index 1521bdca194..78a67e007b8 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Logging/RazorActivityLog.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Logging/RazorActivityLog.cs @@ -7,7 +7,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.Utilities; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using Microsoft.VisualStudio.Threading; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Microsoft.VisualStudio.LanguageServices.Razor.csproj b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Microsoft.VisualStudio.LanguageServices.Razor.csproj index c70074804dc..152b356b33d 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Microsoft.VisualStudio.LanguageServices.Razor.csproj +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Microsoft.VisualStudio.LanguageServices.Razor.csproj @@ -25,6 +25,7 @@ + @@ -64,6 +65,10 @@ + + + + diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/DefaultWindowsRazorProjectHost.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/DefaultWindowsRazorProjectHost.cs index 96b84033d46..73748d1be39 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/DefaultWindowsRazorProjectHost.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/DefaultWindowsRazorProjectHost.cs @@ -12,7 +12,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; @@ -323,7 +322,10 @@ private HostDocument[] GetCurrentDocuments(IProjectSubscriptionUpdate update) !string.IsNullOrWhiteSpace(targetPath)) { var filePath = CommonServices.UnconfiguredProject.MakeRooted(kvp.Key); - var fileKind = FileKinds.GetComponentFileKindFromFilePath(filePath); + + var fileKind = FileKinds.TryGetFileKindFromPath(filePath, out var kind) && kind != RazorFileKind.Legacy + ? kind + : RazorFileKind.Component; documents.Add(new HostDocument(filePath, targetPath, fileKind)); } @@ -339,7 +341,7 @@ private HostDocument[] GetCurrentDocuments(IProjectSubscriptionUpdate update) !string.IsNullOrWhiteSpace(targetPath)) { var filePath = CommonServices.UnconfiguredProject.MakeRooted(kvp.Key); - documents.Add(new HostDocument(filePath, targetPath, FileKinds.Legacy)); + documents.Add(new HostDocument(filePath, targetPath, RazorFileKind.Legacy)); } } } @@ -361,7 +363,10 @@ private HostDocument[] GetChangedAndRemovedDocuments(IProjectSubscriptionUpdate !string.IsNullOrWhiteSpace(targetPath)) { var filePath = CommonServices.UnconfiguredProject.MakeRooted(key); - var fileKind = FileKinds.GetComponentFileKindFromFilePath(filePath); + + var fileKind = FileKinds.TryGetFileKindFromPath(filePath, out var kind) && kind != RazorFileKind.Legacy + ? kind + : RazorFileKind.Component; documents.Add(new HostDocument(filePath, targetPath, fileKind)); } @@ -380,7 +385,7 @@ private HostDocument[] GetChangedAndRemovedDocuments(IProjectSubscriptionUpdate !string.IsNullOrWhiteSpace(targetPath)) { var filePath = CommonServices.UnconfiguredProject.MakeRooted(key); - documents.Add(new HostDocument(filePath, targetPath, FileKinds.Legacy)); + documents.Add(new HostDocument(filePath, targetPath, RazorFileKind.Legacy)); } } } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/FallbackProjectManager.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/FallbackProjectManager.cs index 076a4025040..f20f82f3312 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/FallbackProjectManager.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/FallbackProjectManager.cs @@ -6,12 +6,11 @@ using System.ComponentModel.Composition; using System.IO; using System.Threading; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Threading; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/FallbackWindowsRazorProjectHost.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/FallbackWindowsRazorProjectHost.cs index ca5057e4b47..69b38f76275 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/FallbackWindowsRazorProjectHost.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/FallbackWindowsRazorProjectHost.cs @@ -13,7 +13,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; @@ -248,7 +247,7 @@ internal bool TryGetRazorDocument(IImmutableDictionary itemState if (targetPath.EndsWith(".cshtml", StringComparison.OrdinalIgnoreCase)) { targetPath = CommonServices.UnconfiguredProject.MakeRooted(targetPath); - razorDocument = new HostDocument(filePath, targetPath, FileKinds.Legacy); + razorDocument = new HostDocument(filePath, targetPath, RazorFileKind.Legacy); return true; } } diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/IFallbackProjectManager.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/IFallbackProjectManager.cs index 8a5e0fcb346..a7fc3cacbbd 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/IFallbackProjectManager.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/IFallbackProjectManager.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.VisualStudio.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/VisualStudioProjectEngineFactoryProvider.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/VisualStudioProjectEngineFactoryProvider.cs index d9481218a02..9d1286e61ad 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/VisualStudioProjectEngineFactoryProvider.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/VisualStudioProjectEngineFactoryProvider.cs @@ -3,7 +3,7 @@ using System.ComponentModel.Composition; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; namespace Microsoft.VisualStudio.Razor.ProjectSystem; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/VisualStudioProjectSnapshotManager.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/VisualStudioProjectSnapshotManager.cs index ad911d49218..b200435c026 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/VisualStudioProjectSnapshotManager.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/VisualStudioProjectSnapshotManager.cs @@ -2,8 +2,8 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.ComponentModel.Composition; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/WindowsRazorProjectHostBase.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/WindowsRazorProjectHostBase.cs index d23680f50df..4e18568dfe0 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/WindowsRazorProjectHostBase.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/ProjectSystem/WindowsRazorProjectHostBase.cs @@ -9,7 +9,6 @@ using System.Threading; using System.Threading.Tasks; using System.Threading.Tasks.Dataflow; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Remote/RemoteServiceInvoker.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Remote/RemoteServiceInvoker.cs index 164d52ddfc7..4646d5f5f7b 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Remote/RemoteServiceInvoker.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Remote/RemoteServiceInvoker.cs @@ -7,7 +7,6 @@ using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor; @@ -15,6 +14,7 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.CodeAnalysis.Razor.SemanticTokens; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; namespace Microsoft.VisualStudio.Razor.Remote; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Snippets/SnippetCompletionItemProvider.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Snippets/SnippetCompletionItemProvider.cs index 8a99acf51cb..87bd371969b 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Snippets/SnippetCompletionItemProvider.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Snippets/SnippetCompletionItemProvider.cs @@ -6,7 +6,6 @@ using System.Linq; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.Snippets; @@ -25,7 +24,7 @@ public void AddSnippetCompletions( RazorLanguageKind projectedKind, VSInternalCompletionInvokeKind invokeKind, string? triggerCharacter, - ref PooledArrayBuilder builder) + ref PooledArrayBuilder builder) { // Temporary fix: snippets are broken in CSharp. We're investigating // but this is very disruptive. This quick fix unblocks things. @@ -54,7 +53,7 @@ public void AddSnippetCompletions( } builder.AddRange(snippets - .Select(s => new CompletionItem() + .Select(s => new VSInternalCompletionItem() { Label = s.Shortcut, Detail = s.Description, diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/AggregatingTelemetryLog.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/AggregatingTelemetryLog.cs index 8b1326daa8c..2a586707f0c 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/AggregatingTelemetryLog.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/AggregatingTelemetryLog.cs @@ -2,7 +2,7 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Collections.Immutable; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.Telemetry; using Microsoft.VisualStudio.Telemetry.Metrics; using Microsoft.VisualStudio.Telemetry.Metrics.Events; diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/TelemetryReporter.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/TelemetryReporter.cs index 238b5071de1..ac1dae81ece 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/TelemetryReporter.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/TelemetryReporter.cs @@ -11,10 +11,10 @@ using System.Reflection; using System.Threading; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.Telemetry; using static Microsoft.VisualStudio.Razor.Telemetry.AggregatingTelemetryLog; -using TelemetryResult = Microsoft.AspNetCore.Razor.Telemetry.TelemetryResult; +using TelemetryResult = Microsoft.CodeAnalysis.Razor.Telemetry.TelemetryResult; namespace Microsoft.VisualStudio.Razor.Telemetry; @@ -277,7 +277,7 @@ public TelemetryScope TrackLspRequest(string lspMethodName, string languageServe new("eventscope.correlationid", correlationId)); } - public void ReportRequestTiming(string name, string? language, TimeSpan queuedDuration, TimeSpan requestDuration, AspNetCore.Razor.Telemetry.TelemetryResult result) + public void ReportRequestTiming(string name, string? language, TimeSpan queuedDuration, TimeSpan requestDuration, TelemetryResult result) { _manager?.LogRequestTelemetry( name, diff --git a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/VSTelemetryReporter.cs b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/VSTelemetryReporter.cs index 830bee17ff3..1ad86e06dd1 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/VSTelemetryReporter.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/Telemetry/VSTelemetryReporter.cs @@ -3,8 +3,8 @@ using System; using System.ComponentModel.Composition; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.Telemetry; using StreamJsonRpc; diff --git a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Completion/RazorDirectiveAttributeCompletionSource.cs b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Completion/RazorDirectiveAttributeCompletionSource.cs index 1c653b9c4c6..f6b61da1633 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Completion/RazorDirectiveAttributeCompletionSource.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Completion/RazorDirectiveAttributeCompletionSource.cs @@ -72,13 +72,13 @@ public async Task GetCompletionContextAsync(IAsyncCompletionS } var syntaxTree = codeDocument.GetSyntaxTree(); - var tagHelperDocumentContext = codeDocument.GetTagHelperContext(); + var tagHelperContext = codeDocument.GetRequiredTagHelperContext(); var absoluteIndex = triggerLocation.Position; var queryableChange = new SourceChange(absoluteIndex, length: 0, newText: string.Empty); #pragma warning disable CS0618 // Type or member is obsolete, will be removed in an upcoming change var owner = syntaxTree.Root.LocateOwner(queryableChange); #pragma warning restore CS0618 // Type or member is obsolete - var razorCompletionContext = new RazorCompletionContext(absoluteIndex, owner, syntaxTree, tagHelperDocumentContext); + var razorCompletionContext = new RazorCompletionContext(absoluteIndex, owner, syntaxTree, tagHelperContext); var razorCompletionItems = _completionFactsService.GetCompletionItems(razorCompletionContext); if (razorCompletionItems.Length == 0) diff --git a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Completion/RazorDirectiveCompletionSource.cs b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Completion/RazorDirectiveCompletionSource.cs index 3d09a12a764..8bcea2b97e7 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Completion/RazorDirectiveCompletionSource.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Completion/RazorDirectiveCompletionSource.cs @@ -74,13 +74,13 @@ public async Task GetCompletionContextAsync( var location = new SourceSpan(triggerLocation.Position, 0); var syntaxTree = codeDocument.GetSyntaxTree(); - var tagHelperDocumentContext = codeDocument.GetTagHelperContext(); + var tagHelperContext = codeDocument.GetRequiredTagHelperContext(); var absoluteIndex = triggerLocation.Position; var queryableChange = new SourceChange(absoluteIndex, length: 0, newText: string.Empty); #pragma warning disable CS0618 // Type or member is obsolete, will be removed in an upcoming change var owner = syntaxTree.Root.LocateOwner(queryableChange); #pragma warning restore CS0618 // Type or member is obsolete - var razorCompletionContext = new RazorCompletionContext(absoluteIndex, owner, syntaxTree, tagHelperDocumentContext); + var razorCompletionContext = new RazorCompletionContext(absoluteIndex, owner, syntaxTree, tagHelperContext); var razorCompletionItems = _completionFactsService.GetCompletionItems(razorCompletionContext); using var _ = ArrayBuilderPool.GetPooledObject(out var completionItems); diff --git a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/EphemeralProjectSnapshot.cs b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/EphemeralProjectSnapshot.cs index 59846559f36..e1668329cdb 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/EphemeralProjectSnapshot.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/EphemeralProjectSnapshot.cs @@ -6,8 +6,8 @@ using System.IO; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem.Legacy; diff --git a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/BackgroundParser.cs b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/BackgroundParser.cs index 5a0ac8a25a3..db357c707f9 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/BackgroundParser.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/BackgroundParser.cs @@ -17,7 +17,7 @@ internal class BackgroundParser : IDisposable private readonly MainThreadState _main; private readonly BackgroundThread _bg; - public BackgroundParser(RazorProjectEngine projectEngine, string filePath, string projectDirectory, string fileKind) + public BackgroundParser(RazorProjectEngine projectEngine, string filePath, string projectDirectory, RazorFileKind fileKind) { _main = new MainThreadState(); _bg = new BackgroundThread(_main, projectEngine, filePath, projectDirectory, fileKind); @@ -275,14 +275,14 @@ private class BackgroundThread : ThreadStateBase private readonly string _filePath; private readonly string _relativeFilePath; private readonly string _projectDirectory; - private readonly string _fileKind; + private readonly RazorFileKind _fileKind; private readonly MainThreadState _main; private readonly Thread _backgroundThread; private CancellationToken _shutdownToken; private readonly RazorProjectEngine _projectEngine; private IList? _previouslyDiscarded = new List(); - public BackgroundThread(MainThreadState main, RazorProjectEngine projectEngine, string filePath, string projectDirectory, string fileKind) + public BackgroundThread(MainThreadState main, RazorProjectEngine projectEngine, string filePath, string projectDirectory, RazorFileKind fileKind) { // Run on MAIN thread! _main = main; diff --git a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/TextSnapshotProjectItem.cs b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/TextSnapshotProjectItem.cs index 9a18fa85d45..634051a1ba1 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/TextSnapshotProjectItem.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/TextSnapshotProjectItem.cs @@ -13,13 +13,12 @@ internal sealed class TextSnapshotProjectItem : RazorProjectItem { private readonly ITextSnapshot _snapshot; - public TextSnapshotProjectItem(ITextSnapshot snapshot, string projectDirectory, string relativeFilePath, string filePath, string fileKind) + public TextSnapshotProjectItem(ITextSnapshot snapshot, string projectDirectory, string relativeFilePath, string filePath, RazorFileKind fileKind) { ArgHelper.ThrowIfNull(snapshot); ArgHelper.ThrowIfNullOrEmpty(projectDirectory); ArgHelper.ThrowIfNullOrEmpty(relativeFilePath); ArgHelper.ThrowIfNullOrEmpty(filePath); - ArgHelper.ThrowIfNull(fileKind); _snapshot = snapshot; BasePath = projectDirectory; @@ -29,7 +28,7 @@ public TextSnapshotProjectItem(ITextSnapshot snapshot, string projectDirectory, } public override string BasePath { get; } - public override string FileKind { get; } + public override RazorFileKind FileKind { get; } public override string FilePath { get; } public override string PhysicalPath { get; } diff --git a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/VisualStudioRazorParser.cs b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/VisualStudioRazorParser.cs index 9e7df1d5ea2..271ec761867 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/VisualStudioRazorParser.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/VisualStudioRazorParser.cs @@ -12,9 +12,8 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Legacy; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Logging; - +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.Extensions.Internal; using Microsoft.VisualStudio.Language.Intellisense; using Microsoft.VisualStudio.Razor.Extensions; @@ -231,7 +230,7 @@ internal void StartParser() // We might not have a document snapshot in the case of an ephemeral project. // If we don't have a document then infer the FileKind from the FilePath. - var fileKind = projectSnapshot.GetDocument(_documentTracker.FilePath)?.FileKind ?? FileKinds.GetFileKindFromFilePath(_documentTracker.FilePath); + var fileKind = projectSnapshot.GetDocument(_documentTracker.FilePath)?.FileKind ?? FileKinds.GetFileKindFromPath(_documentTracker.FilePath); var projectDirectory = Path.GetDirectoryName(_documentTracker.ProjectPath); _parser = new BackgroundParser(_projectEngine, FilePath, projectDirectory, fileKind); @@ -341,6 +340,11 @@ private void TextBuffer_OnChanged(object sender, TextContentChangedEventArgs arg codeDocument.Items[item.Key] = item.Value; } + if (currentCodeDocument.TryGetTagHelperContext(out var tagHelperContext)) + { + codeDocument.SetTagHelperContext(tagHelperContext); + } + codeDocument.SetSyntaxTree(partialParseSyntaxTree); TryUpdateLatestParsedSyntaxTreeSnapshot(codeDocument, snapshot); } diff --git a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/VisualStudioRazorParserFactory.cs b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/VisualStudioRazorParserFactory.cs index 0f1d3f678e5..e57fac207c0 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/VisualStudioRazorParserFactory.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/Parsing/VisualStudioRazorParserFactory.cs @@ -2,9 +2,8 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.ComponentModel.Composition; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Logging; - +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.VisualStudio.Language.Intellisense; using Microsoft.VisualStudio.Razor.Extensions; using Microsoft.VisualStudio.Threading; diff --git a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/VisualStudioDocumentTracker.cs b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/VisualStudioDocumentTracker.cs index 1064a93ddb8..040268e50d2 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/VisualStudioDocumentTracker.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/VisualStudioDocumentTracker.cs @@ -9,7 +9,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem.Legacy; using Microsoft.CodeAnalysis.Razor.Settings; diff --git a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/VisualStudioDocumentTrackerFactory.cs b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/VisualStudioDocumentTrackerFactory.cs index 09621c8613b..e48710fd84d 100644 --- a/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/VisualStudioDocumentTrackerFactory.cs +++ b/src/Razor/src/Microsoft.VisualStudio.LegacyEditor.Razor/VisualStudioDocumentTrackerFactory.cs @@ -4,7 +4,7 @@ using System; using System.ComponentModel.Composition; using System.Diagnostics; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.VisualStudio.LegacyEditor.Razor.Settings; diff --git a/src/Razor/src/Microsoft.VisualStudio.RazorExtension.Dependencies/AssemblyCodeBases.cs b/src/Razor/src/Microsoft.VisualStudio.RazorExtension.Dependencies/AssemblyCodeBases.cs index 4a1ce4ef543..322a19b6b29 100644 --- a/src/Razor/src/Microsoft.VisualStudio.RazorExtension.Dependencies/AssemblyCodeBases.cs +++ b/src/Razor/src/Microsoft.VisualStudio.RazorExtension.Dependencies/AssemblyCodeBases.cs @@ -15,7 +15,8 @@ [assembly: ProvideBindingRedirection(AssemblyName = "Microsoft.CodeAnalysis.EditorFeatures", GenerateCodeBase = true, OldVersionLowerBound = "4.4.0.0", OldVersionUpperBound = "Current")] [assembly: ProvideBindingRedirection(AssemblyName = "Microsoft.CodeAnalysis.EditorFeatures.Text", GenerateCodeBase = true, OldVersionLowerBound = "4.4.0.0", OldVersionUpperBound = "Current")] [assembly: ProvideBindingRedirection(AssemblyName = "Microsoft.CodeAnalysis.EditorFeatures.Wpf", GenerateCodeBase = true, OldVersionLowerBound = "4.4.0.0", OldVersionUpperBound = "Current")] -[assembly: ProvideBindingRedirection(AssemblyName = "Microsoft.CodeAnalysis.ExternalAccess.Razor", GenerateCodeBase = true, OldVersionLowerBound = "4.4.0.0", OldVersionUpperBound = "Current")] +[assembly: ProvideBindingRedirection(AssemblyName = "Microsoft.CodeAnalysis.ExternalAccess.Razor.Features", GenerateCodeBase = true, OldVersionLowerBound = "4.4.0.0", OldVersionUpperBound = "Current")] +[assembly: ProvideBindingRedirection(AssemblyName = "Microsoft.CodeAnalysis.ExternalAccess.Razor.EditorFeatures", GenerateCodeBase = true, OldVersionLowerBound = "4.4.0.0", OldVersionUpperBound = "Current")] [assembly: ProvideBindingRedirection(AssemblyName = "Microsoft.CodeAnalysis.InteractiveHost", GenerateCodeBase = true, OldVersionLowerBound = "4.4.0.0", OldVersionUpperBound = "Current")] [assembly: ProvideBindingRedirection(AssemblyName = "Microsoft.CodeAnalysis.Features", GenerateCodeBase = true, OldVersionLowerBound = "4.4.0.0", OldVersionUpperBound = "Current")] [assembly: ProvideBindingRedirection(AssemblyName = "Microsoft.CodeAnalysis.LanguageServer.Protocol", GenerateCodeBase = true, OldVersionLowerBound = "4.4.0.0", OldVersionUpperBound = "Current")] diff --git a/src/Razor/src/Microsoft.VisualStudio.RazorExtension.Dependencies/Microsoft.VisualStudio.RazorExtension.Dependencies.csproj b/src/Razor/src/Microsoft.VisualStudio.RazorExtension.Dependencies/Microsoft.VisualStudio.RazorExtension.Dependencies.csproj index 531cd48aa51..f197a78167a 100644 --- a/src/Razor/src/Microsoft.VisualStudio.RazorExtension.Dependencies/Microsoft.VisualStudio.RazorExtension.Dependencies.csproj +++ b/src/Razor/src/Microsoft.VisualStudio.RazorExtension.Dependencies/Microsoft.VisualStudio.RazorExtension.Dependencies.csproj @@ -64,7 +64,8 @@ - + + @@ -79,7 +80,8 @@ - + + diff --git a/src/Razor/src/Microsoft.VisualStudio.RazorExtension/SyntaxVisualizer/SyntaxVisualizerControl.xaml.cs b/src/Razor/src/Microsoft.VisualStudio.RazorExtension/SyntaxVisualizer/SyntaxVisualizerControl.xaml.cs index f71ea15dca7..9e965720242 100644 --- a/src/Razor/src/Microsoft.VisualStudio.RazorExtension/SyntaxVisualizer/SyntaxVisualizerControl.xaml.cs +++ b/src/Razor/src/Microsoft.VisualStudio.RazorExtension/SyntaxVisualizer/SyntaxVisualizerControl.xaml.cs @@ -8,6 +8,7 @@ using System.Threading; using System.Windows; using System.Windows.Controls; +using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Serialization.Json; using Microsoft.CodeAnalysis.Razor.Formatting.New; @@ -187,11 +188,11 @@ public void ShowSerializedTagHelpers(TagHelperDisplayMode displayKind) { ThreadHelper.ThrowIfNotOnUIThread(); - var codeDocument = GetCodeDocument(); + var codeDocument = GetCodeDocument().AssumeNotNull(); var tagHelpers = displayKind switch { TagHelperDisplayMode.All => codeDocument.GetTagHelpers(), - TagHelperDisplayMode.InScope => codeDocument.GetTagHelperContext().TagHelpers, + TagHelperDisplayMode.InScope => codeDocument.GetRequiredTagHelperContext().TagHelpers, TagHelperDisplayMode.Referenced => (IEnumerable)codeDocument.GetReferencedTagHelpers(), _ => [] }; diff --git a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Endpoints/RazorDynamicFileChangedParams.cs b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Endpoints/RazorDynamicFileChangedParams.cs index 35210f430ff..f3d669fd3cb 100644 --- a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Endpoints/RazorDynamicFileChangedParams.cs +++ b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Endpoints/RazorDynamicFileChangedParams.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudioCode.RazorExtension.Endpoints; diff --git a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Microsoft.VisualStudioCode.RazorExtension.csproj b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Microsoft.VisualStudioCode.RazorExtension.csproj index f63c95b13b5..b76e1e4836e 100644 --- a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Microsoft.VisualStudioCode.RazorExtension.csproj +++ b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Microsoft.VisualStudioCode.RazorExtension.csproj @@ -36,13 +36,16 @@ + + + + - diff --git a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/RazorWorkspaceListenerBase.cs b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/RazorWorkspaceListenerBase.cs index bd9031a21d1..a3ef36c0349 100644 --- a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/RazorWorkspaceListenerBase.cs +++ b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/RazorWorkspaceListenerBase.cs @@ -4,8 +4,8 @@ using System.Collections.Immutable; using System.Diagnostics; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.Extensions.Logging; namespace Microsoft.VisualStudioCode.RazorExtension; @@ -287,7 +287,7 @@ private static async Task ReportUpdateProjectAsync(Stream stream, Project projec return; } - stream.WriteProjectInfoAction(ProjectInfoAction.Update); + stream.WriteProjectInfoAction(RazorProjectInfoAction.Update); await stream.WriteProjectInfoAsync(result.ProjectInfo, cancellationToken).ConfigureAwait(false); } diff --git a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/LspDynamicFileProvider.LspTextChangesTextLoader.cs b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/LspDynamicFileProvider.LspTextChangesTextLoader.cs index 5853fc32d21..718def982a7 100644 --- a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/LspDynamicFileProvider.LspTextChangesTextLoader.cs +++ b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/LspDynamicFileProvider.LspTextChangesTextLoader.cs @@ -36,20 +36,32 @@ private sealed class LspTextChangesTextLoader( public override async Task LoadTextAndVersionAsync(LoadTextOptions options, CancellationToken cancellationToken) { - if (_document is null) + try { - var text = ApplyChanges(_emptySourceText.Value, _changes); - return TextAndVersion.Create(text, VersionStamp.Default.GetNewerVersion()); - } + if (_document is null) + { + var text = ApplyChanges(_emptySourceText.Value, _changes); + return TextAndVersion.Create(text, VersionStamp.Default.GetNewerVersion()); + } + + var sourceText = await _document.GetTextAsync(cancellationToken).ConfigureAwait(false); - var sourceText = await _document.GetTextAsync(cancellationToken).ConfigureAwait(false); + // Validate the checksum information so the edits are known to be correct - // Validate the checksum information so the edits are known to be correct - if (IsSourceTextMatching(sourceText)) + if (IsSourceTextMatching(sourceText)) + { + var version = await _document.GetTextVersionAsync(cancellationToken).ConfigureAwait(false); + var newText = ApplyChanges(sourceText, _changes); + return TextAndVersion.Create(newText, version.GetNewerVersion()); + } + } + catch (Exception ex) when (ex is not OperationCanceledException) { - var version = await _document.GetTextVersionAsync(cancellationToken).ConfigureAwait(false); - var newText = ApplyChanges(sourceText, _changes); - return TextAndVersion.Create(newText, version.GetNewerVersion()); + // This happens if ApplyChanges tries to apply an invalid TextChange. + // This is recoverable but incurs a perf hit for getting the full text below. + + // TODO: Add ability to capture a fault here in EA. There's something wrong if + // the Checksum matches but the text changes can't be applied. } return await GetFullDocumentFromServerAsync(cancellationToken).ConfigureAwait(false); diff --git a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorProvideDynamicFileParams.cs b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorProvideDynamicFileParams.cs index 04545329db6..acb86e3e4ef 100644 --- a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorProvideDynamicFileParams.cs +++ b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorProvideDynamicFileParams.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudioCode.RazorExtension.Services; diff --git a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorProvideDynamicFileResponse.cs b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorProvideDynamicFileResponse.cs index 01ebcd175d3..6137361e2b3 100644 --- a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorProvideDynamicFileResponse.cs +++ b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorProvideDynamicFileResponse.cs @@ -3,7 +3,6 @@ using System.Text.Json.Serialization; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol; namespace Microsoft.VisualStudioCode.RazorExtension.Services; diff --git a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorRemoveDynamicFileParams.cs b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorRemoveDynamicFileParams.cs index be85d691661..a130bd62b9c 100644 --- a/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorRemoveDynamicFileParams.cs +++ b/src/Razor/src/Microsoft.VisualStudioCode.RazorExtension/Services/RazorRemoveDynamicFileParams.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Text.Json.Serialization; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudioCode.RazorExtension.Services; diff --git a/src/Razor/src/rzls/LspLogger.cs b/src/Razor/src/rzls/LspLogger.cs index 00c040d3b08..50c7d752b3c 100644 --- a/src/Razor/src/rzls/LspLogger.cs +++ b/src/Razor/src/rzls/LspLogger.cs @@ -6,8 +6,8 @@ using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting.Logging; using Microsoft.CodeAnalysis.Razor.Logging; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Threading; +using Roslyn.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer; diff --git a/src/Razor/src/rzls/NamedPipeBasedRazorProjectInfoDriver.cs b/src/Razor/src/rzls/NamedPipeBasedRazorProjectInfoDriver.cs index eeb828a3adb..5980f5b06fe 100644 --- a/src/Razor/src/rzls/NamedPipeBasedRazorProjectInfoDriver.cs +++ b/src/Razor/src/rzls/NamedPipeBasedRazorProjectInfoDriver.cs @@ -7,10 +7,9 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting.NamedPipes; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.VisualStudio.Threading; namespace Microsoft.AspNetCore.Razor.LanguageServer; @@ -53,7 +52,7 @@ private async Task ReadFromStreamAsync(CancellationToken cancellationToken) _namedPipe is { IsConnected: true } && !cancellationToken.IsCancellationRequested) { - ProjectInfoAction? projectInfoAction; + RazorProjectInfoAction? projectInfoAction; try { projectInfoAction = _namedPipe.ReadProjectInfoAction(); @@ -69,21 +68,25 @@ private async Task ReadFromStreamAsync(CancellationToken cancellationToken) continue; } - Logger.LogInformation($"Failed {failedActionReads} times but things may be back on track"); + if (failedActionReads > 0) + { + Logger.LogInformation($"Failed {failedActionReads} times but things may be back on track"); + } + failedActionReads = 0; try { switch (projectInfoAction) { - case ProjectInfoAction.Remove: + case RazorProjectInfoAction.Remove: Logger.LogTrace($"Attempting to read project id for removal"); var id = await _namedPipe.ReadProjectInfoRemovalAsync(cancellationToken).ConfigureAwait(false); EnqueueRemove(new ProjectKey(id)); break; - case ProjectInfoAction.Update: + case RazorProjectInfoAction.Update: Logger.LogTrace($"Attempting to read project info for update"); var projectInfo = await _namedPipe.ReadProjectInfoAsync(cancellationToken).ConfigureAwait(false); if (projectInfo is not null) diff --git a/src/Razor/src/rzls/Program.cs b/src/Razor/src/rzls/Program.cs index 2821fffd8c4..d68e059f282 100644 --- a/src/Razor/src/rzls/Program.cs +++ b/src/Razor/src/rzls/Program.cs @@ -10,10 +10,10 @@ using Microsoft.AspNetCore.Razor.LanguageServer.Hosting.Diagnostics; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting.Logging; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting.NamedPipes; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.Extensions.DependencyInjection; using Microsoft.VisualStudio.Composition; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.ExternalAccess.LegacyEditor.Test/RazorSyntaxFactsServiceTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.ExternalAccess.LegacyEditor.Test/RazorSyntaxFactsServiceTest.cs index e18165c2a3b..081fc2de310 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.ExternalAccess.LegacyEditor.Test/RazorSyntaxFactsServiceTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.ExternalAccess.LegacyEditor.Test/RazorSyntaxFactsServiceTest.cs @@ -99,7 +99,7 @@ private IRazorCodeDocument GetCodeDocument(string source) var sourceDocument = TestRazorSourceDocument.Create(source, normalizeNewLines: true); var importDocument = TestRazorSourceDocument.Create("@addTagHelper *, TestAssembly", filePath: "import.cshtml", relativePath: "import.cshtml"); - var codeDocument = engine.ProcessDesignTime(sourceDocument, FileKinds.Legacy, importSources: ImmutableArray.Create(importDocument), new []{ taghelper }); + var codeDocument = engine.ProcessDesignTime(sourceDocument, RazorFileKind.Legacy, importSources: ImmutableArray.Create(importDocument), new []{ taghelper }); return RazorWrapperFactory.WrapCodeDocument(codeDocument); } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/AutoClosingTagOnAutoInsertProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/AutoClosingTagOnAutoInsertProviderTest.cs index 6120d307985..a585db4da67 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/AutoClosingTagOnAutoInsertProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/AutoClosingTagOnAutoInsertProviderTest.cs @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using System; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.Razor.AutoInsert; @@ -13,89 +12,64 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.AutoInsert; public class AutoClosingTagOnAutoInsertProviderTest(ITestOutputHelper testOutput) : RazorOnAutoInsertProviderTestBase(testOutput) { - private static TagHelperDescriptor CatchAllTagHelper - { - get - { - var descriptor = TagHelperDescriptorBuilder.Create("CatchAllTagHelper", "TestAssembly"); - descriptor.SetMetadata(TypeName("TestNamespace.CatchAllTagHelper")); - descriptor.TagMatchingRule(builder => builder.RequireTagName("*").RequireTagStructure(TagStructure.Unspecified)); - - return descriptor.Build(); - } - } - - private static TagHelperDescriptor UnspecifiedInputMirroringTagHelper - { - get - { - var descriptor = TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly"); - descriptor.SetMetadata(TypeName("TestNamespace.TestTagHelper")); - descriptor.TagMatchingRule(builder => builder.RequireTagName("Input").RequireTagStructure(TagStructure.Unspecified)); - - return descriptor.Build(); - } - } - - private static TagHelperDescriptor UnspecifiedTagHelper - { - get - { - var descriptor = TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly"); - descriptor.SetMetadata(TypeName("TestNamespace.TestTagHelper")); - descriptor.TagMatchingRule(builder => builder.RequireTagName("test").RequireTagStructure(TagStructure.Unspecified)); - - return descriptor.Build(); - } - } - - private static TagHelperDescriptor UnspecifiedInputTagHelper - { - get - { - var descriptor = TagHelperDescriptorBuilder.Create("TestInputTagHelper", "TestAssembly"); - descriptor.SetMetadata(TypeName("TestNamespace.TestInputTagHelper")); - descriptor.TagMatchingRule(builder => builder.RequireTagName("input").RequireTagStructure(TagStructure.Unspecified)); - - return descriptor.Build(); - } - } - - private static TagHelperDescriptor NormalOrSelfclosingInputTagHelper - { - get - { - var descriptor = TagHelperDescriptorBuilder.Create("TestInputTagHelper", "TestAssembly"); - descriptor.SetMetadata(TypeName("TestNamespace.TestInputTagHelper")); - descriptor.TagMatchingRule(builder => builder.RequireTagName("input").RequireTagStructure(TagStructure.NormalOrSelfClosing)); - - return descriptor.Build(); - } - } - - private static TagHelperDescriptor NormalOrSelfClosingTagHelper - { - get - { - var descriptor = TagHelperDescriptorBuilder.Create("TestTagHelper2", "TestAssembly"); - descriptor.SetMetadata(TypeName("TestNamespace.TestTagHelper2")); - descriptor.TagMatchingRule(builder => builder.RequireTagName("test").RequireTagStructure(TagStructure.NormalOrSelfClosing)); - - return descriptor.Build(); - } - } + private protected override IOnAutoInsertProvider CreateProvider() + => new AutoClosingTagOnAutoInsertProvider(); - private static TagHelperDescriptor WithoutEndTagTagHelper - { - get - { - var descriptor = TagHelperDescriptorBuilder.Create("TestTagHelper3", "TestAssembly"); - descriptor.SetMetadata(TypeName("TestNamespace.TestTagHelper3")); - descriptor.TagMatchingRule(builder => builder.RequireTagName("test").RequireTagStructure(TagStructure.WithoutEndTag)); - - return descriptor.Build(); - } - } + private static readonly TagHelperDescriptor s_catchAllTagHelper = + TagHelperDescriptorBuilder.Create("CatchAllTagHelper", "TestAssembly") + .Metadata(TypeName("TestNamespace.CatchAllTagHelper")) + .TagMatchingRuleDescriptor(builder => builder + .RequireTagName("*") + .RequireTagStructure(TagStructure.Unspecified)) + .Build(); + + private static readonly TagHelperDescriptor s_unspecifiedInputMirroringTagHelper = + TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly") + .Metadata(TypeName("TestNamespace.TestTagHelper")) + .TagMatchingRuleDescriptor(builder => builder + .RequireTagName("Input") + .RequireTagStructure(TagStructure.Unspecified)) + .Build(); + + private static readonly TagHelperDescriptor s_unspecifiedTagHelper = + TagHelperDescriptorBuilder.Create("TestTagHelper", "TestAssembly") + .Metadata(TypeName("TestNamespace.TestTagHelper")) + .TagMatchingRuleDescriptor(builder => builder + .RequireTagName("test") + .RequireTagStructure(TagStructure.Unspecified)) + .Build(); + + private static readonly TagHelperDescriptor s_unspecifiedInputTagHelper = + TagHelperDescriptorBuilder.Create("TestInputTagHelper", "TestAssembly") + .Metadata(TypeName("TestNamespace.TestInputTagHelper")) + .TagMatchingRuleDescriptor(builder => builder + .RequireTagName("input") + .RequireTagStructure(TagStructure.Unspecified)) + .Build(); + + private static readonly TagHelperDescriptor s_normalOrSelfclosingInputTagHelper = + TagHelperDescriptorBuilder.Create("TestInputTagHelper", "TestAssembly") + .Metadata(TypeName("TestNamespace.TestInputTagHelper")) + .TagMatchingRuleDescriptor(builder => builder + .RequireTagName("input") + .RequireTagStructure(TagStructure.NormalOrSelfClosing)) + .Build(); + + private static readonly TagHelperDescriptor s_normalOrSelfClosingTagHelper = + TagHelperDescriptorBuilder.Create("TestTagHelper2", "TestAssembly") + .Metadata(TypeName("TestNamespace.TestTagHelper2")) + .TagMatchingRuleDescriptor(builder => builder + .RequireTagName("test") + .RequireTagStructure(TagStructure.NormalOrSelfClosing)) + .Build(); + + private static readonly TagHelperDescriptor s_withoutEndTagTagHelper = + TagHelperDescriptorBuilder.Create("TestTagHelper3", "TestAssembly") + .Metadata(TypeName("TestNamespace.TestTagHelper3")) + .TagMatchingRuleDescriptor(builder => builder + .RequireTagName("test") + .RequireTagStructure(TagStructure.WithoutEndTag)) + .Build(); [Fact] [WorkItem("https://github.com/dotnet/razor-tooling/issues/6217")] @@ -112,8 +86,8 @@ public void OnTypeCloseAngle_ConflictingAutoClosingBehaviorsChoosesMostSpecific( """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { WithoutEndTagTagHelper, CatchAllTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_withoutEndTagTagHelper, s_catchAllTagHelper]); } [Fact] @@ -131,8 +105,8 @@ public void OnTypeCloseAngle_TagHelperAlreadyHasEndTag() """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -150,8 +124,8 @@ public void OnTypeCloseAngle_VoidTagHelperHasEndTag_ShouldStillAutoClose() """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { UnspecifiedInputTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_unspecifiedInputTagHelper]); } [Fact] @@ -266,8 +240,8 @@ public void OnTypeCloseAngle_VoidElementMirroringTagHelper() $0 """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { UnspecifiedInputMirroringTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_unspecifiedInputMirroringTagHelper]); } [Fact] @@ -277,8 +251,8 @@ public void OnTypeCloseAngle_VoidHtmlElementCapitalized_SelfCloses() RunAutoInsertTest( input: "$$", expected: "", - fileKind: FileKinds.Legacy, - tagHelpers: Array.Empty()); + fileKind: RazorFileKind.Legacy, + tagHelpers: []); } [Fact] @@ -295,8 +269,8 @@ public void OnTypeCloseAngle_NormalOrSelfClosingStructureOverridesVoidTagBehavio $0 """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfclosingInputTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfclosingInputTagHelper]); } [Fact] @@ -313,8 +287,8 @@ public void OnTypeCloseAngle_UnspeccifiedStructureInheritsVoidTagBehavior() """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { UnspecifiedInputTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_unspecifiedInputTagHelper]); } [Fact] @@ -331,8 +305,8 @@ public void OnTypeCloseAngle_UnspeccifiedTagHelperTagStructure() $0 """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { UnspecifiedTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_unspecifiedTagHelper]); } [Fact] @@ -349,8 +323,8 @@ public void OnTypeCloseAngle_NormalOrSelfClosingTagHelperTagStructure() $0 """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -374,8 +348,8 @@ public void OnTypeCloseAngle_TagHelperInHtml_NestedStatement()
$0
} """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -399,8 +373,8 @@ public void OnTypeCloseAngle_HtmlTagInHtml_NestedStatement_WithAttribute() } """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -424,8 +398,8 @@ public void OnTypeCloseAngle_HtmlTagInHtml_NestedStatement_WithAttribute_SpaceBe } """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -449,8 +423,8 @@ public void OnTypeCloseAngle_HtmlTagInHtml_NestedStatement_WithMinimalizedAttrib
$0
} """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -474,8 +448,8 @@ public void OnTypeCloseAngle_HtmlTagInHtml_NestedStatement_WithMinimalizedAttrib
$0
} """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -499,8 +473,8 @@ public void OnTypeCloseAngle_TagHelperInHtml_NestedStatement_WithAttribute()
$0
} """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -524,8 +498,8 @@ public void OnTypeCloseAngle_TagHelperInHtml_NestedStatement_WithAttribute_Space
$0
} """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -549,8 +523,8 @@ public void OnTypeCloseAngle_TagHelperInHtml_NestedStatement_WithMinimalizedAttr
$0
} """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -574,8 +548,8 @@ public void OnTypeCloseAngle_TagHelperInHtml_NestedStatement_WithMinimalizedAttr
$0
} """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -599,8 +573,8 @@ public void OnTypeCloseAngle_TagHelperInTagHelper_NestedStatement() } """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper, UnspecifiedInputTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper, s_unspecifiedInputTagHelper]); } [Fact] @@ -624,8 +598,8 @@ public void OnTypeCloseAngle_TagHelperNextToVoidTagHelper_NestedStatement() $0 } """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper, UnspecifiedInputTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper, s_unspecifiedInputTagHelper]); } [Fact] @@ -649,8 +623,8 @@ public void OnTypeCloseAngle_TagHelperNextToTagHelper_NestedStatement() $0 } """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper, NormalOrSelfclosingInputTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper, s_normalOrSelfclosingInputTagHelper]); } [Fact] @@ -671,8 +645,8 @@ public void OnTypeCloseAngle_NormalOrSelfClosingTagHelperTagStructure_CodeBlock( $0 } """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -689,8 +663,8 @@ public void OnTypeCloseAngle_WithSlash_WithoutEndTagTagHelperTagStructure() """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { WithoutEndTagTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_withoutEndTagTagHelper]); } [Fact] @@ -714,8 +688,8 @@ public void OnTypeCloseAngle_NestedStatement()
} """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { WithoutEndTagTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_withoutEndTagTagHelper]); } [Fact] @@ -732,8 +706,8 @@ public void OnTypeCloseAngle_WithSpace_WithoutEndTagTagHelperTagStructure() """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { WithoutEndTagTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_withoutEndTagTagHelper]); } [Fact] @@ -750,8 +724,8 @@ public void OnTypeCloseAngle_WithoutEndTagTagHelperTagStructure() """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { WithoutEndTagTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_withoutEndTagTagHelper]); } [Fact] @@ -772,8 +746,8 @@ public void OnTypeCloseAngle_WithoutEndTagTagHelperTagStructure_CodeBlock() } """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { WithoutEndTagTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_withoutEndTagTagHelper]); } [Fact] @@ -790,8 +764,8 @@ public void OnTypeCloseAngle_MultipleApplicableTagHelperTagStructures() $0 """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { UnspecifiedTagHelper, NormalOrSelfClosingTagHelper, WithoutEndTagTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_unspecifiedTagHelper, s_normalOrSelfClosingTagHelper, s_withoutEndTagTagHelper]); } [Fact] @@ -808,8 +782,8 @@ public void OnTypeCloseAngle_EscapedTagTagHelperAutoCompletesWithEscape() $0 """, - fileKind: FileKinds.Legacy, - tagHelpers: new[] { NormalOrSelfClosingTagHelper }); + fileKind: RazorFileKind.Legacy, + tagHelpers: [s_normalOrSelfClosingTagHelper]); } [Fact] @@ -992,7 +966,4 @@ public void OnTypeCloseAngle_AutoInsertDisabled_Noops() """, enableAutoClosingTags: false); } - - internal override IOnAutoInsertProvider CreateProvider() - => new AutoClosingTagOnAutoInsertProvider(); } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/CloseTextTagOnAutoInsertProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/CloseTextTagOnAutoInsertProviderTest.cs index 74b17456c4c..06e744f14a7 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/CloseTextTagOnAutoInsertProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/CloseTextTagOnAutoInsertProviderTest.cs @@ -9,6 +9,9 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.AutoInsert; public class CloseTextTagOnAutoInsertProviderTest(ITestOutputHelper testOutput) : RazorOnAutoInsertProviderTestBase(testOutput) { + private protected override IOnAutoInsertProvider CreateProvider() => + new CloseTextTagOnAutoInsertProvider(); + [Fact] public void OnTypeCloseAngle_ClosesTextTag() { @@ -36,7 +39,4 @@ public void OnTypeCloseAngle_OutsideRazorBlock_DoesNotCloseTextTag() """); } - - internal override IOnAutoInsertProvider CreateProvider() => - new CloseTextTagOnAutoInsertProvider(); } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/OnAutoInsertEndpointTest.NetFx.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/OnAutoInsertEndpointTest.NetFx.cs index 65d6063d5b2..9fc743fbc75 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/OnAutoInsertEndpointTest.NetFx.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/OnAutoInsertEndpointTest.NetFx.cs @@ -4,11 +4,10 @@ using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.Formatting; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Razor.AutoInsert; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; namespace Microsoft.AspNetCore.Razor.LanguageServer.AutoInsert; @@ -38,7 +37,7 @@ public async Task Handle_SingleProvider_InvokesProvider() var @params = new VSInternalDocumentOnAutoInsertParams() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, - Position = VsLspFactory.DefaultPosition, + Position = LspFactory.DefaultPosition, Character = ">", Options = new FormattingOptions { @@ -69,11 +68,11 @@ public async Task Handle_MultipleProviderSameTrigger_UsesSuccessful() var optionsMonitor = GetOptionsMonitor(); var insertProvider1 = new TestOnAutoInsertProvider(">", canResolve: false) { - ResolvedTextEdit = VsLspFactory.CreateTextEdit(position: (0, 0), string.Empty) + ResolvedTextEdit = LspFactory.CreateTextEdit(position: (0, 0), string.Empty) }; var insertProvider2 = new TestOnAutoInsertProvider(">", canResolve: true) { - ResolvedTextEdit = VsLspFactory.CreateTextEdit(position: (0, 0), string.Empty) + ResolvedTextEdit = LspFactory.CreateTextEdit(position: (0, 0), string.Empty) }; var formattingService = await TestRazorFormattingService.CreateWithFullSupportAsync(LoggerFactory); var endpoint = new OnAutoInsertEndpoint( @@ -87,7 +86,7 @@ public async Task Handle_MultipleProviderSameTrigger_UsesSuccessful() var @params = new VSInternalDocumentOnAutoInsertParams() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, - Position = VsLspFactory.DefaultPosition, + Position = LspFactory.DefaultPosition, Character = ">", Options = new FormattingOptions { @@ -121,11 +120,11 @@ public async Task Handle_MultipleProviderSameTrigger_UsesFirstSuccessful() var optionsMonitor = GetOptionsMonitor(); var insertProvider1 = new TestOnAutoInsertProvider(">", canResolve: true) { - ResolvedTextEdit = VsLspFactory.CreateTextEdit(position: (0, 0), string.Empty) + ResolvedTextEdit = LspFactory.CreateTextEdit(position: (0, 0), string.Empty) }; var insertProvider2 = new TestOnAutoInsertProvider(">", canResolve: true) { - ResolvedTextEdit = VsLspFactory.CreateTextEdit(position: (0, 0), string.Empty) + ResolvedTextEdit = LspFactory.CreateTextEdit(position: (0, 0), string.Empty) }; var formattingService = await TestRazorFormattingService.CreateWithFullSupportAsync(LoggerFactory); var endpoint = new OnAutoInsertEndpoint( @@ -139,7 +138,7 @@ public async Task Handle_MultipleProviderSameTrigger_UsesFirstSuccessful() var @params = new VSInternalDocumentOnAutoInsertParams() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, - Position = VsLspFactory.DefaultPosition, + Position = LspFactory.DefaultPosition, Character = ">", Options = new FormattingOptions { @@ -183,7 +182,7 @@ public async Task Handle_NoApplicableProvider_CallsProviderAndReturnsNull() var @params = new VSInternalDocumentOnAutoInsertParams() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, - Position = VsLspFactory.DefaultPosition, + Position = LspFactory.DefaultPosition, Character = ">", Options = new FormattingOptions { @@ -225,7 +224,7 @@ public async Task Handle_OnTypeFormattingOff_Html_CallsLanguageServer() var @params = new VSInternalDocumentOnAutoInsertParams() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, - Position = VsLspFactory.DefaultPosition, + Position = LspFactory.DefaultPosition, Character = "=", Options = new FormattingOptions { @@ -265,7 +264,7 @@ public async Task Handle_AutoInsertAttributeQuotesOff_Html_DoesNotCallLanguageSe var @params = new VSInternalDocumentOnAutoInsertParams() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, - Position = VsLspFactory.DefaultPosition, + Position = LspFactory.DefaultPosition, Character = "=", Options = new FormattingOptions { diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/OnAutoInsertEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/OnAutoInsertEndpointTest.cs index 9bd79676417..1a509850353 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/OnAutoInsertEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/OnAutoInsertEndpointTest.cs @@ -5,8 +5,9 @@ using System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; +using Microsoft.AspNetCore.Razor.LanguageServer.Formatting; +using Microsoft.AspNetCore.Razor.LanguageServer.Test; using Microsoft.CodeAnalysis.Razor.AutoInsert; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -38,7 +39,7 @@ public async Task Handle_MultipleProviderUnmatchingTrigger_ReturnsNull() var @params = new VSInternalDocumentOnAutoInsertParams() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, - Position = VsLspFactory.DefaultPosition, + Position = LspFactory.DefaultPosition, Character = "!", Options = new FormattingOptions { @@ -80,7 +81,7 @@ public async Task Handle_DocumentNotFound_ReturnsNull() var @params = new VSInternalDocumentOnAutoInsertParams() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, - Position = VsLspFactory.DefaultPosition, + Position = LspFactory.DefaultPosition, Character = ">", Options = new FormattingOptions { @@ -99,48 +100,6 @@ public async Task Handle_DocumentNotFound_ReturnsNull() Assert.Equal(0, languageServer.RequestCount); } - [Fact] - public async Task Handle_UnsupportedCodeDocument_ReturnsNull() - { - // Arrange - var codeDocument = CreateCodeDocument(); - codeDocument.SetUnsupported(); - var razorFilePath = "file://path/test.razor"; - var uri = new Uri(razorFilePath); - var languageServer = await CreateLanguageServerAsync(codeDocument, razorFilePath); - var documentContext = CreateDocumentContext(uri, codeDocument); - var optionsMonitor = GetOptionsMonitor(); - var insertProvider = new TestOnAutoInsertProvider(">", canResolve: true); - var endpoint = new OnAutoInsertEndpoint( - LanguageServerFeatureOptions, - DocumentMappingService, - languageServer, - new AutoInsertService([insertProvider]), - optionsMonitor, - razorFormattingService: null!, - LoggerFactory); - var @params = new VSInternalDocumentOnAutoInsertParams() - { - TextDocument = new TextDocumentIdentifier { Uri = uri, }, - Position = VsLspFactory.DefaultPosition, - Character = ">", - Options = new FormattingOptions - { - TabSize = 4, - InsertSpaces = true - }, - }; - var requestContext = CreateRazorRequestContext(documentContext); - - // Act - var result = await endpoint.HandleRequestAsync(@params, requestContext, DisposalToken); - - // Assert - Assert.Null(result); - Assert.False(insertProvider.Called); - Assert.Equal(0, languageServer.RequestCount); - } - [Fact] public async Task Handle_OnTypeFormattingOff_CSharp_ReturnsNull() { @@ -163,7 +122,7 @@ public async Task Handle_OnTypeFormattingOff_CSharp_ReturnsNull() var @params = new VSInternalDocumentOnAutoInsertParams() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, - Position = VsLspFactory.CreatePosition(1, 3), + Position = LspFactory.CreatePosition(1, 3), Character = "/", Options = new FormattingOptions { diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/PreferHtmlInAttributeValuesDocumentPositionInfoStrategyTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/PreferHtmlInAttributeValuesDocumentPositionInfoStrategyTest.cs index c06d4ba3492..220f0e9d21f 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/PreferHtmlInAttributeValuesDocumentPositionInfoStrategyTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/PreferHtmlInAttributeValuesDocumentPositionInfoStrategyTest.cs @@ -7,7 +7,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/RazorOnAutoInsertProviderTestBase.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/RazorOnAutoInsertProviderTestBase.cs index b3a96fc94a8..9d37fe48057 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/RazorOnAutoInsertProviderTestBase.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/AutoInsert/RazorOnAutoInsertProviderTestBase.cs @@ -1,31 +1,28 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -#nullable disable - using System; -using System.Collections.Generic; +using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.AutoInsert; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; namespace Microsoft.AspNetCore.Razor.LanguageServer.AutoInsert; -public abstract class RazorOnAutoInsertProviderTestBase : LanguageServerTestBase +public abstract class RazorOnAutoInsertProviderTestBase(ITestOutputHelper testOutput) : LanguageServerTestBase(testOutput) { - protected RazorOnAutoInsertProviderTestBase(ITestOutputHelper testOutput) - : base(testOutput) - { - } + private protected abstract IOnAutoInsertProvider CreateProvider(); - internal abstract IOnAutoInsertProvider CreateProvider(); - - protected void RunAutoInsertTest(string input, string expected, int tabSize = 4, bool insertSpaces = true, bool enableAutoClosingTags = true, string fileKind = default, IReadOnlyList tagHelpers = default) + protected void RunAutoInsertTest( + string input, + string expected, + bool enableAutoClosingTags = true, + RazorFileKind? fileKind = null, + ImmutableArray tagHelpers = default) { // Arrange TestFileMarkupParser.GetPosition(input, out input, out var location); @@ -35,7 +32,7 @@ protected void RunAutoInsertTest(string input, string expected, int tabSize = 4, var path = "file:///path/to/document.razor"; var uri = new Uri(path); - var codeDocument = CreateCodeDocument(source, uri.AbsolutePath, tagHelpers, fileKind: fileKind); + var codeDocument = CreateCodeDocument(source, uri.AbsolutePath, tagHelpers, fileKind); var provider = CreateProvider(); @@ -54,10 +51,15 @@ private static SourceText ApplyEdit(SourceText source, TextEdit edit) return source.WithChanges(change); } - private static RazorCodeDocument CreateCodeDocument(SourceText text, string path, IReadOnlyList tagHelpers = null, string fileKind = default) + private static RazorCodeDocument CreateCodeDocument( + SourceText text, + string path, + ImmutableArray tagHelpers, + RazorFileKind? fileKind = null) { - fileKind ??= FileKinds.Component; - tagHelpers ??= Array.Empty(); + var fileKindValue = fileKind ?? RazorFileKind.Component; + tagHelpers = tagHelpers.NullToEmpty(); + var sourceDocument = RazorSourceDocument.Create(text, RazorSourceDocumentProperties.Create(path, path)); var projectEngine = RazorProjectEngine.Create(builder => { @@ -66,7 +68,7 @@ private static RazorCodeDocument CreateCodeDocument(SourceText text, string path builder.UseRoslynTokenizer = true; }); }); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKind, importSources: default, tagHelpers); - return codeDocument; + + return projectEngine.ProcessDesignTime(sourceDocument, fileKindValue, importSources: default, tagHelpers); } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/AddUsingsCodeActionResolverTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/AddUsingsCodeActionResolverTest.cs index cce5dfa75de..8f7dca3bc6a 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/AddUsingsCodeActionResolverTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/AddUsingsCodeActionResolverTest.cs @@ -11,7 +11,6 @@ using Microsoft.CodeAnalysis.Razor.CodeActions; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.Formatting; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -61,29 +60,6 @@ public void TryCreateAddUsingResolutionParams_CreatesResolutionParams() Assert.NotNull(resolutionParams); } - [Fact] - public async Task Handle_Unsupported() - { - // Arrange - var documentPath = new Uri("c:/Test.razor"); - var contents = "@page \"/test\""; - var codeDocument = CreateCodeDocument(contents); - codeDocument.SetUnsupported(); - - var documentContext = CreateDocumentContext(documentPath, codeDocument); - var resolver = new AddUsingsCodeActionResolver(); - var data = JsonSerializer.SerializeToElement(new AddUsingsCodeActionParams() - { - Namespace = "System", - }); - - // Act - var workspaceEdit = await resolver.ResolveAsync(documentContext, data, new RazorFormattingOptions(), DisposalToken); - - // Assert - Assert.Null(workspaceEdit); - } - [Fact] public async Task Handle_AddOneUsingToEmpty() { @@ -112,11 +88,11 @@ public async Task Handle_AddOneUsingToEmpty() Assert.True(addUsingsChange.TryGetFirst(out var textDocumentEdit)); Assert.Single(textDocumentEdit.Edits); var firstEdit = textDocumentEdit.Edits.First(); - Assert.Equal(0, firstEdit.Range.Start.Line); + Assert.Equal(0, ((TextEdit)firstEdit).Range.Start.Line); Assert.Equal(""" @using System - """, firstEdit.NewText); + """, ((TextEdit)firstEdit).NewText); } [Fact] @@ -149,11 +125,11 @@ public async Task Handle_AddOneUsingToComponentPageDirective() var addUsingsChange = workspaceEdit.DocumentChanges.Value.First(); Assert.True(addUsingsChange.TryGetFirst(out var textDocumentEdit)); var firstEdit = Assert.Single(textDocumentEdit.Edits); - Assert.Equal(1, firstEdit.Range.Start.Line); + Assert.Equal(1, ((TextEdit)firstEdit).Range.Start.Line); Assert.Equal(""" @using System - """, firstEdit.NewText); + """, ((TextEdit)firstEdit).NewText); } [Fact] @@ -170,7 +146,7 @@ @model IndexModel filePath: "c:/Test.cshtml", physicalPath: "c:/Test.cshtml", relativePhysicalPath: "Test.cshtml", - fileKind: FileKinds.Legacy) + fileKind: RazorFileKind.Legacy) { Content = contents }; @@ -202,11 +178,11 @@ @model IndexModel var addUsingsChange = workspaceEdit.DocumentChanges.Value.First(); Assert.True(addUsingsChange.TryGetFirst(out var textDocumentEdit)); var firstEdit = Assert.Single(textDocumentEdit.Edits); - Assert.Equal(1, firstEdit.Range.Start.Line); + Assert.Equal(1, ((TextEdit)firstEdit).Range.Start.Line); Assert.Equal(""" @using System - """, firstEdit.NewText); + """, ((TextEdit)firstEdit).NewText); } [Fact] @@ -241,11 +217,11 @@ public async Task Handle_AddOneUsingToHTML() var addUsingsChange = workspaceEdit.DocumentChanges.Value.First(); Assert.True(addUsingsChange.TryGetFirst(out var textDocumentEdit)); var firstEdit = Assert.Single(textDocumentEdit.Edits); - Assert.Equal(0, firstEdit.Range.Start.Line); + Assert.Equal(0, ((TextEdit)firstEdit).Range.Start.Line); Assert.Equal(""" @using System - """, firstEdit.NewText); + """, ((TextEdit)firstEdit).NewText); } [Fact] @@ -278,11 +254,11 @@ @namespace Testing var addUsingsChange = workspaceEdit.DocumentChanges.Value.First(); Assert.True(addUsingsChange.TryGetFirst(out var textDocumentEdit)); var firstEdit = Assert.Single(textDocumentEdit.Edits); - Assert.Equal(1, firstEdit.Range.Start.Line); + Assert.Equal(1, ((TextEdit)firstEdit).Range.Start.Line); Assert.Equal(""" @using System - """, firstEdit.NewText); + """, ((TextEdit)firstEdit).NewText); } [Fact] @@ -316,11 +292,11 @@ @namespace Testing var addUsingsChange = workspaceEdit.DocumentChanges.Value.First(); Assert.True(addUsingsChange.TryGetFirst(out var textDocumentEdit)); var firstEdit = Assert.Single(textDocumentEdit.Edits); - Assert.Equal(2, firstEdit.Range.Start.Line); + Assert.Equal(2, ((TextEdit)firstEdit).Range.Start.Line); Assert.Equal(""" @using System - """, firstEdit.NewText); + """, ((TextEdit)firstEdit).NewText); } [Fact] @@ -350,11 +326,11 @@ public async Task Handle_AddOneUsingToUsings() var addUsingsChange = workspaceEdit.DocumentChanges.Value.First(); Assert.True(addUsingsChange.TryGetFirst(out var textDocumentEdit)); var firstEdit = Assert.Single(textDocumentEdit.Edits); - Assert.Equal(1, firstEdit.Range.Start.Line); + Assert.Equal(1, ((TextEdit)firstEdit).Range.Start.Line); Assert.Equal(""" @using System.Linq - """, firstEdit.NewText); + """, ((TextEdit)firstEdit).NewText); } [Fact] @@ -388,11 +364,11 @@ @using System.Linq var addUsingsChange = workspaceEdit.DocumentChanges.Value.First(); Assert.True(addUsingsChange.TryGetFirst(out var textDocumentEdit)); var firstEdit = Assert.Single(textDocumentEdit.Edits); - Assert.Equal(2, firstEdit.Range.Start.Line); + Assert.Equal(2, ((TextEdit)firstEdit).Range.Start.Line); Assert.Equal(""" @using Microsoft.AspNetCore.Razor.Language - """, firstEdit.NewText); + """, ((TextEdit)firstEdit).NewText); } private static RazorCodeDocument CreateCodeDocument(string text) @@ -403,7 +379,7 @@ private static RazorCodeDocument CreateCodeDocument(string text) filePath, physicalPath: filePath, relativePhysicalPath: fileName, - fileKind: FileKinds.Component) + fileKind: RazorFileKind.Component) { Content = text }; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/CSharpCodeActionProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/CSharpCodeActionProviderTest.cs index acdba8a76fc..82e86862328 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/CSharpCodeActionProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/CSharpCodeActionProviderTest.cs @@ -9,16 +9,15 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.Razor.CodeActions; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; using Microsoft.CodeAnalysis.Testing; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -55,7 +54,7 @@ public async Task ProvideAsync_ValidCodeActions_ReturnsProvidedCodeAction() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -84,7 +83,7 @@ public async Task ProvideAsync_SupportsCodeActionResolveFalse_ValidCodeActions_R var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -110,7 +109,7 @@ public async Task ProvideAsync_FunctionsBlock_SingleLine_ValidCodeActions_Return var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -141,7 +140,7 @@ public async Task ProvideAsync_FunctionsBlock_OpenBraceSameLine_ValidCodeActions var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -173,7 +172,7 @@ public async Task ProvideAsync_FunctionsBlock_OpenBraceNextLine_ValidCodeActions var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -202,7 +201,7 @@ public async Task ProvideAsync_InvalidCodeActions_ReturnsNoCodeActions() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -237,7 +236,7 @@ public async Task ProvideAsync_InvalidCodeActions_ShowAllFeatureFlagOn_ReturnsCo var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -281,7 +280,7 @@ public async Task ProvideAsync_ImplicitExpression_ReturnsProvidedCodeAction() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -320,7 +319,7 @@ private static RazorCodeActionContext CreateRazorCodeActionContext( }); }); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, FileKinds.Legacy, importSources: default, tagHelpers); + var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, RazorFileKind.Legacy, importSources: default, tagHelpers); var csharpDocument = codeDocument.GetCSharpDocument(); var diagnosticDescriptor = new RazorDiagnosticDescriptor("RZ10012", "diagnostic", RazorDiagnosticSeverity.Error); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/CSharpCodeActionResolverTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/CSharpCodeActionResolverTest.cs index 099d816f40b..b9e9c8ad6a9 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/CSharpCodeActionResolverTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/CSharpCodeActionResolverTest.cs @@ -14,7 +14,6 @@ using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -32,13 +31,13 @@ public class CSharpCodeActionResolverTest(ITestOutputHelper testOutput) : Langua DocumentChanges = new TextDocumentEdit[] { new() { - Edits = [VsLspFactory.CreateTextEdit(position: (0, 0), "Generated C# Based Edit")] + Edits = [LspFactory.CreateTextEdit(position: (0, 0), "Generated C# Based Edit")] } } } }; - private static readonly TextEdit s_defaultFormattedEdit = VsLspFactory.CreateTextEdit(position: (0, 0), "Remapped & Formatted Edit"); + private static readonly TextEdit s_defaultFormattedEdit = LspFactory.CreateTextEdit(position: (0, 0), "Remapped & Formatted Edit"); private static readonly TextChange s_defaultFormattedChange = new TextChange(new TextSpan(0, 0), s_defaultFormattedEdit.NewText); [Fact] @@ -57,7 +56,7 @@ public async Task ResolveAsync_ReturnsResolvedCodeAction() Assert.Equal(1, returnedCodeAction.Edit.DocumentChanges.Value.Count()); var returnedEdits = returnedCodeAction.Edit.DocumentChanges.Value; Assert.True(returnedEdits.TryGetFirst(out var textDocumentEdits)); - var returnedTextDocumentEdit = Assert.Single(textDocumentEdits[0].Edits); + var returnedTextDocumentEdit = (TextEdit)Assert.Single(textDocumentEdits[0].Edits); Assert.Equal(s_defaultFormattedEdit.NewText, returnedTextDocumentEdit.NewText); Assert.Equal(s_defaultFormattedEdit.Range, returnedTextDocumentEdit.Range); } @@ -99,11 +98,11 @@ public async Task ResolveAsync_MultipleDocumentChanges_ReturnsOriginalCodeAction { new TextDocumentEdit() { - Edits = [VsLspFactory.CreateTextEdit(position: (0, 0), "1. Generated C# Based Edit")] + Edits = [LspFactory.CreateTextEdit(position: (0, 0), "1. Generated C# Based Edit")] }, new TextDocumentEdit() { - Edits = [VsLspFactory.CreateTextEdit(position: (0, 0), "2. Generated C# Based Edit")] + Edits = [LspFactory.CreateTextEdit(position: (0, 0), "2. Generated C# Based Edit")] } } } @@ -179,7 +178,7 @@ private static RazorCodeDocument CreateCodeDocument(string text, string document { var projectItem = new TestRazorProjectItem( filePath: documentPath, - fileKind: FileKinds.Component) + fileKind: RazorFileKind.Component) { Content = text }; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/TypeAccessibilityCodeActionProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/TypeAccessibilityCodeActionProviderTest.cs index 99329c4be4e..7b60d2a105e 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/TypeAccessibilityCodeActionProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CSharp/TypeAccessibilityCodeActionProviderTest.cs @@ -9,14 +9,13 @@ using Microsoft.AspNetCore.Mvc.Razor.Extensions; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Components; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.CodeActions; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -34,7 +33,7 @@ public async Task Handle_MissingDiagnostics_ReturnsEmpty() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() { // Even though the DTO declares this as non-null, we want to make sure we behave @@ -69,7 +68,7 @@ public async Task Handle_InvalidDiagnostics_VSCode_ReturnsEmpty() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() { Diagnostics = new Diagnostic[] { @@ -122,7 +121,7 @@ public async Task Handle_EmptyCodeActions_ReturnsEmpty() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() { Diagnostics = new Diagnostic[] { @@ -160,7 +159,7 @@ public async Task Handle_ValidDiagnostic_ValidCodeAction_VSCode_ReturnsCodeActio var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() { Diagnostics = new Diagnostic[] { @@ -173,7 +172,7 @@ public async Task Handle_ValidDiagnostic_ValidCodeAction_VSCode_ReturnsCodeActio { Severity = DiagnosticSeverity.Error, Code = errorCode, - Range = VsLspFactory.CreateRange(0, 8, 0, 12) + Range = LspFactory.CreateRange(0, 8, 0, 12) }, new Diagnostic() { @@ -234,7 +233,7 @@ public async Task Handle_CodeActionInSingleLineDirective_VS_ReturnsOnlyUsingCode var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() { Diagnostics = Array.Empty() @@ -284,7 +283,7 @@ public async Task Handle_ValidCodeAction_VS_ReturnsCodeActions() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() { Diagnostics = Array.Empty() @@ -340,7 +339,7 @@ public async Task Handle_ValidDiagnostic_MultipleValidCodeActions_VSCode_Returns var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() { Diagnostics = new Diagnostic[] { @@ -353,7 +352,7 @@ public async Task Handle_ValidDiagnostic_MultipleValidCodeActions_VSCode_Returns { Severity = DiagnosticSeverity.Error, Code = "CS0246", - Range = VsLspFactory.CreateRange(0, 8, 0, 12) + Range = LspFactory.CreateRange(0, 8, 0, 12) }, new Diagnostic() { @@ -447,7 +446,7 @@ private static RazorCodeActionContext CreateRazorCodeActionContext( }); }); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, FileKinds.Legacy, importSources: default, tagHelpers); + var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, RazorFileKind.Legacy, importSources: default, tagHelpers); var csharpDocument = codeDocument.GetCSharpDocument(); var diagnosticDescriptor = new RazorDiagnosticDescriptor("RZ10012", "diagnostic", RazorDiagnosticSeverity.Error); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndToEndTest.NetFx.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndToEndTest.NetFx.cs index 71aecf63172..f0f8ce468b4 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndToEndTest.NetFx.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndToEndTest.NetFx.cs @@ -11,7 +11,8 @@ using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Testing; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.CodeAnalysis.Text; +using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndToEndTestBase.NetFx.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndToEndTestBase.NetFx.cs index e26464d99ea..67f56d6035a 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndToEndTestBase.NetFx.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndToEndTestBase.NetFx.cs @@ -12,20 +12,19 @@ using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts; using Microsoft.AspNetCore.Razor.LanguageServer.Formatting; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.CodeActions; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.CodeActions.Razor; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; +using Microsoft.CodeAnalysis.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; @@ -95,11 +94,11 @@ internal async Task ValidateCodeBehindFileAsync( { if (FilePathNormalizer.Normalize(change.TextDocument.Uri.GetAbsoluteOrUNCPath()) == codeBehindFilePath) { - codeBehindEdits.AddRange(change.Edits.Select(codeBehindSourceText.GetTextChange)); + codeBehindEdits.AddRange(change.Edits.Select(e => codeBehindSourceText.GetTextChange((TextEdit)e))); } else { - razorEdits.AddRange(change.Edits.Select(razorSourceText.GetTextChange)); + razorEdits.AddRange(change.Edits.Select(e => razorSourceText.GetTextChange((TextEdit)e))); } } @@ -182,7 +181,7 @@ internal async Task ValidateCodeActionAsync( var edits = new List(); foreach (var change in changes) { - edits.AddRange(change.Edits.Select(sourceText.GetTextChange)); + edits.AddRange(change.Edits.Select(e => sourceText.GetTextChange((TextEdit)e))); } var actual = sourceText.WithChanges(edits).ToString(); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndpointTest.cs index e725a30c995..1e60e35b687 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionEndpointTest.cs @@ -11,7 +11,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.CodeActions; @@ -19,9 +18,9 @@ using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -42,7 +41,7 @@ public async Task Handle_NoDocument() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -55,32 +54,6 @@ public async Task Handle_NoDocument() Assert.Null(commandOrCodeActionContainer); } - [Fact] - public async Task Handle_UnsupportedDocument() - { - // Arrange - var documentPath = new Uri("C:/path/to/Page.razor"); - var codeDocument = CreateCodeDocument("@code {}"); - var documentContext = CreateDocumentContext(documentPath, codeDocument); - codeDocument.SetUnsupported(); - var codeActionEndpoint = CreateEndpoint(); - - var request = new VSCodeActionParams() - { - TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), - Context = new VSInternalCodeActionContext() - }; - - var requestContext = CreateRazorRequestContext(documentContext); - - // Act - var commandOrCodeActionContainer = await codeActionEndpoint.HandleRequestAsync(request, requestContext, DisposalToken); - - // Assert - Assert.Null(commandOrCodeActionContainer); - } - [Fact] public async Task Handle_NoProviders() { @@ -93,7 +66,7 @@ public async Task Handle_NoProviders() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -119,7 +92,7 @@ public async Task Handle_OneRazorCodeActionProvider() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -149,7 +122,7 @@ public async Task Handle_OneCSharpCodeActionProvider() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -175,7 +148,7 @@ public async Task Handle_OneCodeActionProviderWithMultipleCodeActions() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -211,7 +184,7 @@ public async Task Handle_MultipleCodeActionProvidersWithMultipleCodeActions() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; var requestContext = CreateRazorRequestContext(documentContext); @@ -246,7 +219,7 @@ public async Task Handle_MultipleProviders() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -272,7 +245,7 @@ public async Task Handle_OneNullReturningProvider() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -309,7 +282,7 @@ public async Task Handle_MultipleMixedProvider() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -341,7 +314,7 @@ public async Task Handle_MultipleMixedProvider_SupportsCodeActionResolveTrue() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -383,7 +356,7 @@ public async Task Handle_MixedProvider_SupportsCodeActionResolveTrue_UsesGroups( var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -426,7 +399,7 @@ public async Task Handle_MultipleMixedProvider_SupportsCodeActionResolveFalse() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -461,7 +434,7 @@ public async Task GetCSharpCodeActionsFromLanguageServerAsync_InvalidRangeMappin var (endpoint, _) = CreateEndpointAndService(csharpCodeActionProviders: [CreateCSharpCodeActionProvider()]); - var initialRange = VsLspFactory.CreateZeroWidthRange(0, 1); + var initialRange = LspFactory.CreateZeroWidthRange(0, 1); var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, @@ -483,14 +456,14 @@ public async Task GetCSharpCodeActionsFromLanguageServerAsync_ReturnsCodeActions var documentPath = new Uri("C:/path/to/Page.razor"); var codeDocument = CreateCodeDocument("@code {}"); var documentContext = CreateDocumentContext(documentPath, codeDocument); - var projectedRange = VsLspFactory.CreateZeroWidthRange(15, 2); + var projectedRange = LspFactory.CreateZeroWidthRange(15, 2); var (endpoint, _) = CreateEndpointAndService( documentMappingService: CreateDocumentMappingService(projectedRange.ToLinePositionSpan()), csharpCodeActionProviders: [CreateCSharpCodeActionProvider()], clientConnection: TestClientConnection.Instance); - var initialRange = VsLspFactory.CreateZeroWidthRange(0, 1); + var initialRange = LspFactory.CreateZeroWidthRange(0, 1); var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = documentPath }, @@ -588,7 +561,7 @@ private static RazorCodeDocument CreateCodeDocument(string text) var sourceDocument = TestRazorSourceDocument.Create(text); var projectEngine = RazorProjectEngine.Create(builder => { }); - return projectEngine.ProcessDesignTime(sourceDocument, "mvc", importSources: [], tagHelpers: []); + return projectEngine.ProcessDesignTime(sourceDocument, RazorFileKind.Legacy, importSources: [], tagHelpers: []); } private static IRazorCodeActionProvider CreateEmptyRazorCodeActionProvider() diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionResolutionEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionResolutionEndpointTest.cs index 20cad36827a..b5ca32e4afc 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionResolutionEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/CodeActionResolutionEndpointTest.cs @@ -13,7 +13,7 @@ using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Moq; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Html/HtmlCodeActionProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Html/HtmlCodeActionProviderTest.cs index 4fb829b6405..8534b9a62e9 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Html/HtmlCodeActionProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Html/HtmlCodeActionProviderTest.cs @@ -7,16 +7,15 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.CodeActions; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.DocumentMapping; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; using Microsoft.CodeAnalysis.Testing; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -36,7 +35,7 @@ public async Task ProvideAsync_WrapsResolvableCodeActions() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -67,7 +66,7 @@ public async Task ProvideAsync_RemapsAndFixesEdits() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -82,7 +81,7 @@ public async Task ProvideAsync_RemapsAndFixesEdits() { Uri = new Uri(documentPath), }, - Edits = [VsLspFactory.CreateTextEdit(context.SourceText.GetRange(span), "Goo /*~~~~~~~~~~~*/ Bar")] + Edits = [LspFactory.CreateTextEdit(context.SourceText.GetRange(span), "Goo /*~~~~~~~~~~~*/ Bar")] } } }; @@ -108,7 +107,7 @@ public async Task ProvideAsync_RemapsAndFixesEdits() { Uri = new Uri("c:/Test.razor.html"), }, - Edits = [VsLspFactory.CreateTextEdit(position: (0, 0), "Goo")] + Edits = [LspFactory.CreateTextEdit(position: (0, 0), "Goo")] } } } @@ -127,11 +126,11 @@ public async Task ProvideAsync_RemapsAndFixesEdits() Assert.Collection(documentEdits[0].Edits, e => { - Assert.Equal("", e.NewText); + Assert.Equal("", ((TextEdit)e).NewText); }, e => { - Assert.Equal("", e.NewText); + Assert.Equal("", ((TextEdit)e).NewText); }); } @@ -154,7 +153,7 @@ private static RazorCodeActionContext CreateRazorCodeActionContext( builder.UseRoslynTokenizer = true; }); }); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, FileKinds.Legacy, importSources: default, tagHelpers); + var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, RazorFileKind.Legacy, importSources: default, tagHelpers); var documentSnapshotMock = new StrictMock(); documentSnapshotMock diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Html/HtmlCodeActionResolverTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Html/HtmlCodeActionResolverTest.cs index 33a4fe0d171..84eb020f00c 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Html/HtmlCodeActionResolverTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Html/HtmlCodeActionResolverTest.cs @@ -4,7 +4,7 @@ using System; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.CodeActions; @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Testing; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -42,7 +41,7 @@ public async Task ResolveAsync_RemapsAndFixesEdits() { Uri = documentUri, }, - Edits = [VsLspFactory.CreateTextEdit(sourceText.GetRange(span), "Goo /*~~~~~~~~~~~*/ Bar")] + Edits = [LspFactory.CreateTextEdit(sourceText.GetRange(span), "Goo /*~~~~~~~~~~~*/ Bar")] } } }; @@ -72,7 +71,7 @@ public async Task ResolveAsync_RemapsAndFixesEdits() { Uri = new Uri("c:/Test.razor.html"), }, - Edits = [VsLspFactory.CreateTextEdit(position: (0, 0), "Goo")] + Edits = [LspFactory.CreateTextEdit(position: (0, 0), "Goo")] } } } @@ -89,11 +88,11 @@ public async Task ResolveAsync_RemapsAndFixesEdits() Assert.Collection(documentEdits[0].Edits, e => { - Assert.Equal("", e.NewText); + Assert.Equal("", ((TextEdit)e).NewText); }, e => { - Assert.Equal("", e.NewText); + Assert.Equal("", ((TextEdit)e).NewText); }); } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ComponentAccessibilityCodeActionProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ComponentAccessibilityCodeActionProviderTest.cs index 1f2d95ff8f4..4290bd3e568 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ComponentAccessibilityCodeActionProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ComponentAccessibilityCodeActionProviderTest.cs @@ -7,15 +7,14 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Components; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.CodeActions; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Testing; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -37,7 +36,7 @@ public async Task Handle_NoTagName_DoesNotProvideLightBulb() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), Context = new VSInternalCodeActionContext() }; @@ -65,7 +64,7 @@ public async Task Handle_InvalidSyntaxTree_NoStartNode() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -75,7 +74,7 @@ public async Task Handle_InvalidSyntaxTree_NoStartNode() documentPath, contents, new SourceSpan(0, 0), - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); var provider = new ComponentAccessibilityCodeActionProvider(new FileSystem()); @@ -99,7 +98,7 @@ public async Task Handle_CursorOutsideComponent() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -127,7 +126,7 @@ public async Task Handle_ExistingComponent_SupportsFileCreationTrue_ReturnsResul var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -174,7 +173,7 @@ public async Task Handle_ExistingComponent_CaseIncorrect_ReturnsResults() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -223,7 +222,7 @@ @using Fully.Qualified var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -264,7 +263,7 @@ public async Task Handle_ExistingGenericComponent_SupportsFileCreationTrue_Retur var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -311,7 +310,7 @@ public async Task Handle_NewComponent_SupportsFileCreationTrue_ReturnsResult() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -341,7 +340,7 @@ public async Task Handle_NewComponent_CaretInAttribute_ReturnsResult() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -371,7 +370,7 @@ public async Task Handle_NewComponent_SupportsFileCreationFalse_ReturnsEmpty() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -399,7 +398,7 @@ public async Task Handle_ExistingComponent_SupportsFileCreationFalse_ReturnsResu var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -433,7 +432,7 @@ private static RazorCodeActionContext CreateRazorCodeActionContext( string filePath, string text, SourceSpan componentSourceSpan, - string? fileKind = null, + RazorFileKind? fileKind = null, bool supportsFileCreation = true) { var shortComponent = TagHelperDescriptorBuilder.Create(ComponentMetadata.Component.TagHelperKind, "Fully.Qualified.Component", "TestAssembly"); @@ -467,9 +466,9 @@ private static RazorCodeActionContext CreateRazorCodeActionContext( }); }); - fileKind ??= FileKinds.Component; + var fileKindValue = fileKind ?? RazorFileKind.Component; - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKind, importSources: default, tagHelpers); + var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKindValue, importSources: default, tagHelpers); var csharpDocument = codeDocument.GetCSharpDocument(); var diagnosticDescriptor = new RazorDiagnosticDescriptor("RZ10012", "diagnostic", RazorDiagnosticSeverity.Error); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/CreateComponentCodeActionResolverTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/CreateComponentCodeActionResolverTest.cs index 43fe23af39e..d9e5e05f4d3 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/CreateComponentCodeActionResolverTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/CreateComponentCodeActionResolverTest.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.CodeActions; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.Formatting; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -20,36 +19,13 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.CodeActions; public class CreateComponentCodeActionResolverTest(ITestOutputHelper testOutput) : LanguageServerTestBase(testOutput) { - [Fact] - public async Task Handle_Unsupported() - { - // Arrange - var documentPath = new Uri("c:/Test.razor"); - var contents = $"@page \"/test\""; - var codeDocument = CreateCodeDocument(contents); - codeDocument.SetUnsupported(); - - var documentContext = CreateDocumentContext(documentPath, codeDocument); - var resolver = new CreateComponentCodeActionResolver(TestLanguageServerFeatureOptions.Instance); - var data = JsonSerializer.SerializeToElement(new CreateComponentCodeActionParams() - { - Path = "c:/Another.razor", - }); - - // Act - var workspaceEdit = await resolver.ResolveAsync(documentContext, data, new RazorFormattingOptions(), DisposalToken); - - // Assert - Assert.Null(workspaceEdit); - } - [Fact] public async Task Handle_InvalidFileKind() { // Arrange var documentPath = new Uri("c:/Test.razor"); var contents = $"@page \"/test\""; - var codeDocument = CreateCodeDocument(contents, fileKind: FileKinds.Legacy); + var codeDocument = CreateCodeDocument(contents, fileKind: RazorFileKind.Legacy); var documentContext = CreateDocumentContext(documentPath, codeDocument); var resolver = new CreateComponentCodeActionResolver(TestLanguageServerFeatureOptions.Instance); @@ -125,18 +101,16 @@ @namespace Another.Namespace var editNewComponentChange = workspaceEdit.DocumentChanges.Value.Last(); var editNewComponentEdit = editNewComponentChange.First.Edits.First(); - Assert.Contains("@namespace Another.Namespace", editNewComponentEdit.NewText, StringComparison.Ordinal); + Assert.Contains("@namespace Another.Namespace", ((TextEdit)editNewComponentEdit).NewText, StringComparison.Ordinal); } - private static RazorCodeDocument CreateCodeDocument(string text, string? fileKind = null) + private static RazorCodeDocument CreateCodeDocument(string text, RazorFileKind? fileKind = null) { - fileKind ??= FileKinds.Component; - var projectItem = new TestRazorProjectItem( filePath: "c:/Test.razor", physicalPath: "c:/Test.razor", relativePhysicalPath: "Test.razor", - fileKind: fileKind) + fileKind: fileKind ?? RazorFileKind.Component) { Content = text }; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToCodeBehindCodeActionProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToCodeBehindCodeActionProviderTest.cs index c752f645d52..b541171d332 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToCodeBehindCodeActionProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToCodeBehindCodeActionProviderTest.cs @@ -10,16 +10,15 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Components; using Microsoft.AspNetCore.Razor.Language.Extensions; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.CodeActions; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -42,11 +41,11 @@ public async Task Handle_InvalidFileKind() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; - var context = CreateRazorCodeActionContext(request, cursorPosition, documentPath, contents, fileKind: FileKinds.Legacy); + var context = CreateRazorCodeActionContext(request, cursorPosition, documentPath, contents, fileKind: RazorFileKind.Legacy); var provider = new ExtractToCodeBehindCodeActionProvider(LoggerFactory); @@ -71,7 +70,7 @@ public async Task Handle_OutsideCodeDirective() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -100,7 +99,7 @@ public async Task Handle_InCodeDirectiveBlock_ReturnsNull() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -129,7 +128,7 @@ public async Task Handle_InCodeDirectiveMalformed_ReturnsNull() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -163,7 +162,7 @@ void Test() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -203,7 +202,7 @@ public async Task Handle_InCodeDirective_SupportsFileCreationTrue_ReturnsResult( var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -245,7 +244,7 @@ public async Task Handle_AtEndOfCodeDirectiveWithNoSpace_ReturnsResult() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -281,7 +280,7 @@ public async Task Handle_InCodeDirective_SupportsFileCreationFalse_ReturnsNull() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -316,7 +315,7 @@ public async Task Handle_InFunctionsDirective_SupportsFileCreationTrue_ReturnsRe var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; @@ -352,7 +351,7 @@ public async Task Handle_NullRelativePath_ReturnsNull() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = null! }; @@ -372,7 +371,7 @@ private static RazorCodeActionContext CreateRazorCodeActionContext( int absoluteIndex, string filePath, string text, - string? fileKind = null, + RazorFileKind? fileKind = null, bool supportsFileCreation = true) => CreateRazorCodeActionContext( request, absoluteIndex, filePath, text, relativePath: filePath, fileKind, supportsFileCreation: supportsFileCreation); @@ -383,16 +382,16 @@ private static RazorCodeActionContext CreateRazorCodeActionContext( string filePath, string text, string? relativePath, - string? fileKind = null, + RazorFileKind? fileKind = null, bool supportsFileCreation = true) { var source = RazorSourceDocument.Create(text, RazorSourceDocumentProperties.Create(filePath, relativePath)); - fileKind ??= FileKinds.Component; + var fileKindValue = fileKind ?? RazorFileKind.Component; var codeDocument = RazorCodeDocument.Create( source, - parserOptions: RazorParserOptions.Create(RazorLanguageVersion.Latest, fileKind, builder => + parserOptions: RazorParserOptions.Create(RazorLanguageVersion.Latest, fileKindValue, builder => { builder.Directives = [ComponentCodeDirective.Directive, FunctionsDirective.Directive]; }), diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToCodeBehindCodeActionResolverTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToCodeBehindCodeActionResolverTest.cs index 5795fc6a815..0f0e11df9a6 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToCodeBehindCodeActionResolverTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToCodeBehindCodeActionResolverTest.cs @@ -16,7 +16,6 @@ using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; @@ -30,30 +29,6 @@ public class ExtractToCodeBehindCodeActionResolverTest(ITestOutputHelper testOut [CustomMessageNames.RazorFormatNewFileEndpointName] = c => Task.FromResult(null!), }); - [Fact] - public async Task Handle_Unsupported() - { - // Arrange - var documentPath = new Uri("c:\\Test.razor"); - var contents = """ - @page "/test" - @code { private int x = 1; } - """; - var codeDocument = CreateCodeDocument(contents); - codeDocument.SetUnsupported(); - - var documentContext = CreateDocumentContext(documentPath, codeDocument); - var roslynCodeActionHelpers = new RoslynCodeActionHelpers(_languageServer); - var resolver = new ExtractToCodeBehindCodeActionResolver(TestLanguageServerFeatureOptions.Instance, roslynCodeActionHelpers); - var data = JsonSerializer.SerializeToElement(CreateExtractToCodeBehindCodeActionParams(contents, "@code", "Test")); - - // Act - var workspaceEdit = await resolver.ResolveAsync(documentContext, data, new RazorFormattingOptions(), DisposalToken); - - // Assert - Assert.Null(workspaceEdit); - } - [Fact] public async Task Handle_InvalidFileKind() { @@ -63,7 +38,7 @@ public async Task Handle_InvalidFileKind() @page "/test" @code { private int x = 1; } """; - var codeDocument = CreateCodeDocument(contents, fileKind: FileKinds.Legacy); + var codeDocument = CreateCodeDocument(contents, fileKind: RazorFileKind.Legacy); var documentContext = CreateDocumentContext(documentPath, codeDocument); var roslynCodeActionHelpers = new RoslynCodeActionHelpers(_languageServer); @@ -114,9 +89,9 @@ public async Task Handle_ExtractCodeBlock() Assert.True(editCodeDocumentChange.TryGetFirst(out var textDocumentEdit1)); var editCodeDocumentEdit = textDocumentEdit1.Edits.First(); var sourceText = codeDocument.Source.Text; - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.Start, out var removeStart)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.Start, out var removeStart)); Assert.Equal(actionParams.RemoveStart, removeStart); - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.End, out var removeEnd)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.End, out var removeEnd)); Assert.Equal(actionParams.RemoveEnd, removeEnd); var editCodeBehindChange = documentChanges[2]; @@ -138,7 +113,7 @@ public partial class Test } } """, - editCodeBehindEdit.NewText); + ((TextEdit)editCodeBehindEdit).NewText); } [Fact] @@ -179,9 +154,9 @@ public async Task Handle_ExtractCodeBlock2() Assert.True(editCodeDocumentChange.TryGetFirst(out var textDocumentEdit1)); var editCodeDocumentEdit = textDocumentEdit1.Edits.First(); var sourceText = codeDocument.Source.Text; - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.Start, out var removeStart)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.Start, out var removeStart)); Assert.Equal(actionParams.RemoveStart, removeStart); - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.End, out var removeEnd)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.End, out var removeEnd)); Assert.Equal(actionParams.RemoveEnd, removeEnd); var editCodeBehindChange = documentChanges[2]; @@ -203,7 +178,7 @@ public partial class Test } } """, - editCodeBehindEdit.NewText); + ((TextEdit)editCodeBehindEdit).NewText); } [Fact] @@ -252,9 +227,9 @@ private void M() Assert.True(editCodeDocumentChange.TryGetFirst(out var textDocumentEdit1)); var editCodeDocumentEdit = textDocumentEdit1.Edits.First(); var sourceText = codeDocument.Source.Text; - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.Start, out var removeStart)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.Start, out var removeStart)); Assert.Equal(actionParams.RemoveStart, removeStart); - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.End, out var removeEnd)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.End, out var removeEnd)); Assert.Equal(actionParams.RemoveEnd, removeEnd); var editCodeBehindChange = documentChanges[2]; @@ -285,7 +260,7 @@ private void M() } } """, - editCodeBehindEdit.NewText); + ((TextEdit)editCodeBehindEdit).NewText); } [Fact] @@ -335,9 +310,9 @@ private void M() Assert.True(editCodeDocumentChange.TryGetFirst(out var textDocumentEdit1)); var editCodeDocumentEdit = textDocumentEdit1.Edits.First(); var sourceText = codeDocument.Source.Text; - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.Start, out var removeStart)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.Start, out var removeStart)); Assert.Equal(actionParams.RemoveStart, removeStart); - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.End, out var removeEnd)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.End, out var removeEnd)); Assert.Equal(actionParams.RemoveEnd, removeEnd); var editCodeBehindChange = documentChanges[2]; @@ -368,7 +343,7 @@ private void M() } } """, - editCodeBehindEdit.NewText); + ((TextEdit)editCodeBehindEdit).NewText); } [Fact] @@ -420,9 +395,9 @@ private void M() Assert.True(editCodeDocumentChange.TryGetFirst(out var textDocumentEdit1)); var editCodeDocumentEdit = textDocumentEdit1.Edits.First(); var sourceText = codeDocument.Source.Text; - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.Start, out var removeStart)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.Start, out var removeStart)); Assert.Equal(actionParams.RemoveStart, removeStart); - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.End, out var removeEnd)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.End, out var removeEnd)); Assert.Equal(actionParams.RemoveEnd, removeEnd); var editCodeBehindChange = documentChanges[2]; @@ -453,7 +428,7 @@ private void M() } } """, - editCodeBehindEdit.NewText); + ((TextEdit)editCodeBehindEdit).NewText); } [Fact] @@ -493,9 +468,9 @@ public async Task Handle_ExtractFunctionsBlock() Assert.True(editCodeDocumentChange.TryGetFirst(out var editCodeDocument)); var editCodeDocumentEdit = editCodeDocument.Edits.First(); var sourceText = codeDocument.Source.Text; - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.Start, out var removeStart)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.Start, out var removeStart)); Assert.Equal(actionParams.RemoveStart, removeStart); - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.End, out var removeEnd)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.End, out var removeEnd)); Assert.Equal(actionParams.RemoveEnd, removeEnd); var editCodeBehindChange = documentChanges[2]; @@ -517,7 +492,7 @@ public partial class Test } } """, - editCodeBehindEdit.NewText); + ((TextEdit)editCodeBehindEdit).NewText); } [Fact] @@ -558,9 +533,9 @@ @using System.Diagnostics Assert.True(editCodeDocumentChange.TryGetFirst(out var editCodeDocument)); var editCodeDocumentEdit = editCodeDocument.Edits.First(); var sourceText = codeDocument.Source.Text; - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.Start, out var removeStart)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.Start, out var removeStart)); Assert.Equal(actionParams.RemoveStart, removeStart); - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.End, out var removeEnd)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.End, out var removeEnd)); Assert.Equal(actionParams.RemoveEnd, removeEnd); var editCodeBehindChange = documentChanges[2]; @@ -583,7 +558,7 @@ public partial class Test } } """, - editCodeBehindEdit.NewText); + ((TextEdit)editCodeBehindEdit).NewText); } [Fact] @@ -625,9 +600,9 @@ public async Task Handle_ExtractCodeBlockWithDirectives() Assert.True(editCodeDocumentChange.TryGetFirst(out var textDocumentEdit1)); var editCodeDocumentEdit = textDocumentEdit1.Edits.First(); var sourceText = codeDocument.Source.Text; - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.Start, out var removeStart)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.Start, out var removeStart)); Assert.Equal(actionParams.RemoveStart, removeStart); - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.End, out var removeEnd)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.End, out var removeEnd)); Assert.Equal(actionParams.RemoveEnd, removeEnd); var editCodeBehindChange = documentChanges[2]; @@ -651,7 +626,7 @@ public partial class Test } } """, - editCodeBehindEdit.NewText); + ((TextEdit)editCodeBehindEdit).NewText); } [Fact] @@ -696,9 +671,9 @@ public async Task Handle_ExtractCodeBlock_CallsRoslyn() Assert.True(editCodeDocumentChange.TryGetFirst(out var textDocumentEdit1)); var editCodeDocumentEdit = textDocumentEdit1.Edits.First(); var sourceText = codeDocument.Source.Text; - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.Start, out var removeStart)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.Start, out var removeStart)); Assert.Equal(actionParams.RemoveStart, removeStart); - Assert.True(sourceText.TryGetAbsoluteIndex(editCodeDocumentEdit.Range.End, out var removeEnd)); + Assert.True(sourceText.TryGetAbsoluteIndex(((TextEdit)editCodeDocumentEdit).Range.End, out var removeEnd)); Assert.Equal(actionParams.RemoveEnd, removeEnd); var editCodeBehindChange = documentChanges[2]; @@ -708,18 +683,16 @@ public async Task Handle_ExtractCodeBlock_CallsRoslyn() AssertEx.EqualOrDiff(""" Hi there! I'm from Roslyn """, - editCodeBehindEdit.NewText); + ((TextEdit)editCodeBehindEdit).NewText); } - private static RazorCodeDocument CreateCodeDocument(string text, string? fileKind = null) + private static RazorCodeDocument CreateCodeDocument(string text, RazorFileKind? fileKind = null) { - fileKind ??= FileKinds.Component; - var projectItem = new TestRazorProjectItem( filePath: "c:/Test.razor", physicalPath: "c:/Test.razor", relativePhysicalPath: "Test.razor", - fileKind: fileKind) + fileKind: fileKind ?? RazorFileKind.Component) { Content = text }; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToComponentCodeActionProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToComponentCodeActionProviderTest.cs index 0c9e0596d90..cd07057cd70 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToComponentCodeActionProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToComponentCodeActionProviderTest.cs @@ -10,17 +10,16 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Components; using Microsoft.AspNetCore.Razor.Language.Extensions; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.CodeActions; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.CodeActions.Razor; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Roslyn.Test.Utilities; using Xunit; @@ -61,11 +60,11 @@ public async Task Handle_InvalidFileKind() var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; - var context = CreateRazorCodeActionContext(request, selectionSpan, documentPath, contents, fileKind: FileKinds.Legacy); + var context = CreateRazorCodeActionContext(request, selectionSpan, documentPath, contents, fileKind: RazorFileKind.Legacy); var provider = new ExtractToComponentCodeActionProvider(); @@ -610,16 +609,16 @@ private static RazorCodeActionContext CreateRazorCodeActionContext( string filePath, string text, string? relativePath = null, - string? fileKind = null, + RazorFileKind? fileKind = null, bool supportsFileCreation = true) { relativePath ??= filePath; - fileKind ??= FileKinds.Component; + var fileKindValue = fileKind ?? RazorFileKind.Component; var source = RazorSourceDocument.Create(text, RazorSourceDocumentProperties.Create(filePath, relativePath)); var codeDocument = RazorCodeDocument.Create( source, - parserOptions: RazorParserOptions.Create(RazorLanguageVersion.Latest, fileKind, builder => + parserOptions: RazorParserOptions.Create(RazorLanguageVersion.Latest, fileKindValue, builder => { builder.Directives = [ComponentCodeDirective.Directive, FunctionsDirective.Directive]; }), @@ -668,14 +667,14 @@ private async Task TestAsync(string contents) var request = new VSCodeActionParams() { TextDocument = new VSTextDocumentIdentifier { Uri = new Uri(documentPath) }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() }; var context = CreateRazorCodeActionContext(request, selectionSpan, documentPath, contents); var lineSpan = context.SourceText.GetLinePositionSpan(selectionSpan); - request.Range = VsLspFactory.CreateRange(lineSpan); + request.Range = LspFactory.CreateRange(lineSpan); var provider = new ExtractToComponentCodeActionProvider(); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToComponentCodeActionResolverTest.NetFx.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToComponentCodeActionResolverTest.NetFx.cs index 6adb4793918..018daf1d74c 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToComponentCodeActionResolverTest.NetFx.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/CodeActions/Razor/ExtractToComponentCodeActionResolverTest.NetFx.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.CodeActions.Razor; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Testing; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; @@ -325,13 +324,13 @@ private async Task TestAsync( ); var edits = changes.Where(change => change.TextDocument.Uri.AbsolutePath == componentFilePath).Single(); - var actual = edits.Edits.Select(edit => edit.NewText).Single(); + var actual = edits.Edits.Select(edit => ((TextEdit)edit).NewText).Single(); AssertEx.EqualOrDiff(expectedNewComponent, actual); var originalDocumentEdits = changes .Where(change => change.TextDocument.Uri.AbsolutePath == razorFilePath) - .SelectMany(change => change.Edits.Select(sourceText.GetTextChange)); + .SelectMany(change => change.Edits.Select(e => sourceText.GetTextChange(((TextEdit)e)))); var documentText = sourceText.WithChanges(originalDocumentEdits).ToString(); AssertEx.EqualOrDiff(expectedOriginalDocument, documentText); } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/CompletionListProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/CompletionListProviderTest.cs index 36243e9d75e..dec7d6f9b75 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/CompletionListProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/CompletionListProviderTest.cs @@ -14,7 +14,6 @@ using Microsoft.CodeAnalysis.Razor.Completion; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -22,8 +21,8 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion; public class CompletionListProviderTest : LanguageServerTestBase { - private readonly VSInternalCompletionList _completionList1; - private readonly VSInternalCompletionList _completionList2; + private readonly RazorVSInternalCompletionList _completionList1; + private readonly RazorVSInternalCompletionList _completionList2; private readonly RazorCompletionListProvider _razorCompletionProvider; private readonly DelegatedCompletionListProvider _delegatedCompletionProvider; private readonly VSInternalCompletionContext _completionContext; @@ -35,8 +34,8 @@ public class CompletionListProviderTest : LanguageServerTestBase public CompletionListProviderTest(ITestOutputHelper testOutput) : base(testOutput) { - _completionList1 = new VSInternalCompletionList() { Items = [] }; - _completionList2 = new VSInternalCompletionList() { Items = [] }; + _completionList1 = new RazorVSInternalCompletionList() { Items = [] }; + _completionList2 = new RazorVSInternalCompletionList() { Items = [] }; _razorCompletionProvider = new TestRazorCompletionListProvider(_completionList1, LoggerFactory); _delegatedCompletionProvider = new TestDelegatedCompletionListProvider(_completionList2); _completionContext = new VSInternalCompletionContext(); @@ -81,15 +80,15 @@ public async Task MultipleCompletionLists_DifferentCommitCharacters_OnlyCallsApp private class TestDelegatedCompletionListProvider : DelegatedCompletionListProvider { - private readonly VSInternalCompletionList _completionList; + private readonly RazorVSInternalCompletionList _completionList; - public TestDelegatedCompletionListProvider(VSInternalCompletionList completionList) + public TestDelegatedCompletionListProvider(RazorVSInternalCompletionList completionList) : base(null, null, null, null) { _completionList = completionList; } - public override ValueTask GetCompletionListAsync( + public override ValueTask GetCompletionListAsync( RazorCodeDocument codeDocument, int absoluteIndex, VSInternalCompletionContext completionContext, @@ -105,17 +104,17 @@ public override ValueTask GetCompletionListAsync( private class TestRazorCompletionListProvider : RazorCompletionListProvider { - private readonly VSInternalCompletionList _completionList; + private readonly RazorVSInternalCompletionList _completionList; public TestRazorCompletionListProvider( - VSInternalCompletionList completionList, + RazorVSInternalCompletionList completionList, ILoggerFactory loggerFactory) : base(completionFactsService: null, completionListCache: null, loggerFactory) { _completionList = completionList; } - public override VSInternalCompletionList GetCompletionList( + public override RazorVSInternalCompletionList GetCompletionList( RazorCodeDocument codeDocument, int absoluteIndex, VSInternalCompletionContext completionContext, diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DelegatedCompletionItemResolverTest.NetFx.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DelegatedCompletionItemResolverTest.NetFx.cs index d99d9e2680f..082b41384b4 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DelegatedCompletionItemResolverTest.NetFx.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DelegatedCompletionItemResolverTest.NetFx.cs @@ -9,17 +9,16 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Formatting; using Microsoft.AspNetCore.Razor.LanguageServer.Hover; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.LanguageServer.Test; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.Completion; using Microsoft.CodeAnalysis.Razor.Formatting; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Tooltip; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Threading; using Xunit; using Xunit.Abstractions; @@ -57,7 +56,7 @@ public DelegatedCompletionItemResolverTest(ITestOutputHelper testOutput) var documentContext = TestDocumentContext.Create("C:/path/to/file.cshtml"); _csharpCompletionParams = new DelegatedCompletionParams( documentContext.GetTextDocumentIdentifierAndVersion(), - VsLspFactory.CreatePosition(10, 6), + LspFactory.CreatePosition(10, 6), RazorLanguageKind.CSharp, new VSInternalCompletionContext(), ProvisionalTextEdit: null, @@ -66,7 +65,7 @@ public DelegatedCompletionItemResolverTest(ITestOutputHelper testOutput) _htmlCompletionParams = new DelegatedCompletionParams( documentContext.GetTextDocumentIdentifierAndVersion(), - VsLspFactory.DefaultPosition, + LspFactory.DefaultPosition, RazorLanguageKind.Html, new VSInternalCompletionContext(), ProvisionalTextEdit: null, @@ -92,7 +91,7 @@ public async Task ResolveAsync_CanNotFindCompletionItem_Noops() var optionsMonitor = TestRazorLSPOptionsMonitor.Create(); var resolver = new DelegatedCompletionItemResolver(_documentContextFactory, _formattingService.GetValue(), optionsMonitor, server); var item = new VSInternalCompletionItem(); - var notContainingCompletionList = new VSInternalCompletionList(); + var notContainingCompletionList = new RazorVSInternalCompletionList() { Items = [] }; var originalRequestContext = StrictMock.Of(); // Act @@ -111,7 +110,7 @@ public async Task ResolveAsync_UnknownRequestContext_Noops() var optionsMonitor = TestRazorLSPOptionsMonitor.Create(); var resolver = new DelegatedCompletionItemResolver(_documentContextFactory, _formattingService.GetValue(), optionsMonitor, server); var item = new VSInternalCompletionItem(); - var containingCompletionList = new VSInternalCompletionList() { Items = [item] }; + var containingCompletionList = new RazorVSInternalCompletionList() { Items = [item] }; var originalRequestContext = StrictMock.Of(); // Act @@ -134,7 +133,7 @@ public async Task ResolveAsync_UsesItemsData() { Data = expectedData, }; - var containingCompletionList = new VSInternalCompletionList() { Items = [item], Data = new object() }; + var containingCompletionList = new RazorVSInternalCompletionList() { Items = [item], Data = new object() }; var originalRequestContext = new DelegatedCompletionResolutionContext(_csharpCompletionParams, new object()); // Act @@ -153,7 +152,7 @@ public async Task ResolveAsync_InheritsOriginalCompletionListData() var optionsMonitor = TestRazorLSPOptionsMonitor.Create(); var resolver = new DelegatedCompletionItemResolver(_documentContextFactory, _formattingService.GetValue(), optionsMonitor, server); var item = new VSInternalCompletionItem(); - var containingCompletionList = new VSInternalCompletionList() { Items = [item], Data = new object() }; + var containingCompletionList = new RazorVSInternalCompletionList() { Items = [item], Data = new object() }; var expectedData = new object(); var originalRequestContext = new DelegatedCompletionResolutionContext(_csharpCompletionParams, expectedData); @@ -217,7 +216,7 @@ public async Task ResolveAsync_Html_Resolves() var optionsMonitor = TestRazorLSPOptionsMonitor.Create(); var resolver = new DelegatedCompletionItemResolver(_documentContextFactory, _formattingService.GetValue(), optionsMonitor, server); var item = new VSInternalCompletionItem(); - var containingCompletionList = new VSInternalCompletionList() { Items = [item] }; + var containingCompletionList = new RazorVSInternalCompletionList() { Items = [item] }; var originalRequestContext = new DelegatedCompletionResolutionContext(_htmlCompletionParams, new object()); // Act @@ -244,7 +243,7 @@ private async Task ResolveCompletionItemAsync(string c cursorPosition, codeDocument, csharpServer); var originalRequestContext = new DelegatedCompletionResolutionContext(csharpCompletionParams, containingCompletionList.Data); - var item = (VSInternalCompletionItem)containingCompletionList.Items.FirstOrDefault(item => item.Label == itemToResolve); + var item = containingCompletionList.Items.FirstOrDefault(item => item.Label == itemToResolve); if (item is null) { @@ -278,7 +277,7 @@ private async Task CreateCSharpServerAsync(RazorCodeDocumen return csharpServer; } - private async Task<(VSInternalCompletionList, DelegatedCompletionParams)> GetCompletionListAndOriginalParamsAsync( + private async Task<(RazorVSInternalCompletionList, DelegatedCompletionParams)> GetCompletionListAndOriginalParamsAsync( int cursorPosition, RazorCodeDocument codeDocument, CSharpTestLspServer csharpServer) diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DelegatedCompletionListProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DelegatedCompletionListProviderTest.cs index e39c30d8148..ec8e5597772 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DelegatedCompletionListProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DelegatedCompletionListProviderTest.cs @@ -16,7 +16,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -63,7 +62,7 @@ await _provider.GetCompletionListAsync( var delegatedParameters = _provider.DelegatedParams; Assert.NotNull(delegatedParameters); Assert.Equal(RazorLanguageKind.Html, delegatedParameters.ProjectedKind); - Assert.Equal(VsLspFactory.CreatePosition(0, 1), delegatedParameters.ProjectedPosition); + Assert.Equal(LspFactory.CreatePosition(0, 1), delegatedParameters.ProjectedPosition); Assert.Equal(CompletionTriggerKind.Invoked, delegatedParameters.Context.TriggerKind); Assert.Equal(1, delegatedParameters.Identifier.Version); Assert.Null(delegatedParameters.ProvisionalTextEdit); @@ -97,7 +96,7 @@ await _provider.GetCompletionListAsync( var delegatedParameters = _provider.DelegatedParams; Assert.NotNull(delegatedParameters); Assert.Equal(RazorLanguageKind.Html, delegatedParameters.ProjectedKind); - Assert.Equal(VsLspFactory.CreatePosition(0, 1), delegatedParameters.ProjectedPosition); + Assert.Equal(LspFactory.CreatePosition(0, 1), delegatedParameters.ProjectedPosition); Assert.Equal(CompletionTriggerKind.TriggerCharacter, delegatedParameters.Context.TriggerKind); Assert.Equal(VSInternalCompletionInvokeKind.Typing, delegatedParameters.Context.InvokeKind); Assert.Equal(1, delegatedParameters.Identifier.Version); @@ -356,7 +355,7 @@ await completionProvider.GetCompletionListAsync( Assert.True(requestSent); } - private async Task GetCompletionListAsync(string content, CompletionTriggerKind triggerKind) + private async Task GetCompletionListAsync(string content, CompletionTriggerKind triggerKind) { TestFileMarkupParser.GetPosition(content, out var output, out var cursorPosition); var codeDocument = CreateCodeDocument(output); @@ -367,7 +366,7 @@ private async Task GetCompletionListAsync(string conte CompletionProvider = new CompletionOptions { ResolveProvider = true, - TriggerCharacters = new[] { " ", "(", "=", "#", ".", "<", "[", "{", "\"", "/", ":", "~" } + TriggerCharacters = [" ", "(", "=", "#", ".", "<", "[", "{", "\"", "/", ":", "~"] } }; await using var csharpServer = await CSharpTestLspServerHelpers.CreateCSharpLspServerAsync( diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DesignTimeHelperResponseRewriterTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DesignTimeHelperResponseRewriterTest.cs index e22d97af9de..cebdd13b008 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DesignTimeHelperResponseRewriterTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DesignTimeHelperResponseRewriterTest.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Threading.Tasks; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -80,12 +79,9 @@ public async Task RewriteAsync_AlwaysRemovesRazorHelpers() Assert.Equal("__helper", item.Label); } - private static VSInternalCompletionList GenerateCompletionList(params string[] itemLabels) - { - var items = itemLabels.Select(label => new VSInternalCompletionItem() { Label = label }).ToArray(); - return new VSInternalCompletionList() + private static RazorVSInternalCompletionList GenerateCompletionList(params string[] itemLabels) + => new() { - Items = items + Items = [.. itemLabels.Select(label => new VSInternalCompletionItem() { Label = label })] }; - } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/HtmlCommitCharacterResponseRewriterTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/HtmlCommitCharacterResponseRewriterTest.cs index 1d3d246f754..40cdf54b883 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/HtmlCommitCharacterResponseRewriterTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/HtmlCommitCharacterResponseRewriterTest.cs @@ -8,7 +8,6 @@ using Microsoft.CodeAnalysis.Razor.Completion; using Microsoft.CodeAnalysis.Razor.Completion.Delegation; using Microsoft.CodeAnalysis.Testing; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -143,17 +142,15 @@ public async Task RewriteAsync_ItemCommitCharacters_RemovesSpace(bool useVSTypes }); } - private static VSInternalCompletionList GenerateCompletionList(bool useDefaultCommitCharacters, bool useVSTypes, params string[] itemLabels) - { - var items = itemLabels.Select(label => new VSInternalCompletionItem() - { - Kind = CompletionItemKind.Element, - Label = label, - CommitCharacters = useDefaultCommitCharacters ? null : new string[] { " ", ">" } - }).ToArray(); - return new VSInternalCompletionList() + private static RazorVSInternalCompletionList GenerateCompletionList(bool useDefaultCommitCharacters, bool useVSTypes, params string[] itemLabels) + => new() { - Items = items, + Items = [.. itemLabels.Select(label => new VSInternalCompletionItem() + { + Kind = CompletionItemKind.Element, + Label = label, + CommitCharacters = useDefaultCommitCharacters ? null : [" ", ">"] + })], CommitCharacters = (useDefaultCommitCharacters, useVSTypes) switch { (true, true) => new VSInternalCommitCharacter[] { new() { Character = " " }, new() { Character = ">" } }, @@ -161,5 +158,4 @@ private static VSInternalCompletionList GenerateCompletionList(bool useDefaultCo _ => null } }; - } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/ResponseRewriterTestBase.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/ResponseRewriterTestBase.cs index 82acc646466..3d4feda1227 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/ResponseRewriterTestBase.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/ResponseRewriterTestBase.cs @@ -7,7 +7,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.Completion; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit.Abstractions; namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion.Delegation; @@ -23,7 +22,7 @@ private protected ResponseRewriterTestBase( private protected Task GetRewrittenCompletionListAsync( int absoluteIndex, string documentContent, - VSInternalCompletionList initialCompletionList) + RazorVSInternalCompletionList initialCompletionList) { var razorCompletionOptions = new RazorCompletionOptions( SnippetsSupported: true, @@ -36,7 +35,7 @@ private protected Task GetRewrittenCompletionListAsync private protected async Task GetRewrittenCompletionListAsync( int absoluteIndex, string documentContent, - VSInternalCompletionList initialCompletionList, + RazorVSInternalCompletionList initialCompletionList, RazorCompletionOptions razorCompletionOptions) { const string FilePath = "C:/path/to/file.cshtml"; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/SnippetResponseRewriterTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/SnippetResponseRewriterTest.cs index 5c14c8563b2..06bc5f45cfe 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/SnippetResponseRewriterTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/SnippetResponseRewriterTest.cs @@ -1,13 +1,11 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.Completion.Delegation; using Microsoft.CodeAnalysis.Razor.Completion.Delegation; using Microsoft.CodeAnalysis.Testing; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -110,18 +108,14 @@ public async Task RewriteAsync_DoesNotChangeIfSnippetLabel() ); } - private static VSInternalCompletionList GenerateCompletionList(params (string? Label, CompletionItemKind Kind)[] itemsData) - { - var items = itemsData.Select(itemData => new VSInternalCompletionItem() + private static RazorVSInternalCompletionList GenerateCompletionList(params (string? Label, CompletionItemKind Kind)[] itemsData) + => new RazorVSInternalCompletionList() + { + Items = [.. itemsData.Select(itemData => new VSInternalCompletionItem() { Label = itemData.Label!, SortText = itemData.Label, - Kind = itemData.Kind}) - .ToArray(); - - return new VSInternalCompletionList() - { - Items = items + Kind = itemData.Kind + })] }; - } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/TestDelegatedCompletionListProvider.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/TestDelegatedCompletionListProvider.cs index 3077cb02f1a..9104a1cb986 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/TestDelegatedCompletionListProvider.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/TestDelegatedCompletionListProvider.cs @@ -13,7 +13,6 @@ using Microsoft.CodeAnalysis.Razor.Completion; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion.Delegation; @@ -51,12 +50,12 @@ public static TestDelegatedCompletionListProvider Create( } public static TestDelegatedCompletionListProvider Create( - VSInternalCompletionList delegatedCompletionList, + RazorVSInternalCompletionList delegatedCompletionList, ILoggerFactory loggerFactory) { - delegatedCompletionList ??= new VSInternalCompletionList() + delegatedCompletionList ??= new RazorVSInternalCompletionList() { - Items = Array.Empty(), + Items = [], }; var requestResponseFactory = new StaticCompletionRequestResponseFactory(delegatedCompletionList); var provider = new TestDelegatedCompletionListProvider(requestResponseFactory, loggerFactory); @@ -75,10 +74,10 @@ public static TestDelegatedCompletionListProvider CreateWithNullResponse( private class StaticCompletionRequestResponseFactory : CompletionRequestResponseFactory { - private readonly VSInternalCompletionList _completionResponse; + private readonly RazorVSInternalCompletionList _completionResponse; private DelegatedCompletionParams _delegatedParams; - public StaticCompletionRequestResponseFactory(VSInternalCompletionList completionResponse) + public StaticCompletionRequestResponseFactory(RazorVSInternalCompletionList completionResponse) { _completionResponse = completionResponse; } @@ -126,7 +125,7 @@ public override async Task OnDelegationAsync(object parameters) } }; - var delegatedCompletionList = await _csharpServer.ExecuteRequestAsync( + var delegatedCompletionList = await _csharpServer.ExecuteRequestAsync( Methods.TextDocumentCompletionName, csharpCompletionParams, _cancellationToken); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/TextEditResponseRewriterTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/TextEditResponseRewriterTest.cs index 61c04e3c98e..233f5ac0e74 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/TextEditResponseRewriterTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/TextEditResponseRewriterTest.cs @@ -4,7 +4,6 @@ #nullable disable using System.Threading.Tasks; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -19,7 +18,7 @@ public async Task RewriteAsync_NotCSharp_Noops() // Arrange var getCompletionsAt = 1; var documentContent = "<"; - var textEditRange = VsLspFactory.CreateSingleLineRange(start: (0, 0), length: 1); + var textEditRange = LspFactory.CreateSingleLineRange(start: (0, 0), length: 1); var delegatedCompletionList = GenerateCompletionList(textEditRange); // Act @@ -37,9 +36,9 @@ public async Task RewriteAsync_CSharp_AdjustsItemRange() var getCompletionsAt = 1; var documentContent = "@DateTime"; // Line 19: __o = DateTime - var textEditRange = VsLspFactory.CreateSingleLineRange(line: 19, character: 6, length: 8); + var textEditRange = LspFactory.CreateSingleLineRange(line: 19, character: 6, length: 8); var delegatedCompletionList = GenerateCompletionList(textEditRange); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 8); + var expectedRange = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 8); // Act var rewrittenCompletionList = await GetRewrittenCompletionListAsync( @@ -56,13 +55,13 @@ public async Task RewriteAsync_CSharp_AdjustsListRange() var getCompletionsAt = 1; var documentContent = "@DateTime"; // Line 19: __o = DateTime - var textEditRange = VsLspFactory.CreateSingleLineRange(line: 19, character: 6, length: 8); + var textEditRange = LspFactory.CreateSingleLineRange(line: 19, character: 6, length: 8); var delegatedCompletionList = GenerateCompletionList(textEditRange); delegatedCompletionList.ItemDefaults = new CompletionListItemDefaults() { EditRange = textEditRange, }; - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 8); + var expectedRange = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 8); // Act var rewrittenCompletionList = await GetRewrittenCompletionListAsync( @@ -72,17 +71,15 @@ public async Task RewriteAsync_CSharp_AdjustsListRange() Assert.Equal(expectedRange, rewrittenCompletionList.ItemDefaults.EditRange); } - private static VSInternalCompletionList GenerateCompletionList(Range textEditRange) - { - return new VSInternalCompletionList() + private static RazorVSInternalCompletionList GenerateCompletionList(LspRange textEditRange) + => new() { Items = [ new VSInternalCompletionItem() { Label = string.Empty, // label string is non-nullable - TextEdit = VsLspFactory.CreateTextEdit(textEditRange, "Hello") + TextEdit = LspFactory.CreateTextEdit(textEditRange, "Hello") } ] }; - } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionEndpointTest.cs index 2dbc4d33bd0..21e592ee9fe 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionEndpointTest.cs @@ -6,9 +6,8 @@ using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Xunit; using Xunit.Abstractions; @@ -29,7 +28,7 @@ public async Task Handle_NoDocumentContext_NoCompletionItems() { Uri = new Uri(documentPath) }, - Position = VsLspFactory.CreatePosition(0, 1), + Position = LspFactory.CreatePosition(0, 1), Context = new VSInternalCompletionContext(), }; var requestContext = CreateRazorRequestContext(documentContext: null); @@ -57,7 +56,7 @@ public async Task Handle_AutoShowCompletionDisabled_NoCompletionItems() { Uri = uri }, - Position = VsLspFactory.CreatePosition(0, 1), + Position = LspFactory.CreatePosition(0, 1), Context = new VSInternalCompletionContext() { InvokeKind = VSInternalCompletionInvokeKind.Typing }, }; var requestContext = CreateRazorRequestContext(documentContext); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionItemResolverTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionItemResolverTest.cs index ec1ab646660..9b3ad091a85 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionItemResolverTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionItemResolverTest.cs @@ -9,7 +9,6 @@ using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.Completion; using Microsoft.CodeAnalysis.Razor.Tooltip; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionResolveEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionResolveEndpointTest.cs index c755dab7bea..149953f55b5 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionResolveEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionResolveEndpointTest.cs @@ -11,7 +11,6 @@ using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.Completion; using Microsoft.CodeAnalysis.Razor.Tooltip; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -73,7 +72,7 @@ public async Task Handle_EvictedCachedCompletionItem_NoChange() { // Arrange var completionItem = new VSInternalCompletionItem() { Label = "Test" }; - var completionList = new VSInternalCompletionList() { Items = [completionItem] }; + var completionList = new RazorVSInternalCompletionList() { Items = [completionItem] }; completionList.SetResultId(1337, completionSetting: null); var parameters = ConvertToBridgedItem(completionItem); var requestContext = CreateRazorRequestContext(documentContext: null); @@ -90,7 +89,7 @@ public async Task Handle_CachedCompletionItem_Resolves() { // Arrange var completionItem = new VSInternalCompletionItem() { Label = "Test" }; - var completionList = new VSInternalCompletionList() { Items = [completionItem] }; + var completionList = new RazorVSInternalCompletionList() { Items = [completionItem] }; var resultId = _completionListCache.Add(completionList, StrictMock.Of()); completionList.SetResultId(resultId, completionSetting: null); var parameters = ConvertToBridgedItem(completionItem); @@ -111,7 +110,7 @@ public async Task Handle_MultipleResultIdsIgnoresEvictedResultIds_Resolves() // Arrange await InitializeAsync(); var completionItem = new VSInternalCompletionItem() { Label = "Test" }; - var completionList = new VSInternalCompletionList() { Items = [completionItem] }; + var completionList = new RazorVSInternalCompletionList() { Items = [completionItem] }; completionList.SetResultId(/* Invalid */ 1337, completionSetting: null); var resultId = _completionListCache.Add(completionList, StrictMock.Of()); completionList.SetResultId(resultId, completionSetting: null); @@ -133,13 +132,13 @@ public async Task Handle_MergedCompletionListFindsProperCompletionList_Resolves( // Arrange await InitializeAsync(); var completionSetting = new VSInternalCompletionSetting() { CompletionList = new VSInternalCompletionListSetting() { Data = true } }; - var completionList1 = new VSInternalCompletionList() { Items = [] }; + var completionList1 = new RazorVSInternalCompletionList() { Items = [] }; var completion1Context = StrictMock.Of(); var resultId1 = _completionListCache.Add(completionList1, completion1Context); completionList1.SetResultId(resultId1, completionSetting); var completionItem = new VSInternalCompletionItem() { Label = "Test" }; - var completionList2 = new VSInternalCompletionList() { Items = [completionItem] }; + var completionList2 = new RazorVSInternalCompletionList() { Items = [completionItem] }; var completion2Context = StrictMock.Of(); var resultId2 = _completionListCache.Add(completionList2, completion2Context); completionList2.SetResultId(resultId2, completionSetting); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/TagHelperCompletionProviderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/TagHelperCompletionProviderTest.cs index 75f73f6d764..d329b2471e6 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/TagHelperCompletionProviderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/TagHelperCompletionProviderTest.cs @@ -5,8 +5,6 @@ using System.Collections.Generic; using System.Collections.Immutable; -using System.Threading; -using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Syntax; using Microsoft.AspNetCore.Razor.Test.Common; @@ -941,10 +939,10 @@ private static RazorCompletionContext CreateRazorCompletionContext(string markup TestFileMarkupParser.GetPosition(markup, out var documentContent, out var position); var codeDocument = CreateCodeDocument(documentContent, isRazorFile, tagHelpers); var syntaxTree = codeDocument.GetSyntaxTree(); - var tagHelperDocumentContext = codeDocument.GetTagHelperContext(); + var context = codeDocument.GetRequiredTagHelperContext(); var owner = syntaxTree.Root.FindInnermostNode(position, includeWhitespace: true, walkMarkersBack: true); owner = AbstractRazorCompletionFactsService.AdjustSyntaxNodeForWordBoundary(owner, position); - return new RazorCompletionContext(position, owner, syntaxTree, tagHelperDocumentContext, Options: options); + return new RazorCompletionContext(position, owner, syntaxTree, context, Options: options); } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/RazorBreakpointSpanEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/RazorBreakpointSpanEndpointTest.cs index 92f178f043f..342d135452e 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/RazorBreakpointSpanEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/RazorBreakpointSpanEndpointTest.cs @@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Protocol.Debugging; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -26,32 +25,6 @@ public RazorBreakpointSpanEndpointTest(ITestOutputHelper testOutput) LoggerFactory); } - [Fact] - public async Task Handle_UnsupportedDocument_ReturnsNull() - { - // Arrange - var documentPath = new Uri("C:/path/to/document.cshtml"); - var codeDocument = CreateCodeDocument(@" -

@DateTime.Now

"); - var documentContext = CreateDocumentContext(documentPath, codeDocument); - - var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(_mappingService, LoggerFactory); - var request = new RazorBreakpointSpanParams() - { - Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), - HostDocumentSyncVersion = 0, - }; - codeDocument.SetUnsupported(); - var requestContext = CreateRazorRequestContext(documentContext); - - // Act - var response = await diagnosticsEndpoint.HandleRequestAsync(request, requestContext, DisposalToken); - - // Assert - Assert.Null(response); - } - [Fact] public async Task Handle_StartsInHtml_BreakpointMoved() { @@ -65,10 +38,10 @@ public async Task Handle_StartsInHtml_BreakpointMoved() var request = new RazorBreakpointSpanParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), HostDocumentSyncVersion = 1, }; - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 5, length: 14); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 5, length: 14); var requestContext = CreateRazorRequestContext(documentContext); // Act @@ -91,10 +64,10 @@ public async Task Handle_ImplicitExpression_StartsInHtml_BreakpointMoved() var request = new RazorBreakpointSpanParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), HostDocumentSyncVersion = 1, }; - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 4, length: 12); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 4, length: 12); var requestContext = CreateRazorRequestContext(documentContext); // Act @@ -110,17 +83,17 @@ public async Task Handle_StartsInHtml_BreakpointMoved_Razor() // Arrange var documentPath = new Uri("C:/path/to/document.razor"); var codeDocument = CreateCodeDocument(@" -

@{var abc = 123;}

", FileKinds.Component); +

@{var abc = 123;}

", RazorFileKind.Component); var documentContext = CreateDocumentContext(documentPath, codeDocument); var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(_mappingService, LoggerFactory); var request = new RazorBreakpointSpanParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), HostDocumentSyncVersion = 1, }; - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 5, length: 14); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 5, length: 14); var requestContext = CreateRazorRequestContext(documentContext); // Act @@ -136,17 +109,17 @@ public async Task Handle_ImplicitExpression_StartsInHtml_BreakpointMoved_Razor() // Arrange var documentPath = new Uri("C:/path/to/document.razor"); var codeDocument = CreateCodeDocument(@" -

@currentCount

", FileKinds.Component); +

@currentCount

", RazorFileKind.Component); var documentContext = CreateDocumentContext(documentPath, codeDocument); var diagnosticsEndpoint = new RazorBreakpointSpanEndpoint(_mappingService, LoggerFactory); var request = new RazorBreakpointSpanParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), HostDocumentSyncVersion = 1, }; - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 4, length: 12); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 4, length: 12); var requestContext = CreateRazorRequestContext(documentContext); // Act @@ -170,7 +143,7 @@ public async Task Handle_StartsInHtml_InvalidBreakpointSpan_ReturnsNull() var request = new RazorBreakpointSpanParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), HostDocumentSyncVersion = 1, }; var requestContext = CreateRazorRequestContext(documentContext); @@ -195,7 +168,7 @@ public async Task Handle_StartInHtml_NoCSharpOnLine_ReturnsNull() var request = new RazorBreakpointSpanParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), HostDocumentSyncVersion = 0, }; var requestContext = CreateRazorRequestContext(documentContext); @@ -223,7 +196,7 @@ public async Task Handle_StartInHtml_NoActualCSharp_ReturnsNull() var request = new RazorBreakpointSpanParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), HostDocumentSyncVersion = 0, }; var requestContext = CreateRazorRequestContext(documentContext); @@ -251,7 +224,7 @@ public async Task Handle_InvalidBreakpointSpan_ReturnsNull() var request = new RazorBreakpointSpanParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(2, 0), + Position = LspFactory.CreatePosition(2, 0), HostDocumentSyncVersion = 0, }; var requestContext = CreateRazorRequestContext(documentContext); @@ -263,7 +236,7 @@ public async Task Handle_InvalidBreakpointSpan_ReturnsNull() Assert.Null(response); } - private static RazorCodeDocument CreateCodeDocument(string text, string? fileKind = null) + private static RazorCodeDocument CreateCodeDocument(string text, RazorFileKind? fileKind = null) { var sourceDocument = TestRazorSourceDocument.Create(text); var projectEngine = RazorProjectEngine.Create(builder => @@ -273,7 +246,7 @@ private static RazorCodeDocument CreateCodeDocument(string text, string? fileKin builder.UseRoslynTokenizer = true; }); }); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKind ?? FileKinds.Legacy, importSources: default, tagHelpers: []); - return codeDocument; + + return projectEngine.ProcessDesignTime(sourceDocument, fileKind ?? RazorFileKind.Legacy, importSources: default, tagHelpers: []); } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/RazorProximityExpressionsEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/RazorProximityExpressionsEndpointTest.cs index 43992e9198f..fe666f49c2f 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/RazorProximityExpressionsEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/RazorProximityExpressionsEndpointTest.cs @@ -3,11 +3,9 @@ using System; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Protocol.Debugging; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -26,32 +24,6 @@ public RazorProximityExpressionsEndpointTest(ITestOutputHelper testOutput) LoggerFactory); } - [Fact] - public async Task Handle_UnsupportedDocument_ReturnsNull() - { - // Arrange - var documentPath = new Uri("C:/path/to/document.cshtml"); - var codeDocument = CreateCodeDocument(@" -

@DateTime.Now

"); - var documentContext = CreateDocumentContext(documentPath, codeDocument); - - var diagnosticsEndpoint = new RazorProximityExpressionsEndpoint(_mappingService, LoggerFactory); - var request = new RazorProximityExpressionsParams() - { - Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), - HostDocumentSyncVersion = 0, - }; - codeDocument.SetUnsupported(); - var requestContext = CreateRazorRequestContext(documentContext); - - // Act - var response = await diagnosticsEndpoint.HandleRequestAsync(request, requestContext, DisposalToken); - - // Assert - Assert.Null(response); - } - [Fact] public async Task Handle_ReturnsValidExpressions() { @@ -65,7 +37,7 @@ public async Task Handle_ReturnsValidExpressions() var request = new RazorProximityExpressionsParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 8), + Position = LspFactory.CreatePosition(1, 8), HostDocumentSyncVersion = 1, }; var requestContext = CreateRazorRequestContext(documentContext); @@ -91,7 +63,7 @@ public async Task Handle_StartsInHtml_ReturnsValidExpressions() var request = new RazorProximityExpressionsParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), HostDocumentSyncVersion = 1, }; var requestContext = CreateRazorRequestContext(documentContext); @@ -117,7 +89,7 @@ public async Task Handle_StartInHtml_NoCSharpOnLine_ReturnsNull() var request = new RazorProximityExpressionsParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), HostDocumentSyncVersion = 0, }; var requestContext = CreateRazorRequestContext(documentContext); @@ -145,7 +117,7 @@ public async Task Handle_InvalidLocation_ReturnsNull() var request = new RazorProximityExpressionsParams() { Uri = documentPath, - Position = VsLspFactory.DefaultPosition, + Position = LspFactory.DefaultPosition, HostDocumentSyncVersion = 0, }; var requestContext = CreateRazorRequestContext(documentContext); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/ValidateBreakpointRangeEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/ValidateBreakpointRangeEndpointTest.cs index d13e3dfc828..55d590054a1 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/ValidateBreakpointRangeEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Debugging/ValidateBreakpointRangeEndpointTest.cs @@ -6,15 +6,12 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.CommonLanguageServerProtocol.Framework; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Moq; using Xunit; using Xunit.Abstractions; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.AspNetCore.Razor.LanguageServer.Debugging; @@ -137,7 +134,7 @@ private async Task VerifyBreakpointRangeAsync(string input) Assert.Equal(expectedRange, result); } - private async Task GetBreakpointRangeAsync(RazorCodeDocument codeDocument, string razorFilePath, TextSpan breakpointSpan) + private async Task GetBreakpointRangeAsync(RazorCodeDocument codeDocument, string razorFilePath, TextSpan breakpointSpan) { var languageServer = await CreateLanguageServerAsync(codeDocument, razorFilePath); @@ -158,12 +155,8 @@ private async Task VerifyBreakpointRangeAsync(string input) return await endpoint.HandleRequestAsync(request, requestContext, DisposalToken); } - private RazorRequestContext CreateValidateBreakpointRangeRequestContext(DocumentContext documentContext) + private static RazorRequestContext CreateValidateBreakpointRangeRequestContext(DocumentContext documentContext) { - var lspServices = new Mock(MockBehavior.Strict); - - var requestContext = CreateRazorRequestContext(documentContext, lspServices: lspServices.Object); - - return requestContext; + return CreateRazorRequestContext(documentContext, LspServices.Empty); } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DefaultRazorConfigurationServiceTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DefaultRazorConfigurationServiceTest.cs index 771fc8d9e81..c52ff748442 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DefaultRazorConfigurationServiceTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DefaultRazorConfigurationServiceTest.cs @@ -8,7 +8,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DefaultWorkspaceDirectoryPathResolverTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DefaultWorkspaceDirectoryPathResolverTest.cs index afc3cc5dcaa..aafbbb0d0fb 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DefaultWorkspaceDirectoryPathResolverTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DefaultWorkspaceDirectoryPathResolverTest.cs @@ -1,11 +1,8 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.CommonLanguageServerProtocol.Framework; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -25,7 +22,7 @@ public async Task Resolve_RootUriUnavailable_UsesRootPath() }; #pragma warning restore CS0618 // Type or member is obsolete - var capabilitiesManager = new CapabilitiesManager(StrictMock.Of()); + var capabilitiesManager = new CapabilitiesManager(LspServices.Empty); capabilitiesManager.SetInitializeParams(initializeParams); // Act @@ -45,11 +42,11 @@ public async Task Resolve_RootUriPrefered() var initializeParams = new InitializeParams() { RootPath = "/somethingelse", - RootUri = VsLspFactory.CreateFilePathUri(initialWorkspaceDirectory), + RootUri = LspFactory.CreateFilePathUri(initialWorkspaceDirectory), }; #pragma warning restore CS0618 // Type or member is obsolete - var capabilitiesManager = new CapabilitiesManager(StrictMock.Of()); + var capabilitiesManager = new CapabilitiesManager(LspServices.Empty); capabilitiesManager.SetInitializeParams(initializeParams); // Act diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Definition/DefinitionEndpointDelegationTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Definition/DefinitionEndpointDelegationTest.cs index ac96f8b713e..c23272cf5fe 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Definition/DefinitionEndpointDelegationTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Definition/DefinitionEndpointDelegationTest.cs @@ -7,17 +7,17 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; -using DefinitionResult = Microsoft.VisualStudio.LanguageServer.Protocol.SumType< - Microsoft.VisualStudio.LanguageServer.Protocol.Location, - Microsoft.VisualStudio.LanguageServer.Protocol.Location[], - Microsoft.VisualStudio.LanguageServer.Protocol.DocumentLink[]>; +using DefinitionResult = Roslyn.LanguageServer.Protocol.SumType< + Roslyn.LanguageServer.Protocol.Location, + Roslyn.LanguageServer.Protocol.VSInternalLocation, + Roslyn.LanguageServer.Protocol.VSInternalLocation[], + Roslyn.LanguageServer.Protocol.DocumentLink[]>; namespace Microsoft.AspNetCore.Razor.LanguageServer.Definition; @@ -84,8 +84,8 @@ public async Task Handle_SingleServer_CSharp_MetadataReference() var result = await GetDefinitionResultAsync(codeDocument, razorFilePath, cursorPosition); // Assert - Assert.NotNull(result.Value.Second); - var locations = result.Value.Second; + Assert.NotNull(result.Value.Third); + var locations = result.Value.Third; var location = Assert.Single(locations); Assert.EndsWith("String.cs", location.Uri.ToString()); @@ -187,8 +187,8 @@ @namespace BlazorApp1.Shared var result = await GetDefinitionResultAsync(codeDocument, razorFilePath, cursorPosition, additionalRazorDocuments); // Assert - Assert.NotNull(result.Value.Second); - var locations = result.Value.Second; + Assert.NotNull(result.Value.Third); + var locations = result.Value.Third; var location = Assert.Single(locations); // Our tests don't currently support mapping multiple documents, so we just need to verify Roslyn sent back the right info. @@ -213,8 +213,8 @@ private async Task VerifyCSharpGoToDefinitionAsync(string input, string? filePat var result = await GetDefinitionResultAsync(codeDocument, razorFilePath, cursorPosition); // Assert - Assert.NotNull(result.Value.Second); - var locations = result.Value.Second; + Assert.NotNull(result.Value.Third); + var locations = result.Value.Third; var location = Assert.Single(locations); Assert.Equal(new Uri(razorFilePath), location.Uri); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Definition/RazorComponentDefinitionHelpersTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Definition/RazorComponentDefinitionHelpersTest.cs index ee3e54fc8eb..bbaa74d939f 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Definition/RazorComponentDefinitionHelpersTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Definition/RazorComponentDefinitionHelpersTest.cs @@ -9,7 +9,6 @@ using Microsoft.AspNetCore.Razor.LanguageServer.Completion; using Microsoft.CodeAnalysis.Razor.GoToDefinition; using Microsoft.CodeAnalysis.Testing; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/DiagnosticsEndToEndTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/DiagnosticsEndToEndTest.cs index 4b3618cca04..184cf91e086 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/DiagnosticsEndToEndTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/DiagnosticsEndToEndTest.cs @@ -13,7 +13,6 @@ using Microsoft.CodeAnalysis.Razor.Diagnostics; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/RazorDiagnosticHelperTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/RazorDiagnosticHelperTest.cs index 16c390d566f..182ae94fac2 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/RazorDiagnosticHelperTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/RazorDiagnosticHelperTest.cs @@ -8,7 +8,6 @@ using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.Diagnostics; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -65,7 +64,7 @@ public void ConvertSpanToRange_ReturnsConvertedRange() // Arrange var sourceSpan = new SourceSpan(3, 0, 3, 4); var sourceText = SourceText.From("Hello World"); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 0, character: 3, length: 4); + var expectedRange = LspFactory.CreateSingleLineRange(line: 0, character: 3, length: 4); // Act var range = RazorDiagnosticHelper.ConvertSpanToRange(sourceSpan, sourceText); @@ -81,7 +80,7 @@ public void ConvertSpanToRange_StartsOutsideOfDocument_EmptyDocument_NormalizesT // Arrange var sourceText = SourceText.From(string.Empty); var sourceSpan = new SourceSpan(5, 0, 5, 4); - var expectedRange = VsLspFactory.DefaultRange; + var expectedRange = LspFactory.DefaultRange; // Act var range = RazorDiagnosticHelper.ConvertSpanToRange(sourceSpan, sourceText); @@ -97,7 +96,7 @@ public void ConvertSpanToRange_StartsOutsideOfDocument_NormalizesToEnd() // Arrange var sourceText = SourceText.From("Hello World"); var sourceSpan = new SourceSpan(sourceText.Length + 5, 0, sourceText.Length + 5, 4); - var expectedRange = VsLspFactory.CreateZeroWidthRange(0, 11); + var expectedRange = LspFactory.CreateZeroWidthRange(0, 11); // Act var range = RazorDiagnosticHelper.ConvertSpanToRange(sourceSpan, sourceText); @@ -113,7 +112,7 @@ public void ConvertSpanToRange_EndsOutsideOfDocument_NormalizesToEnd() // Arrange var sourceText = SourceText.From("Hello World"); var sourceSpan = new SourceSpan(6, 0, 6, 15); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 0, character: 6, length: 5); + var expectedRange = LspFactory.CreateSingleLineRange(line: 0, character: 6, length: 5); // Act var range = RazorDiagnosticHelper.ConvertSpanToRange(sourceSpan, sourceText); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/VSCSharpDiagnosticsEndToEndTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/VSCSharpDiagnosticsEndToEndTest.cs index af409df6a20..5493d03c28d 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/VSCSharpDiagnosticsEndToEndTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/VSCSharpDiagnosticsEndToEndTest.cs @@ -12,7 +12,6 @@ using Microsoft.CodeAnalysis.Razor.Diagnostics; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/VSDocumentDiagnosticsEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/VSDocumentDiagnosticsEndpointTest.cs index 5613ea92276..0725a256536 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/VSDocumentDiagnosticsEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Diagnostics/VSDocumentDiagnosticsEndpointTest.cs @@ -6,7 +6,6 @@ using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.Razor.Diagnostics; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentContextFactoryTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentContextFactoryTest.cs index b65f62af039..be226e7d20e 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentContextFactoryTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentContextFactoryTest.cs @@ -9,8 +9,8 @@ using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; using Xunit; using Xunit.Abstractions; @@ -103,7 +103,7 @@ await _projectManager.UpdateAsync(updater => }); // Act - Assert.True(factory.TryCreate(uri, new VisualStudio.LanguageServer.Protocol.VSProjectContext { Id = hostProject.Key.Id }, out var documentContext)); + Assert.True(factory.TryCreate(uri, new VSProjectContext { Id = hostProject.Key.Id }, out var documentContext)); // Assert Assert.Equal(uri, documentContext.Uri); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentHighlighting/DocumentHighlightEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentHighlighting/DocumentHighlightEndpointTest.cs index a2a6063adea..c4eee3ca571 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentHighlighting/DocumentHighlightEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentHighlighting/DocumentHighlightEndpointTest.cs @@ -15,7 +15,6 @@ using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentPresentation/TextDocumentTextPresentationEndpointTests.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentPresentation/TextDocumentTextPresentationEndpointTests.cs index 9490c6ad034..3abfb79d221 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentPresentation/TextDocumentTextPresentationEndpointTests.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentPresentation/TextDocumentTextPresentationEndpointTests.cs @@ -10,7 +10,7 @@ using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.DocumentPresentation; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.CodeAnalysis.Text; using Moq; using Xunit; using Xunit.Abstractions; @@ -109,37 +109,6 @@ public async Task Handle_DocumentNotFound_ReturnsNull() Assert.Null(result); } - [Fact] - public async Task Handle_UnsupportedCodeDocument_ReturnsNull() - { - // Arrange - TestCode code = "<[|d|]iv>"; - - var codeDocument = CreateCodeDocument(code.Text); - codeDocument.SetUnsupported(); - - var uri = new Uri("file://path/test.razor"); - var documentContext = CreateDocumentContext(uri, codeDocument); - - var clientConnection = CreateClientConnection(response: new WorkspaceEdit()); - var endpoint = CreateEndpoint(clientConnection); - - var parameters = new TextPresentationParams() - { - TextDocument = new() { Uri = uri }, - Range = codeDocument.Source.Text.GetRange(code.Span), - Text = "Hi there" - }; - - var requestContext = CreateRazorRequestContext(documentContext); - - // Act - var result = await endpoint.HandleRequestAsync(parameters, requestContext, DisposalToken); - - // Assert - Assert.Null(result); - } - private TextDocumentTextPresentationEndpoint CreateEndpoint(IClientConnection clientConnection) => new(StrictMock.Of(), clientConnection, FilePathService, LoggerFactory); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentPresentation/TextDocumentUriPresentationEndpointTests.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentPresentation/TextDocumentUriPresentationEndpointTests.cs index b87efbca41d..3cef316e044 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentPresentation/TextDocumentUriPresentationEndpointTests.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentPresentation/TextDocumentUriPresentationEndpointTests.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; @@ -14,7 +14,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.DocumentPresentation; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; using static Microsoft.AspNetCore.Razor.Language.CommonMetadata; @@ -64,7 +63,7 @@ await projectManager.UpdateAsync(updater => var parameters = new UriPresentationParams() { TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), + Range = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), Uris = [droppedUri] }; @@ -80,7 +79,7 @@ await projectManager.UpdateAsync(updater => var documentChanges = result.DocumentChanges.GetValueOrDefault(); Assert.True(documentChanges.TryGetFirst(out var documentEdits)); - Assert.Equal("", documentEdits[0].Edits[0].NewText); + Assert.Equal("", ((TextEdit)documentEdits[0].Edits[0]).NewText); } [ConditionalFact(Is.Windows)] @@ -124,7 +123,7 @@ await projectManager.UpdateAsync(updater => var parameters = new UriPresentationParams() { TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), + Range = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), Uris = [ new Uri("file:///c:/path/MyTagHelper.razor.cs"), @@ -145,7 +144,7 @@ await projectManager.UpdateAsync(updater => var documentChanges = result.DocumentChanges.GetValueOrDefault(); Assert.True(documentChanges.TryGetFirst(out var documentEdits)); - Assert.Equal("", documentEdits[0].Edits[0].NewText); + Assert.Equal("", ((TextEdit)documentEdits[0].Edits[0]).NewText); } [ConditionalFact(Is.Windows)] @@ -195,7 +194,7 @@ await projectManager.UpdateAsync(updater => var parameters = new UriPresentationParams() { TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), + Range = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), Uris = [droppedUri] }; @@ -211,7 +210,7 @@ await projectManager.UpdateAsync(updater => var documentChanges = result.DocumentChanges.GetValueOrDefault(); Assert.True(documentChanges.TryGetFirst(out var documentEdits)); - Assert.Equal("", documentEdits[0].Edits[0].NewText); + Assert.Equal("", ((TextEdit)documentEdits[0].Edits[0]).NewText); } [Fact] @@ -231,7 +230,7 @@ public async Task Handle_NoTypeNameIdentifier_ReturnsNull() var parameters = new UriPresentationParams() { TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), + Range = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), Uris = [droppedUri] }; @@ -260,7 +259,7 @@ public async Task Handle_MultipleUris_ReturnsNull() var parameters = new UriPresentationParams() { TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), + Range = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), Uris = [ new Uri("file:///c:/path/SomeOtherFile.cs"), @@ -295,7 +294,7 @@ public async Task Handle_NotComponent_ReturnsNull() var parameters = new UriPresentationParams() { TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), + Range = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), Uris = [droppedUri] }; @@ -350,7 +349,7 @@ await projectManager.UpdateAsync(updater => var parameters = new UriPresentationParams() { TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), + Range = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1), Uris = [droppedUri1, droppedUri2] }; @@ -366,7 +365,7 @@ await projectManager.UpdateAsync(updater => var documentChanges = result.DocumentChanges.GetValueOrDefault(); Assert.True(documentChanges.TryGetFirst(out var documentEdits)); - Assert.Equal("", documentEdits[0].Edits[0].NewText); + Assert.Equal("", ((TextEdit)documentEdits[0].Edits[0]).NewText); } [Fact] @@ -384,7 +383,7 @@ public async Task Handle_CSharp_ReturnsNull() var parameters = new UriPresentationParams() { TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1) + Range = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1) }; var requestContext = CreateRazorRequestContext(documentContext); @@ -412,36 +411,7 @@ public async Task Handle_DocumentNotFound_ReturnsNull() var parameters = new UriPresentationParams() { TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1) - }; - - var requestContext = CreateRazorRequestContext(documentContext); - - // Act - var result = await endpoint.HandleRequestAsync(parameters, requestContext, DisposalToken); - - // Assert - Assert.Null(result); - } - - [Fact] - public async Task Handle_UnsupportedCodeDocument_ReturnsNull() - { - // Arrange - var codeDocument = CreateCodeDocument("
"); - codeDocument.SetUnsupported(); - var uri = new Uri("file://path/test.razor"); - var documentContext = CreateDocumentContext(uri, codeDocument); - - var documentContextFactory = CreateDocumentContextFactory(uri, codeDocument); - - var clientConnection = CreateClientConnection(response: new WorkspaceEdit()); - var endpoint = CreateEndpoint(documentContextFactory, clientConnection); - - var parameters = new UriPresentationParams() - { - TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1) + Range = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1) }; var requestContext = CreateRazorRequestContext(documentContext); @@ -469,7 +439,7 @@ public async Task Handle_NoUris_ReturnsNull() var parameters = new UriPresentationParams() { TextDocument = new() { Uri = uri }, - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1) + Range = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 1) }; var requestContext = CreateRazorRequestContext(documentContext); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSnapshotTextLoaderTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSnapshotTextLoaderTest.cs index 8cec64475d6..a24180b07cb 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSnapshotTextLoaderTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSnapshotTextLoaderTest.cs @@ -3,8 +3,8 @@ using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; using Moq; using Xunit; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSymbols/DocumentSymbolEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSymbols/DocumentSymbolEndpointTest.cs index 5f08b7394d3..c9dd351fea1 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSymbols/DocumentSymbolEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSymbols/DocumentSymbolEndpointTest.cs @@ -6,12 +6,11 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.DocumentSymbols; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol.DocumentSymbols; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -141,6 +140,8 @@ private async Task VerifyDocumentSymbolsAsync(string input, bool hierarchical = var symbolsInformations = result.Value.Second; Assert.Equal(spansDict.Values.Count(), symbolsInformations.Length); +#pragma warning disable CS0618 // Type or member is obsolete + // SymbolInformation is obsolete, but things still return it so we have to handle it var sourceText = SourceText.From(input); foreach (var symbolInformation in symbolsInformations) { @@ -148,6 +149,7 @@ private async Task VerifyDocumentSymbolsAsync(string input, bool hierarchical = var expectedRange = sourceText.GetRange(Assert.Single(spans)); Assert.Equal(expectedRange, symbolInformation.Location.Range); } +#pragma warning restore CS0618 // Type or member is obsolete } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidChangeEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidChangeEndpointTest.cs index 647c82a720b..c8d269b23e0 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidChangeEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidChangeEndpointTest.cs @@ -8,7 +8,6 @@ using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -27,7 +26,7 @@ public void ApplyContentChanges_SingleChange() var sourceText = SourceText.From("Hello World"); var change = new TextDocumentContentChangeEvent() { - Range = VsLspFactory.CreateZeroWidthRange(0, 5), + Range = LspFactory.CreateZeroWidthRange(0, 5), RangeLength = 0, Text = "!" }; @@ -48,7 +47,7 @@ public void ApplyContentChanges_MultipleChanges() var changes = new[] { new TextDocumentContentChangeEvent() { - Range = VsLspFactory.CreateZeroWidthRange(0, 5), + Range = LspFactory.CreateZeroWidthRange(0, 5), RangeLength = 0, Text = Environment.NewLine }, @@ -57,7 +56,7 @@ public void ApplyContentChanges_MultipleChanges() new TextDocumentContentChangeEvent() { - Range = VsLspFactory.CreateZeroWidthRange(1, 0), + Range = LspFactory.CreateZeroWidthRange(1, 0), RangeLength = 0, Text = "!" }, @@ -66,7 +65,7 @@ public void ApplyContentChanges_MultipleChanges() new TextDocumentContentChangeEvent() { - Range = VsLspFactory.CreateZeroWidthRange(0, 1), + Range = LspFactory.CreateZeroWidthRange(0, 1), RangeLength = 4, Text = """ i! @@ -108,7 +107,7 @@ public async Task Handle_DidChangeTextDocument_UpdatesDocument() var endpoint = new DocumentDidChangeEndpoint(projectService.Object, LoggerFactory); var change = new TextDocumentContentChangeEvent() { - Range = VsLspFactory.CreateZeroWidthRange(0, 3), + Range = LspFactory.CreateZeroWidthRange(0, 3), RangeLength = 0, Text = "

" }; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidCloseEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidCloseEndpointTest.cs index 7dac3fe63e6..bbefb1341ad 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidCloseEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidCloseEndpointTest.cs @@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidOpenEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidOpenEndpointTest.cs index 4ae3f350a2f..cb9ac01e218 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidOpenEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/DocumentSynchronization/DocumentDidOpenEndpointTest.cs @@ -8,7 +8,6 @@ using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/FindReferences/FindAllReferencesEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/FindReferences/FindAllReferencesEndpointTest.cs index a228dc6fc98..05c4beb24d2 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/FindReferences/FindAllReferencesEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/FindReferences/FindAllReferencesEndpointTest.cs @@ -5,14 +5,13 @@ using System.Collections.Immutable; using System.Linq; using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Microsoft.VisualStudio.Text.Adornments; +using Roslyn.Text.Adornments; using Xunit; using Xunit.Abstractions; @@ -89,9 +88,9 @@ await projectManager.UpdateAsync(updater => Assert.Equal(expectedSpans.Length, result.Length); var i = 0; - foreach (var referenceItem in result.OrderBy(l => l.Location.Range.Start.Line)) + foreach (var referenceItem in result.OrderBy(l => l.Location.AssumeNotNull().Range.Start.Line)) { - Assert.Equal(new Uri(razorFilePath), referenceItem.Location.Uri); + Assert.Equal(new Uri(razorFilePath), referenceItem.Location.AssumeNotNull().Uri); var expectedRange = codeDocument.Source.Text.GetRange(expectedSpans[i]); Assert.Equal(expectedRange, referenceItem.Location.Range); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Folding/FoldingEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Folding/FoldingEndpointTest.cs index 1cff2a0d10f..190abd2b7b1 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Folding/FoldingEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Folding/FoldingEndpointTest.cs @@ -6,11 +6,10 @@ using System.Collections.Immutable; using System.Linq; using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Razor.FoldingRanges; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting/TestRazorFormattingService.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting/TestRazorFormattingService.cs index 13ead284b32..8b29589d7d2 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting/TestRazorFormattingService.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting/TestRazorFormattingService.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/CodeDirectiveFormattingTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/CodeDirectiveFormattingTest.cs index a98b870009f..70e3b13ae3c 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/CodeDirectiveFormattingTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/CodeDirectiveFormattingTest.cs @@ -180,9 +180,9 @@ @attribute [CascadingTypeParameter(nameof(TItem))] } """; - var generated = CompileToCSharp("TestGeneric.razor", input, throwOnFailure: true, fileKind: FileKinds.Component); + var generated = CompileToCSharp("TestGeneric.razor", input, throwOnFailure: true, fileKind: RazorFileKind.Component); - return generated.CodeDocument.GetTagHelperContext().TagHelpers.ToImmutableArray(); + return generated.CodeDocument.GetRequiredTagHelperContext().TagHelpers; } private ImmutableArray GetComponentWithTwoCascadingTypeParameter() @@ -205,8 +205,8 @@ @attribute [CascadingTypeParameter(nameof(TItemTwo))] } """; - var generated = CompileToCSharp("TestGenericTwo.razor", input, throwOnFailure: true, fileKind: FileKinds.Component); + var generated = CompileToCSharp("TestGenericTwo.razor", input, throwOnFailure: true, fileKind: RazorFileKind.Component); - return generated.CodeDocument.GetTagHelperContext().TagHelpers.ToImmutableArray(); + return generated.CodeDocument.GetRequiredTagHelperContext().TagHelpers; } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentFormattingTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentFormattingTest.cs index 8eb80f130fa..d69d65bfecd 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentFormattingTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentFormattingTest.cs @@ -98,7 +98,7 @@ @section Scripts } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -115,7 +115,7 @@ @section Scripts { } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestTheory, CombinatorialData] @@ -510,7 +510,7 @@ private void IncrementCount() } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -537,7 +537,7 @@ private void IncrementCount() } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -565,7 +565,7 @@ private void IncrementCount() } } """, - fileKind: FileKinds.Legacy, + fileKind: RazorFileKind.Legacy, codeBlockBraceOnNextLine: true); } @@ -593,7 +593,7 @@ private void IncrementCount() } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -619,7 +619,7 @@ private void IncrementCount() } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -648,7 +648,7 @@ private void IncrementCount() """, insertSpaces: false, tabSize: 8, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -879,7 +879,7 @@ @model MyModel expected: """ @model MyModel """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -892,7 +892,7 @@ await RunFormattingTestAsync( expected: """ @page "MyPage" """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -917,7 +917,7 @@ indentation of the rest of its lines will be preserved. *@ """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -940,7 +940,7 @@ indentation of the rest of its lines will be preserved. *@ """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -965,7 +965,7 @@ indentation of the rest of its lines will be preserved. *@ """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -1022,7 +1022,7 @@ await RunFormattingTestAsync( @removeTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" @tagHelperPrefix th: """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -1589,7 +1589,7 @@ await RunFormattingTestAsync( """, tabSize: 4, // Due to a bug in the HTML formatter, this needs to be 4 insertSpaces: false, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -1631,7 +1631,7 @@ await RunFormattingTestAsync( """, tabSize: 4, // Due to a bug in the HTML formatter, this needs to be 4 insertSpaces: false, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -1677,7 +1677,7 @@ await RunFormattingTestAsync( """, tabSize: 4, // Due to a bug in the HTML formatter, this needs to be 4 insertSpaces: false, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -2097,7 +2097,7 @@ await RunFormattingTestAsync( public bool VarBool { get; set; } } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact(SkipFlipLineEndingInOldEngine = true)] @@ -2155,7 +2155,7 @@ await RunFormattingTestAsync( public bool VarBool { get; set; } } """, - fileKind: FileKinds.Component); // tracked by https://github.com/dotnet/razor/issues/10836 + fileKind: RazorFileKind.Component); // tracked by https://github.com/dotnet/razor/issues/10836 } [FormattingTestFact] @@ -2215,7 +2215,7 @@ await RunFormattingTestAsync( public bool VarBool { get; set; } } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact(SkipFlipLineEndingInOldEngine = true)] @@ -2267,7 +2267,7 @@ await RunFormattingTestAsync( public bool VarBool { get; set; } } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact(SkipFlipLineEndingInOldEngine = true)] @@ -2325,7 +2325,7 @@ await RunFormattingTestAsync( public bool VarBool { get; set; } } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact] @@ -2387,7 +2387,7 @@ await RunFormattingTestAsync( public bool VarBool { get; set; } } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact] @@ -2437,7 +2437,7 @@ await RunFormattingTestAsync( } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact] @@ -2481,7 +2481,7 @@ await RunFormattingTestAsync( """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact] @@ -2519,7 +2519,7 @@ await RunFormattingTestAsync( """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact] @@ -2563,7 +2563,7 @@ await RunFormattingTestAsync( } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact] @@ -2613,7 +2613,7 @@ await RunFormattingTestAsync( } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact(SkipOldFormattingEngine = true)] @@ -2652,7 +2652,7 @@ private void IncrementCount() } } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact(SkipOldFormattingEngine = true)] @@ -2695,7 +2695,7 @@ private void IncrementCount() } } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact(SkipOldFormattingEngine = true)] @@ -2736,7 +2736,7 @@ private void IncrementCount() } } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact] @@ -2780,7 +2780,7 @@ await RunFormattingTestAsync( } """, - fileKind: FileKinds.Component); + fileKind: RazorFileKind.Component); } [FormattingTestFact] @@ -2874,7 +2874,7 @@ class C } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -2946,7 +2946,7 @@ await RunFormattingTestAsync( 4)) """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -3283,7 +3283,7 @@ @model BlazorApp58.Pages.Index2Model """, - fileKind: FileKinds.Legacy, + fileKind: RazorFileKind.Legacy, allowDiagnostics: true); } @@ -3490,7 +3490,7 @@ void Method() } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -3520,7 +3520,7 @@ @section Scripts { } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -3556,7 +3556,7 @@ function f() { } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -3594,7 +3594,7 @@ @section Scripts { } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -3635,7 +3635,7 @@ @section Scripts {

} """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -3683,7 +3683,7 @@ @section Scripts {

""", - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -3727,7 +3727,7 @@ @section Scripts { } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -3773,7 +3773,7 @@ @section Scripts } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -3813,7 +3813,7 @@ @section Scripts {

and finally this

} """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -3870,7 +3870,7 @@ void Method() { } } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -4066,7 +4066,7 @@ void Method() } } """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -5518,7 +5518,7 @@ public void M() """; - await RunFormattingTestAsync(input, input, fileKind: FileKinds.Component); + await RunFormattingTestAsync(input, input, fileKind: RazorFileKind.Component); } [FormattingTestFact] @@ -5825,7 +5825,7 @@ void Foo() { } } @Foo() """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact] @@ -5937,7 +5937,7 @@ await RunFormattingTestAsync( }" /> """, - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact(SkipOldFormattingEngine = true)] diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentOnTypeFormattingEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentOnTypeFormattingEndpointTest.cs index a91c2f4821c..6719d148762 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentOnTypeFormattingEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentOnTypeFormattingEndpointTest.cs @@ -4,11 +4,11 @@ using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Moq; using Xunit; using Xunit.Abstractions; @@ -59,7 +59,7 @@ public async Task Handle_OnTypeFormatting_DocumentNotFound_ReturnsNull() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, Character = ".", - Position = VsLspFactory.CreatePosition(2, 11), + Position = LspFactory.CreatePosition(2, 11), Options = new FormattingOptions { InsertSpaces = true, TabSize = 4 } }; var requestContext = CreateRazorRequestContext(documentContext); @@ -93,7 +93,7 @@ public async Task Handle_OnTypeFormatting_RemapFailed_ReturnsNull() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, Character = ".", - Position = VsLspFactory.CreatePosition(2, 11), + Position = LspFactory.CreatePosition(2, 11), Options = new FormattingOptions { InsertSpaces = true, TabSize = 4 }, }; var requestContext = CreateRazorRequestContext(documentContext); @@ -127,7 +127,7 @@ public async Task Handle_OnTypeFormatting_HtmlLanguageKind_ReturnsNull() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, Character = "}", - Position = VsLspFactory.CreatePosition(2, 11), + Position = LspFactory.CreatePosition(2, 11), Options = new FormattingOptions { InsertSpaces = true, TabSize = 4 }, }; var requestContext = CreateRazorRequestContext(documentContext); @@ -161,7 +161,7 @@ public async Task Handle_OnTypeFormatting_RazorLanguageKind_ReturnsNull() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, Character = "}", - Position = VsLspFactory.CreatePosition(2, 11), + Position = LspFactory.CreatePosition(2, 11), Options = new FormattingOptions { InsertSpaces = true, TabSize = 4 } }; var requestContext = CreateRazorRequestContext(documentContext); @@ -195,7 +195,7 @@ public async Task Handle_OnTypeFormatting_UnexpectedTriggerCharacter_ReturnsNull { TextDocument = new TextDocumentIdentifier { Uri = uri, }, Character = ".", - Position = VsLspFactory.CreatePosition(2, 11), + Position = LspFactory.CreatePosition(2, 11), Options = new FormattingOptions { InsertSpaces = true, TabSize = 4 } }; Assert.True(documentContextFactory.TryCreate(uri, out var documentContext)); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentRangeFormattingEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentRangeFormattingEndpointTest.cs index ee39bf46a73..bdf3f31ec25 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentRangeFormattingEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/DocumentRangeFormattingEndpointTest.cs @@ -6,7 +6,6 @@ using System.Text.Json; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -32,7 +31,7 @@ public async Task Handle_FormattingEnabled_InvokesFormattingService() { TextDocument = new TextDocumentIdentifier { Uri = uri, }, Options = new FormattingOptions(), - Range = VsLspFactory.DefaultRange + Range = LspFactory.DefaultRange }; var requestContext = CreateRazorRequestContext(documentContext); @@ -66,32 +65,6 @@ public async Task Handle_DocumentNotFound_ReturnsNull() Assert.Null(result); } - [Fact] - public async Task Handle_UnsupportedCodeDocument_ReturnsNull() - { - // Arrange - var codeDocument = TestRazorCodeDocument.CreateEmpty(); - codeDocument.SetUnsupported(); - var uri = new Uri("file://path/test.razor"); - - var documentContext = CreateDocumentContext(uri, codeDocument); - var formattingService = new DummyRazorFormattingService(); - var optionsMonitor = GetOptionsMonitor(enableFormatting: true); - var htmlFormatter = new TestHtmlFormatter(); - var endpoint = new DocumentRangeFormattingEndpoint(formattingService, htmlFormatter, optionsMonitor); - var @params = new DocumentRangeFormattingParams() - { - TextDocument = new TextDocumentIdentifier { Uri = uri, }, - }; - var requestContext = CreateRazorRequestContext(documentContext); - - // Act - var result = await endpoint.HandleRequestAsync(@params, requestContext, DisposalToken); - - // Assert - Assert.Null(result); - } - [Fact] public async Task Handle_FormattingDisabled_ReturnsNull() { @@ -118,15 +91,13 @@ public async Task Handle_FormattingOnPasteDisabled_ReturnsNull() var optionsMonitor = GetOptionsMonitor(formatOnPaste: false); var htmlFormatter = new TestHtmlFormatter(); var endpoint = new DocumentRangeFormattingEndpoint(formattingService, htmlFormatter, optionsMonitor); - var bytes = Encoding.UTF8.GetBytes("\"True\""); - var reader = new Utf8JsonReader(bytes); var @params = new DocumentRangeFormattingParams() { Options = new() { OtherOptions = new() { - { "fromPaste", JsonElement.ParseValue(ref reader) } + { "fromPaste", true } } } }; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingContentValidationPassTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingContentValidationPassTest.cs index e443aede77d..d9599dea581 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingContentValidationPassTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingContentValidationPassTest.cs @@ -6,10 +6,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.Formatting; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; using Moq; using Xunit; @@ -71,7 +71,11 @@ private FormattingContentValidationPass GetPass() return pass; } - private static FormattingContext CreateFormattingContext(TestCode input, int tabSize = 4, bool insertSpaces = true, string? fileKind = null) + private static FormattingContext CreateFormattingContext + (TestCode input, + int tabSize = 4, + bool insertSpaces = true, + RazorFileKind? fileKind = null) { var source = SourceText.From(input.Text); var path = "file:///path/to/document.razor"; @@ -91,10 +95,15 @@ private static FormattingContext CreateFormattingContext(TestCode input, int tab return context; } - private static (RazorCodeDocument, IDocumentSnapshot) CreateCodeDocumentAndSnapshot(SourceText text, string path, ImmutableArray tagHelpers = default, string? fileKind = null) + private static (RazorCodeDocument, IDocumentSnapshot) CreateCodeDocumentAndSnapshot( + SourceText text, + string path, + ImmutableArray tagHelpers = default, + RazorFileKind? fileKind = null) { - fileKind ??= FileKinds.Component; + var fileKindValue = fileKind ?? RazorFileKind.Component; tagHelpers = tagHelpers.NullToEmpty(); + var sourceDocument = RazorSourceDocument.Create(text, RazorSourceDocumentProperties.Create(path, path)); var projectEngine = RazorProjectEngine.Create(builder => { @@ -105,7 +114,8 @@ private static (RazorCodeDocument, IDocumentSnapshot) CreateCodeDocumentAndSnaps builder.UseRoslynTokenizer = true; }); }); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKind, importSources: default, tagHelpers); + + var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKindValue, importSources: default, tagHelpers); var documentSnapshot = new StrictMock(); documentSnapshot @@ -119,7 +129,7 @@ private static (RazorCodeDocument, IDocumentSnapshot) CreateCodeDocumentAndSnaps .ReturnsAsync(tagHelpers); documentSnapshot .Setup(d => d.FileKind) - .Returns(fileKind); + .Returns(fileKindValue); return (codeDocument, documentSnapshot.Object); } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingDiagnosticValidationPassTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingDiagnosticValidationPassTest.cs index f5acbae0706..3082ce22031 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingDiagnosticValidationPassTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingDiagnosticValidationPassTest.cs @@ -5,10 +5,10 @@ using System.Collections.Immutable; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.Formatting; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; using Xunit; using Xunit.Abstractions; @@ -69,7 +69,11 @@ private FormattingDiagnosticValidationPass GetPass() return pass; } - private static FormattingContext CreateFormattingContext(TestCode input, int tabSize = 4, bool insertSpaces = true, string? fileKind = null) + private static FormattingContext CreateFormattingContext( + TestCode input, + int tabSize = 4, + bool insertSpaces = true, + RazorFileKind? fileKind = null) { var source = SourceText.From(input.Text); var path = "file:///path/to/document.razor"; @@ -89,10 +93,15 @@ private static FormattingContext CreateFormattingContext(TestCode input, int tab return context; } - private static (RazorCodeDocument, IDocumentSnapshot) CreateCodeDocumentAndSnapshot(SourceText text, string path, ImmutableArray tagHelpers = default, string? fileKind = null) + private static (RazorCodeDocument, IDocumentSnapshot) CreateCodeDocumentAndSnapshot( + SourceText text, + string path, + ImmutableArray tagHelpers = default, + RazorFileKind? fileKind = null) { - fileKind ??= FileKinds.Component; + var fileKindValue = fileKind ?? RazorFileKind.Component; tagHelpers = tagHelpers.NullToEmpty(); + var sourceDocument = RazorSourceDocument.Create(text, RazorSourceDocumentProperties.Create(path, path)); var projectEngine = RazorProjectEngine.Create(builder => { @@ -103,10 +112,10 @@ private static (RazorCodeDocument, IDocumentSnapshot) CreateCodeDocumentAndSnaps builder.UseRoslynTokenizer = true; }); }); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKind, importSources: default, tagHelpers); + var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKindValue, importSources: default, tagHelpers); var documentSnapshot = FormattingTestBase.CreateDocumentSnapshot( - path, fileKind, codeDocument, codeDocument, projectEngine, imports: [], importDocuments: [], tagHelpers, inGlobalNamespace: false, forceRuntimeCodeGeneration: false); + path, fileKindValue, codeDocument, codeDocument, projectEngine, imports: [], importDocuments: [], tagHelpers, inGlobalNamespace: false, forceRuntimeCodeGeneration: false); return (codeDocument, documentSnapshot); } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingLanguageServerClient.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingLanguageServerClient.cs index 2962c727860..a68701fac56 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingLanguageServerClient.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingLanguageServerClient.cs @@ -7,14 +7,12 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.Formatting; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Newtonsoft.Json.Linq; +using Microsoft.CodeAnalysis.Razor.Utilities; namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting; @@ -37,7 +35,7 @@ private async Task FormatAsync(DocumentOnTypeFo { var generatedHtml = GetGeneratedHtml(@params.TextDocument.Uri); - var edits = await _htmlFormattingService.GetOnTypeFormattingEditsAsync(_loggerFactory, @params.TextDocument.Uri, generatedHtml, @params.Position, @params.Options.InsertSpaces, @params.Options.TabSize); + var edits = await _htmlFormattingService.GetOnTypeFormattingEditsAsync(_loggerFactory, @params.TextDocument.Uri, generatedHtml, @params.Position, @params.Options.InsertSpaces, @params.Options.TabSize); return new() { @@ -91,16 +89,6 @@ static TResponse Convert(RazorDocumentFormattingResponse response) } } - public object GetService(Type serviceType) - { - throw new NotImplementedException(); - } - - public bool TryGetRequest(long id, out string method, out TaskCompletionSource pendingTask) - { - throw new NotImplementedException(); - } - public Task SendNotificationAsync(string method, TParams @params, CancellationToken cancellationToken) { throw new NotImplementedException(); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingTestBase.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingTestBase.cs index 5738909b5a5..efa57db14e4 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingTestBase.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/FormattingTestBase.cs @@ -13,8 +13,6 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.IntegrationTests; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; @@ -24,12 +22,12 @@ using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.Formatting; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; - +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Roslyn.Test.Utilities; using Xunit; @@ -62,7 +60,7 @@ private protected async Task RunFormattingTestAsync( string expected, int tabSize = 4, bool insertSpaces = true, - string? fileKind = null, + RazorFileKind? fileKind = null, ImmutableArray tagHelpers = default, bool allowDiagnostics = false, bool codeBlockBraceOnNextLine = false, @@ -75,10 +73,19 @@ private protected async Task RunFormattingTestAsync( await RunFormattingTestInternalAsync(input, expected, tabSize, insertSpaces, fileKind, tagHelpers, allowDiagnostics, razorLSPOptions, inGlobalNamespace); } - private async Task RunFormattingTestInternalAsync(string input, string expected, int tabSize, bool insertSpaces, string? fileKind, ImmutableArray tagHelpers, bool allowDiagnostics, RazorLSPOptions? razorLSPOptions, bool inGlobalNamespace) + private async Task RunFormattingTestInternalAsync( + string input, + string expected, + int tabSize, + bool insertSpaces, + RazorFileKind? fileKind, + ImmutableArray tagHelpers, + bool allowDiagnostics, + RazorLSPOptions? razorLSPOptions, + bool inGlobalNamespace) { // Arrange - fileKind ??= FileKinds.Component; + var fileKindValue = fileKind ?? RazorFileKind.Component; tagHelpers = tagHelpers.NullToEmpty(); TestFileMarkupParser.GetSpans(input, out input, out ImmutableArray spans); @@ -90,9 +97,9 @@ private async Task RunFormattingTestInternalAsync(string input, string expected, tagHelpers = tagHelpers.AddRange(await s_standardTagHelpers.GetValueAsync(DisposalToken)); - var path = "file:///path/to/Document." + fileKind; + var path = "file:///path/to/Document." + fileKindValue.ToString(); var uri = new Uri(path); - var (codeDocument, documentSnapshot) = CreateCodeDocumentAndSnapshot(source, uri.AbsolutePath, tagHelpers, fileKind, allowDiagnostics, inGlobalNamespace); + var (codeDocument, documentSnapshot) = CreateCodeDocumentAndSnapshot(source, uri.AbsolutePath, tagHelpers, fileKindValue, allowDiagnostics, inGlobalNamespace); var options = new FormattingOptions() { TabSize = tabSize, @@ -132,7 +139,7 @@ private protected async Task RunOnTypeFormattingTestAsync( char triggerCharacter, int tabSize = 4, bool insertSpaces = true, - string? fileKind = null, + RazorFileKind? fileKind = null, int? expectedChangedLines = null, RazorLSPOptions? razorLSPOptions = null, bool inGlobalNamespace = false) @@ -140,7 +147,7 @@ private protected async Task RunOnTypeFormattingTestAsync( (input, expected) = ProcessFormattingContext(input, expected); // Arrange - fileKind ??= FileKinds.Component; + var fileKindValue = fileKind ?? RazorFileKind.Component; TestFileMarkupParser.GetPosition(input, out input, out var positionAfterTrigger); @@ -149,7 +156,7 @@ private protected async Task RunOnTypeFormattingTestAsync( var razorSourceText = SourceText.From(input); var path = "file:///path/to/Document.razor"; var uri = new Uri(path); - var (codeDocument, documentSnapshot) = CreateCodeDocumentAndSnapshot(razorSourceText, uri.AbsolutePath, tagHelpers, fileKind: fileKind, inGlobalNamespace: inGlobalNamespace); + var (codeDocument, documentSnapshot) = CreateCodeDocumentAndSnapshot(razorSourceText, uri.AbsolutePath, tagHelpers, fileKind: fileKindValue, inGlobalNamespace: inGlobalNamespace); var languageServerFeatureOptions = new TestLanguageServerFeatureOptions(useNewFormattingEngine: _context.UseNewFormattingEngine); @@ -218,9 +225,15 @@ private protected async Task RunOnTypeFormattingTestAsync( return (input, expected); } - private (RazorCodeDocument, IDocumentSnapshot) CreateCodeDocumentAndSnapshot(SourceText text, string path, ImmutableArray tagHelpers, string? fileKind = null, bool allowDiagnostics = false, bool inGlobalNamespace = false) + private (RazorCodeDocument, IDocumentSnapshot) CreateCodeDocumentAndSnapshot( + SourceText text, + string path, + ImmutableArray tagHelpers, + RazorFileKind? fileKind = null, + bool allowDiagnostics = false, + bool inGlobalNamespace = false) { - fileKind ??= FileKinds.Component; + var fileKindValue = fileKind ?? RazorFileKind.Component; var sourceDocument = RazorSourceDocument.Create(text, RazorSourceDocumentProperties.Create( filePath: path, @@ -251,8 +264,8 @@ @using Microsoft.AspNetCore.Components.Web .Returns(importPath); var projectFileSystem = new TestRazorProjectFileSystem([ - new TestRazorProjectItem(path, fileKind: fileKind), - new TestRazorProjectItem(importPath, fileKind: FileKinds.ComponentImport)]); + new TestRazorProjectItem(path, fileKind: fileKindValue), + new TestRazorProjectItem(importPath, fileKind: RazorFileKind.ComponentImport)]); var projectEngine = RazorProjectEngine.Create( new RazorConfiguration(RazorLanguageVersion.Latest, "TestConfiguration", Extensions: []), @@ -270,9 +283,9 @@ @using Microsoft.AspNetCore.Components.Web RazorExtensions.Register(builder); }); - var designTimeCodeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKind, [importSource], tagHelpers); + var designTimeCodeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKindValue, [importSource], tagHelpers); var codeDocument = _context.ForceRuntimeCodeGeneration - ? projectEngine.Process(sourceDocument, fileKind, [importSource], tagHelpers) + ? projectEngine.Process(sourceDocument, fileKindValue, [importSource], tagHelpers) : designTimeCodeDocument; if (!allowDiagnostics) @@ -281,14 +294,14 @@ @using Microsoft.AspNetCore.Components.Web } var documentSnapshot = CreateDocumentSnapshot( - path, fileKind, codeDocument, designTimeCodeDocument, projectEngine, [importSnapshotMock.Object], [importSource], tagHelpers, inGlobalNamespace, _context.ForceRuntimeCodeGeneration); + path, fileKindValue, codeDocument, designTimeCodeDocument, projectEngine, [importSnapshotMock.Object], [importSource], tagHelpers, inGlobalNamespace, _context.ForceRuntimeCodeGeneration); return (codeDocument, documentSnapshot); } internal static IDocumentSnapshot CreateDocumentSnapshot( string path, - string fileKind, + RazorFileKind fileKind, RazorCodeDocument codeDocument, RazorCodeDocument designTimeCodeDocument, RazorProjectEngine projectEngine, @@ -299,6 +312,7 @@ internal static IDocumentSnapshot CreateDocumentSnapshot( bool forceRuntimeCodeGeneration) { var projectKey = new ProjectKey(Path.Combine(path, "obj")); + var snapshotMock = new StrictMock(); snapshotMock diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/HtmlFormattingTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/HtmlFormattingTest.cs index 2350d27926b..c2563833dbd 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/HtmlFormattingTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/HtmlFormattingTest.cs @@ -431,12 +431,12 @@ @typeparam TValue } """; - var selectComponent = CompileToCSharp("Select.razor", select, throwOnFailure: true, fileKind: FileKinds.Component); - var selectItemComponent = CompileToCSharp("SelectItem.razor", selectItem, throwOnFailure: true, fileKind: FileKinds.Component); + var selectComponent = CompileToCSharp("Select.razor", select, throwOnFailure: true, fileKind: RazorFileKind.Component); + var selectItemComponent = CompileToCSharp("SelectItem.razor", selectItem, throwOnFailure: true, fileKind: RazorFileKind.Component); using var _ = ArrayBuilderPool.GetPooledObject(out var tagHelpers); - tagHelpers.AddRange(selectComponent.CodeDocument.GetTagHelperContext().TagHelpers); - tagHelpers.AddRange(selectItemComponent.CodeDocument.GetTagHelperContext().TagHelpers); + tagHelpers.AddRange(selectComponent.CodeDocument.GetRequiredTagHelperContext().TagHelpers); + tagHelpers.AddRange(selectItemComponent.CodeDocument.GetRequiredTagHelperContext().TagHelpers); return tagHelpers.ToImmutable(); } @@ -538,8 +538,8 @@ public class Component1 : ComponentBase } """)); - var generated = CompileToCSharp("Test.razor", string.Empty, throwOnFailure: false, fileKind: FileKinds.Component); + var generated = CompileToCSharp("Test.razor", string.Empty, throwOnFailure: false, fileKind: RazorFileKind.Component); - return generated.CodeDocument.GetTagHelperContext().TagHelpers.ToImmutableArray(); + return generated.CodeDocument.GetRequiredTagHelperContext().TagHelpers; } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/OnTypeFormattingTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/OnTypeFormattingTest.cs index 140fdc25b32..5580eafd50f 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/OnTypeFormattingTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/OnTypeFormattingTest.cs @@ -1096,7 +1096,7 @@ await RunOnTypeFormattingTestAsync( """, triggerCharacter: ';', - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); } [FormattingTestFact(SkipFlipLineEnding = true)] diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/TestHtmlFormatter.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/TestHtmlFormatter.cs index f5d4c5d3715..3ca43b41c91 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/TestHtmlFormatter.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Formatting_NetFx/TestHtmlFormatter.cs @@ -5,9 +5,8 @@ using System.Collections.Immutable; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.Formatting; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/GeneratedDocumentPublisherTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/GeneratedDocumentPublisherTest.cs index ace736b3552..9a3773f678c 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/GeneratedDocumentPublisherTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/GeneratedDocumentPublisherTest.cs @@ -9,7 +9,6 @@ using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/GeneratedDocumentSynchronizerTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/GeneratedDocumentSynchronizerTest.cs index 6e5683ea8a8..cc494d49125 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/GeneratedDocumentSynchronizerTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/GeneratedDocumentSynchronizerTest.cs @@ -3,7 +3,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Hover/HoverEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Hover/HoverEndpointTest.cs index 4fc39e2caaf..401fd5b8f5b 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Hover/HoverEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Hover/HoverEndpointTest.cs @@ -9,7 +9,6 @@ using Microsoft.AspNetCore.Razor.LanguageServer.Completion; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.AspNetCore.Razor.LanguageServer.Hover; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; @@ -18,12 +17,10 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Microsoft.VisualStudio.Text.Adornments; using Moq; +using Roslyn.Text.Adornments; using Xunit; using Xunit.Abstractions; -using LspHover = Microsoft.VisualStudio.LanguageServer.Protocol.Hover; namespace Microsoft.AspNetCore.Razor.LanguageServer.Test.Hover; @@ -34,8 +31,7 @@ public async Task Handle_Hover_SingleServer_CallsDelegatedLanguageServer() { // Arrange var languageServerFeatureOptions = StrictMock.Of(options => - options.SingleServerSupport == true && - options.UseRazorCohostServer == false); + options.SingleServerSupport == true); var delegatedHover = new LspHover(); @@ -95,7 +91,7 @@ public async Task Handle_Hover_SingleServer_CSharpVariable() // Assert Assert.NotNull(result); var range = result.Range; - var expected = VsLspFactory.CreateSingleLineRange(line: 3, character: 8, length: 10); + var expected = LspFactory.CreateSingleLineRange(line: 3, character: 8, length: 10); Assert.Equal(expected, range); @@ -127,7 +123,7 @@ public async Task Handle_Hover_SingleServer_Component() // Assert Assert.NotNull(result); var range = result.Range; - var expected = VsLspFactory.CreateSingleLineRange(line: 2, character: 1, length: 5); + var expected = LspFactory.CreateSingleLineRange(line: 2, character: 1, length: 5); Assert.Equal(expected, range); @@ -195,8 +191,7 @@ public async Task Handle_Hover_SingleServer_AddTagHelper() options.SupportsFileManipulation == true && options.SingleServerSupport == true && options.CSharpVirtualDocumentSuffix == ".g.cs" && - options.HtmlVirtualDocumentSuffix == ".g.html" && - options.UseRazorCohostServer == false); + options.HtmlVirtualDocumentSuffix == ".g.html"); var languageServer = new HoverLanguageServer(csharpServer, csharpDocumentUri, DisposalToken); var documentMappingService = new LspDocumentMappingService(FilePathService, documentContextFactory, LoggerFactory); @@ -266,7 +261,7 @@ private static (DocumentContext, Position) CreateDefaultDocumentContext() .Returns(path); documentSnapshotMock .SetupGet(x => x.FileKind) - .Returns(FileKinds.Component); + .Returns(RazorFileKind.Component); documentSnapshotMock .SetupGet(x => x.Version) .Returns(0); @@ -315,21 +310,14 @@ private HoverEndpoint CreateEndpoint( return endpoint; } - private class HoverLanguageServer : IClientConnection + private class HoverLanguageServer( + CSharpTestLspServer csharpServer, + Uri csharpDocumentUri, + CancellationToken cancellationToken) : IClientConnection { - private readonly CSharpTestLspServer _csharpServer; - private readonly Uri _csharpDocumentUri; - private readonly CancellationToken _cancellationToken; - - public HoverLanguageServer( - CSharpTestLspServer csharpServer, - Uri csharpDocumentUri, - CancellationToken cancellationToken) - { - _csharpServer = csharpServer; - _csharpDocumentUri = csharpDocumentUri; - _cancellationToken = cancellationToken; - } + private readonly CSharpTestLspServer _csharpServer = csharpServer; + private readonly Uri _csharpDocumentUri = csharpDocumentUri; + private readonly CancellationToken _cancellationToken = cancellationToken; public Task SendNotificationAsync(string method, TParams @params, CancellationToken cancellationToken) { diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Implementation/ImplementationEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Implementation/ImplementationEndpointTest.cs index b9e83400bbc..fcc727b7983 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Implementation/ImplementationEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Implementation/ImplementationEndpointTest.cs @@ -7,10 +7,9 @@ using System.Collections.Immutable; using System.Linq; using System.Threading.Tasks; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -112,8 +111,8 @@ private async Task VerifyCSharpGoToImplementationAsync(string input) var result = await endpoint.HandleRequestAsync(request, requestContext, DisposalToken); // Assert - Assert.NotNull(result.Value.First); - var locations = result.Value.First; + Assert.NotNull(result.First); + var locations = result.First; Assert.Equal(expectedSpans.Length, locations.Length); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/InlayHints/InlayHintEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/InlayHints/InlayHintEndpointTest.cs index 285635a557a..763452a93c2 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/InlayHints/InlayHintEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/InlayHints/InlayHintEndpointTest.cs @@ -6,10 +6,9 @@ using System.Collections.Immutable; using System.Linq; using System.Threading.Tasks; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; @@ -109,7 +108,7 @@ public async Task InlayHints_InvalidRange(int startLine, int starChar, int endLi { Uri = new Uri(razorFilePath) }, - Range = VsLspFactory.CreateRange(startLine, starChar, endLine, endChar) + Range = LspFactory.CreateRange(startLine, starChar, endLine, endChar) }; Assert.True(DocumentContextFactory.TryCreate(request.TextDocument, out var documentContext)); var requestContext = CreateRazorRequestContext(documentContext); @@ -140,7 +139,7 @@ private async Task VerifyInlayHintsAsync(string input, Dictionary + Position = LspFactory.CreatePosition(1, 3) // }; var requestContext = CreateRazorRequestContext(documentContext: null); @@ -51,13 +50,13 @@ public async Task Handle_TagHelperStartTag_ReturnsCorrectRange() var request = new LinkedEditingRangeParams { TextDocument = new TextDocumentIdentifier { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 3) // + Position = LspFactory.CreatePosition(1, 3) // }; var expectedRanges = new[] { - VsLspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5), - VsLspFactory.CreateSingleLineRange(line: 1, character: 9, length: 5) + LspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5), + LspFactory.CreateSingleLineRange(line: 1, character: 9, length: 5) }; var requestContext = CreateRazorRequestContext(documentContext); @@ -84,13 +83,13 @@ public async Task Handle_TagHelperStartTag_ReturnsCorrectRange_EndSpan() var request = new LinkedEditingRangeParams { TextDocument = new TextDocumentIdentifier { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 6) // + Position = LspFactory.CreatePosition(1, 6) // }; var expectedRanges = new[] { - VsLspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5), - VsLspFactory.CreateSingleLineRange(line: 1, character: 9, length: 5) + LspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5), + LspFactory.CreateSingleLineRange(line: 1, character: 9, length: 5) }; var requestContext = CreateRazorRequestContext(documentContext); @@ -117,13 +116,13 @@ public async Task Handle_TagHelperEndTag_ReturnsCorrectRange() var request = new LinkedEditingRangeParams { TextDocument = new TextDocumentIdentifier { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 9) // + Position = LspFactory.CreatePosition(1, 9) // }; var expectedRanges = new[] { - VsLspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5), - VsLspFactory.CreateSingleLineRange(line: 1, character: 9, length: 5) + LspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5), + LspFactory.CreateSingleLineRange(line: 1, character: 9, length: 5) }; var requestContext = CreateRazorRequestContext(documentContext); @@ -150,7 +149,7 @@ public async Task Handle_NoTag_ReturnsNull() var request = new LinkedEditingRangeParams { TextDocument = new TextDocumentIdentifier { Uri = uri }, - Position = VsLspFactory.CreatePosition(0, 1) // @[||]addTagHelper * + Position = LspFactory.CreatePosition(0, 1) // @[||]addTagHelper * }; var requestContext = CreateRazorRequestContext(documentContext); @@ -176,7 +175,7 @@ public async Task Handle_SelfClosingTagHelper_ReturnsNull() var request = new LinkedEditingRangeParams { TextDocument = new TextDocumentIdentifier { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 3) // + Position = LspFactory.CreatePosition(1, 3) // }; var requestContext = CreateRazorRequestContext(documentContext); @@ -202,13 +201,13 @@ public async Task Handle_NestedTagHelperStartTags_ReturnsCorrectRange() var request = new LinkedEditingRangeParams { TextDocument = new TextDocumentIdentifier { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 1) // <[||]test1> + Position = LspFactory.CreatePosition(1, 1) // <[||]test1> }; var expectedRanges = new[] { - VsLspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5), - VsLspFactory.CreateSingleLineRange(line: 1, character: 24, length: 5) + LspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5), + LspFactory.CreateSingleLineRange(line: 1, character: 24, length: 5) }; var requestContext = CreateRazorRequestContext(documentContext); @@ -235,13 +234,13 @@ public async Task Handle_HTMLStartTag_ReturnsCorrectRange() var request = new LinkedEditingRangeParams { TextDocument = new TextDocumentIdentifier { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 3) // + Position = LspFactory.CreatePosition(1, 3) // }; var expectedRanges = new[] { - VsLspFactory.CreateSingleLineRange(line: 1, character: 1, length: 4), - VsLspFactory.CreateSingleLineRange(line: 1, character: 8, length: 4) + LspFactory.CreateSingleLineRange(line: 1, character: 1, length: 4), + LspFactory.CreateSingleLineRange(line: 1, character: 8, length: 4) }; var requestContext = CreateRazorRequestContext(documentContext); @@ -268,13 +267,13 @@ public async Task Handle_HTMLEndTag_ReturnsCorrectRange() var request = new LinkedEditingRangeParams { TextDocument = new TextDocumentIdentifier { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 8) // + Position = LspFactory.CreatePosition(1, 8) // }; var expectedRanges = new[] { - VsLspFactory.CreateSingleLineRange(line: 1, character: 1, length: 4), - VsLspFactory.CreateSingleLineRange(line: 1, character: 8, length: 4) + LspFactory.CreateSingleLineRange(line: 1, character: 1, length: 4), + LspFactory.CreateSingleLineRange(line: 1, character: 8, length: 4) }; var requestContext = CreateRazorRequestContext(documentContext); @@ -301,7 +300,7 @@ public async Task Handle_SelfClosingHTMLTag_ReturnsNull() var request = new LinkedEditingRangeParams { TextDocument = new TextDocumentIdentifier { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 3) // + Position = LspFactory.CreatePosition(1, 3) // }; var requestContext = CreateRazorRequestContext(documentContext); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/MapCode/MapCodeTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/MapCode/MapCodeTest.cs index 23dd69eb0f7..f4e73568da3 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/MapCode/MapCodeTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/MapCode/MapCodeTest.cs @@ -8,13 +8,12 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.AspNetCore.Razor.LanguageServer.MapCode; -using Microsoft.AspNetCore.Razor.Telemetry; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; @@ -275,7 +274,7 @@ private async Task VerifyCodeMappingAsync( string[] codeToMap, string expectedCode, string razorFilePath = RazorFilePath, - Location[][]? locations = null) + LspLocation[][]? locations = null) { // Arrange TestFileMarkupParser.GetPositionAndSpans(originalCode, out var output, out int cursorPosition, out ImmutableArray spans); @@ -311,7 +310,7 @@ private async Task VerifyCodeMappingAsync( FocusLocations = locations ?? [ [ - new Location + new LspLocation { Range = sourceText.GetZeroWidthRange(cursorPosition), Uri = new Uri(razorFilePath) @@ -394,7 +393,7 @@ private static SourceText ApplyWorkspaceEdit(WorkspaceEdit workspaceEdit, Uri do foreach (var currentEdit in edit.Edits) { - sourceText = sourceText.WithChanges(sourceText.GetTextChange(currentEdit)); + sourceText = sourceText.WithChanges(sourceText.GetTextChange(((TextEdit)currentEdit))); } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorEditHelperTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorEditHelperTest.cs index 10502c70487..9f540535f15 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorEditHelperTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorEditHelperTest.cs @@ -8,15 +8,14 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Protocol; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorLanguageQueryEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorLanguageQueryEndpointTest.cs index 7205102f8a2..8c0a1a0b0bf 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorLanguageQueryEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorLanguageQueryEndpointTest.cs @@ -8,7 +8,6 @@ using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -38,7 +37,7 @@ public async Task Handle_ResolvesLanguageRequest_Razor() var request = new RazorLanguageQueryParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(0, 1), + Position = LspFactory.CreatePosition(0, 1), }; var requestContext = CreateRazorRequestContext(documentContext); @@ -64,7 +63,7 @@ public async Task Handle_ResolvesLanguageRequest_Html() var request = new RazorLanguageQueryParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(0, 2), + Position = LspFactory.CreatePosition(0, 2), }; var requestContext = CreateRazorRequestContext(documentContext); @@ -93,7 +92,7 @@ public async Task Handle_ResolvesLanguageRequest_CSharp() var request = new RazorLanguageQueryParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(0, 1), + Position = LspFactory.CreatePosition(0, 1), }; var requestContext = CreateRazorRequestContext(documentContext); @@ -107,9 +106,8 @@ public async Task Handle_ResolvesLanguageRequest_CSharp() Assert.Equal(1, response.Position.Character); } - // This is more of an integration test to validate that all the pieces work together [Fact] - public async Task Handle_Unsupported_ResolvesLanguageRequest_Html() + public async Task Handle_AfterLastLineCharacterZero() { // Arrange var documentPath = new Uri("C:/path/to/document.cshtml"); @@ -117,13 +115,13 @@ public async Task Handle_Unsupported_ResolvesLanguageRequest_Html() razorSource: "@", projectedCSharpSource: "/* CSharp */", sourceMappings: [new SourceMapping(new SourceSpan(0, 1), new SourceSpan(0, 12))]); - codeDocument.SetUnsupported(); + var documentContext = CreateDocumentContext(documentPath, codeDocument); var languageEndpoint = new RazorLanguageQueryEndpoint(_documentMappingService, LoggerFactory); var request = new RazorLanguageQueryParams() { Uri = documentPath, - Position = VsLspFactory.CreatePosition(0, 1), + Position = LspFactory.CreatePosition(1, 0), }; var requestContext = CreateRazorRequestContext(documentContext); @@ -133,41 +131,11 @@ public async Task Handle_Unsupported_ResolvesLanguageRequest_Html() // Assert Assert.NotNull(response); - Assert.Equal(RazorLanguageKind.Html, response.Kind); + Assert.Equal(RazorLanguageKind.CSharp, response.Kind); Assert.Equal(0, response.Position.Line); Assert.Equal(1, response.Position.Character); } - [Fact] - public async Task Handle_AfterLastLineCharacterZero() - { - // Arrange - var documentPath = new Uri("C:/path/to/document.cshtml"); - var codeDocument = CreateCodeDocumentWithCSharpProjection( - razorSource: "@", - projectedCSharpSource: "/* CSharp */", - sourceMappings: [new SourceMapping(new SourceSpan(0, 1), new SourceSpan(0, 12))]); - codeDocument.SetUnsupported(); - var documentContext = CreateDocumentContext(documentPath, codeDocument); - var languageEndpoint = new RazorLanguageQueryEndpoint(_documentMappingService, LoggerFactory); - var request = new RazorLanguageQueryParams() - { - Uri = documentPath, - Position = VsLspFactory.CreatePosition(1, 0), - }; - - var requestContext = CreateRazorRequestContext(documentContext); - - // Act - var response = await languageEndpoint.HandleRequestAsync(request, requestContext, DisposalToken); - - // Assert - Assert.NotNull(response); - Assert.Equal(RazorLanguageKind.Html, response.Kind); - Assert.Equal(1, response.Position.Line); - Assert.Equal(0, response.Position.Character); - } - private static RazorCodeDocument CreateCodeDocumentWithCSharpProjection(string razorSource, string projectedCSharpSource, ImmutableArray sourceMappings) { var codeDocument = CreateCodeDocument(razorSource, tagHelpers: []); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorMapToDocumentRangesEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorMapToDocumentRangesEndpointTest.cs index 4da5f69d77b..016c4d57fbc 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorMapToDocumentRangesEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Mapping/RazorMapToDocumentRangesEndpointTest.cs @@ -9,7 +9,6 @@ using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.DocumentMapping; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -43,10 +42,10 @@ public async Task Handle_MapToDocumentRanges_CSharp() var request = new RazorMapToDocumentRangesParams() { Kind = RazorLanguageKind.CSharp, - ProjectedRanges = [VsLspFactory.CreateSingleLineRange(line: 0, character: 10, length: 12)], + ProjectedRanges = [LspFactory.CreateSingleLineRange(line: 0, character: 10, length: 12)], RazorDocumentUri = documentPath, }; - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 0, character: 4, length: 12); + var expectedRange = LspFactory.CreateSingleLineRange(line: 0, character: 4, length: 12); var requestContext = CreateRazorRequestContext(documentContext); @@ -72,7 +71,7 @@ public async Task Handle_MapToDocumentRanges_CSharp_Unmapped() var request = new RazorMapToDocumentRangesParams() { Kind = RazorLanguageKind.CSharp, - ProjectedRanges = [VsLspFactory.CreateSingleLineRange(start: (0, 0), length: 3)], + ProjectedRanges = [LspFactory.CreateSingleLineRange(start: (0, 0), length: 3)], RazorDocumentUri = documentPath, }; @@ -83,7 +82,7 @@ public async Task Handle_MapToDocumentRanges_CSharp_Unmapped() // Assert Assert.NotNull(response); - Assert.Equal(VsLspFactory.UndefinedRange, response!.Ranges[0]); + Assert.Equal(LspFactory.UndefinedRange, response!.Ranges[0]); } [Fact] @@ -100,7 +99,7 @@ public async Task Handle_MapToDocumentRanges_CSharp_LeadingOverlapsUnmapped() var request = new RazorMapToDocumentRangesParams() { Kind = RazorLanguageKind.CSharp, - ProjectedRanges = [VsLspFactory.CreateSingleLineRange(start: (0, 0), length: 22)], + ProjectedRanges = [LspFactory.CreateSingleLineRange(start: (0, 0), length: 22)], RazorDocumentUri = documentPath, }; @@ -111,7 +110,7 @@ public async Task Handle_MapToDocumentRanges_CSharp_LeadingOverlapsUnmapped() // Assert Assert.NotNull(response); - Assert.Equal(VsLspFactory.UndefinedRange, response!.Ranges[0]); + Assert.Equal(LspFactory.UndefinedRange, response!.Ranges[0]); } [Fact] @@ -128,7 +127,7 @@ public async Task Handle_MapToDocumentRanges_CSharp_TrailingOverlapsUnmapped() var request = new RazorMapToDocumentRangesParams() { Kind = RazorLanguageKind.CSharp, - ProjectedRanges = [VsLspFactory.CreateSingleLineRange(line: 0, character: 10, length: 13)], + ProjectedRanges = [LspFactory.CreateSingleLineRange(line: 0, character: 10, length: 13)], RazorDocumentUri = documentPath, }; @@ -139,7 +138,7 @@ public async Task Handle_MapToDocumentRanges_CSharp_TrailingOverlapsUnmapped() // Assert Assert.NotNull(response); - Assert.Equal(VsLspFactory.UndefinedRange, response!.Ranges[0]); + Assert.Equal(LspFactory.UndefinedRange, response!.Ranges[0]); } [Fact] @@ -153,7 +152,7 @@ public async Task Handle_MapToDocumentRanges_Html() var request = new RazorMapToDocumentRangesParams() { Kind = RazorLanguageKind.Html, - ProjectedRanges = [VsLspFactory.CreateSingleLineRange(line: 0, character: 16, length: 4)], + ProjectedRanges = [LspFactory.CreateSingleLineRange(line: 0, character: 16, length: 4)], RazorDocumentUri = documentPath, }; @@ -178,7 +177,7 @@ public async Task Handle_MapToDocumentRanges_Razor() var request = new RazorMapToDocumentRangesParams() { Kind = RazorLanguageKind.Razor, - ProjectedRanges = [VsLspFactory.CreateSingleLineRange(line: 0, character: 4, length: 1)], + ProjectedRanges = [LspFactory.CreateSingleLineRange(line: 0, character: 4, length: 1)], RazorDocumentUri = documentPath, }; @@ -192,35 +191,6 @@ public async Task Handle_MapToDocumentRanges_Razor() Assert.Equal(request.ProjectedRanges[0], response!.Ranges[0]); } - [Fact] - public async Task Handle_MapToDocumentRanges_Unsupported() - { - // Arrange - var documentPath = new Uri("C:/path/to/document.cshtml"); - var codeDocument = CreateCodeDocumentWithCSharpProjection( - razorSource: "

@DateTime.Now

", - projectedCSharpSource: "var __o = DateTime.Now", - sourceMappings: [new SourceMapping(new SourceSpan(4, 12), new SourceSpan(10, 12))]); - codeDocument.SetUnsupported(); - var documentContext = CreateDocumentContext(documentPath, codeDocument); - var languageEndpoint = new RazorMapToDocumentRangesEndpoint(_documentMappingService); - var request = new RazorMapToDocumentRangesParams() - { - Kind = RazorLanguageKind.CSharp, - ProjectedRanges = [VsLspFactory.CreateSingleLineRange(line: 0, character: 10, length: 12)], - RazorDocumentUri = documentPath, - }; - - var requestContext = CreateRazorRequestContext(documentContext); - - // Act - var response = await languageEndpoint.HandleRequestAsync(request, requestContext, DisposalToken); - - // Assert - Assert.NotNull(response); - Assert.Equal(VsLspFactory.UndefinedRange, response!.Ranges[0]); - } - private static RazorCodeDocument CreateCodeDocumentWithCSharpProjection(string razorSource, string projectedCSharpSource, ImmutableArray sourceMappings) { var codeDocument = CreateCodeDocument(razorSource, tagHelpers: []); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Microsoft.AspNetCore.Razor.LanguageServer.Test.csproj b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Microsoft.AspNetCore.Razor.LanguageServer.Test.csproj index 1a77b7246fb..0c17d6801a7 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Microsoft.AspNetCore.Razor.LanguageServer.Test.csproj +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Microsoft.AspNetCore.Razor.LanguageServer.Test.csproj @@ -9,6 +9,7 @@ + @@ -20,14 +21,4 @@ - - - - - diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/OpenDocumentGeneratorTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/OpenDocumentGeneratorTest.cs index 42b41f6baab..7a75f8fe3ec 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/OpenDocumentGeneratorTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/OpenDocumentGeneratorTest.cs @@ -5,7 +5,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/ProjectContexts/ProjectContextsEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/ProjectContexts/ProjectContextsEndpointTest.cs index 283c0ebbe4a..406018c38f0 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/ProjectContexts/ProjectContextsEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/ProjectContexts/ProjectContextsEndpointTest.cs @@ -5,8 +5,7 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.ProjectContexts; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/ProjectSystem/IProjectSnapshotManagerExtensionsTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/ProjectSystem/IProjectSnapshotManagerExtensionsTest.cs index f425751c1b4..a17ca7158ed 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/ProjectSystem/IProjectSnapshotManagerExtensionsTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/ProjectSystem/IProjectSnapshotManagerExtensionsTest.cs @@ -5,8 +5,8 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RangeExtensionsTests.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RangeExtensionsTests.cs index 98e5dc223d1..54ffd326cb3 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RangeExtensionsTests.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RangeExtensionsTests.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; namespace Microsoft.AspNetCore.Razor.LanguageServer.Test; @@ -13,8 +12,8 @@ public class RangeExtensionsTests public void CompareTo_StartAndEndAreSame_ReturnsZero() { // Arrange - var range1 = VsLspFactory.CreateRange(1, 2, 3, 4); - var range2 = VsLspFactory.CreateRange(1, 2, 3, 4); + var range1 = LspFactory.CreateRange(1, 2, 3, 4); + var range2 = LspFactory.CreateRange(1, 2, 3, 4); // Act var result = range1.CompareTo(range2); @@ -27,8 +26,8 @@ public void CompareTo_StartAndEndAreSame_ReturnsZero() public void CompareTo_StartOfThisRangeIsBeforeOther_ReturnsNegative() { // Arrange - var range1 = VsLspFactory.CreateRange(1, 2, 3, 4); - var range2 = VsLspFactory.CreateRange(2, 2, 3, 4); + var range1 = LspFactory.CreateRange(1, 2, 3, 4); + var range2 = LspFactory.CreateRange(2, 2, 3, 4); // Act var result = range1.CompareTo(range2); @@ -41,8 +40,8 @@ public void CompareTo_StartOfThisRangeIsBeforeOther_ReturnsNegative() public void CompareTo_EndOfThisRangeIsBeforeOther_ReturnsNegative() { // Arrange - var range1 = VsLspFactory.CreateRange(1, 2, 3, 4); - var range2 = VsLspFactory.CreateRange(1, 2, 4, 4); + var range1 = LspFactory.CreateRange(1, 2, 3, 4); + var range2 = LspFactory.CreateRange(1, 2, 4, 4); // Act var result = range1.CompareTo(range2); @@ -55,8 +54,8 @@ public void CompareTo_EndOfThisRangeIsBeforeOther_ReturnsNegative() public void CompareTo_StartOfThisRangeIsAfterOther_ReturnsPositive() { // Arrange - var range1 = VsLspFactory.CreateRange(2, 2, 3, 4); - var range2 = VsLspFactory.CreateRange(1, 2, 3, 4); + var range1 = LspFactory.CreateRange(2, 2, 3, 4); + var range2 = LspFactory.CreateRange(1, 2, 3, 4); // Act var result = range1.CompareTo(range2); @@ -69,8 +68,8 @@ public void CompareTo_StartOfThisRangeIsAfterOther_ReturnsPositive() public void CompareTo_EndOfThisRangeIsAfterOther_ReturnsPositive() { // Arrange - var range1 = VsLspFactory.CreateRange(1, 2, 4, 4); - var range2 = VsLspFactory.CreateRange(1, 2, 3, 4); + var range1 = LspFactory.CreateRange(1, 2, 4, 4); + var range2 = LspFactory.CreateRange(1, 2, 3, 4); // Act var result = range1.CompareTo(range2); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorCodeDocumentExtensionsTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorCodeDocumentExtensionsTest.cs deleted file mode 100644 index 7be001a6543..00000000000 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorCodeDocumentExtensionsTest.cs +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -#nullable disable - -using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.Test.Common; -using Xunit; -using Xunit.Abstractions; - -namespace Microsoft.AspNetCore.Razor.LanguageServer; - -public class RazorCodeDocumentExtensionsTest : ToolingTestBase -{ - public RazorCodeDocumentExtensionsTest(ITestOutputHelper testOutput) - : base(testOutput) - { - } - - [Fact] - public void IsUnsupported_Unset_ReturnsFalse() - { - // Arrange - var codeDocument = TestRazorCodeDocument.CreateEmpty(); - - // Act - var result = codeDocument.IsUnsupported(); - - // Assert - Assert.False(result); - } - - [Fact] - public void IsUnsupported_Set_ReturnsTrue() - { - // Arrange - var codeDocument = TestRazorCodeDocument.CreateEmpty(); - codeDocument.SetUnsupported(); - - // Act - var result = codeDocument.IsUnsupported(); - - // Assert - Assert.True(result); - } -} diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorConfigurationEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorConfigurationEndpointTest.cs index c044d347085..242edf9386a 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorConfigurationEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorConfigurationEndpointTest.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -32,7 +31,7 @@ public async Task Handle_UpdatesOptions() { // Arrange var optionsMonitor = TestRazorLSPOptionsMonitor.Create(_configurationService); - var endpoint = new RazorConfigurationEndpoint(optionsMonitor, LoggerFactory); + var endpoint = new RazorConfigurationEndpoint(LspServices.Empty, optionsMonitor, LoggerFactory); var request = new DidChangeConfigurationParams(); var requestContext = CreateRazorRequestContext(documentContext: null); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorDocumentMappingServiceTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorDocumentMappingServiceTest.cs index 432b0912bc8..84e86180e5b 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorDocumentMappingServiceTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorDocumentMappingServiceTest.cs @@ -704,13 +704,15 @@ private static RazorCodeDocument CreateCodeDocumentWithCSharpProjection(string r builder.UseRoslynTokenizer = true; }); }); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, "mvc", importSources: default, tagHelpers: []); + + var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, RazorFileKind.Legacy, importSources: default, tagHelpers: []); var csharpDocument = TestRazorCSharpDocument.Create( codeDocument, projectedCSharpSource, sourceMappings); codeDocument.SetCSharpDocument(csharpDocument); + return codeDocument; } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorLanguageServerTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorLanguageServerTest.cs index 08ba19946ed..6b7aeee2d3d 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorLanguageServerTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorLanguageServerTest.cs @@ -5,21 +5,17 @@ using System.Collections.Immutable; using System.IO; using System.Linq; -using System.Reflection; using System.Text.Json; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting.Diagnostics; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting.Logging; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting.NamedPipes; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.CommonLanguageServerProtocol.Framework; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.Extensions.DependencyInjection; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Nerdbank.Streams; using Xunit; using Xunit.Abstractions; @@ -83,7 +79,7 @@ public async Task AllHandlersRegisteredAsync() var registeredMethods = handlerProvider.GetRegisteredMethods(); var handlerTypes = typeof(RazorLanguageServerHost).Assembly.GetTypes() - .Where(t => typeof(IMethodHandler).IsAssignableFrom(t) && !t.IsAbstract && !t.IsInterface); + .Where(t => CLaSPTypeHelpers.IMethodHandlerType.IsAssignableFrom(t) && !t.IsAbstract && !t.IsInterface); // We turn this into a Set to handle cases like Completion where we have two handlers, only one of which will be registered // CLaSP will throw if two handlers register for the same method, so if THAT doesn't hold it's a CLaSP bug, not a Razor bug. @@ -100,12 +96,12 @@ public async Task AllHandlersRegisteredAsync() static string GetMethodFromType(Type t) { - var attribute = t.GetCustomAttribute(); + var attribute = CLaSPTypeHelpers.GetLanguageServerEnpointAttribute(t); if (attribute is null) { foreach (var inter in t.GetInterfaces()) { - attribute = inter.GetCustomAttribute(); + attribute = CLaSPTypeHelpers.GetLanguageServerEnpointAttribute(inter); if (attribute is not null) { @@ -114,10 +110,7 @@ static string GetMethodFromType(Type t) } } - if (attribute is null) - { - throw new NotImplementedException(); - } + Assert.NotNull(attribute); return attribute.Method; } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorProjectServiceTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorProjectServiceTest.cs index 344837260c2..d06a38354da 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorProjectServiceTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/RazorProjectServiceTest.cs @@ -7,13 +7,12 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Common; using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Serialization; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Serialization; using Microsoft.CodeAnalysis.Text; using Moq; using Xunit; @@ -88,7 +87,7 @@ public async Task IProjectInfoListener_UpdatedAsync_UpdatingDocument_MapsRelativ { // Arrange var hostProject = new HostProject("C:/path/to/project.csproj", "C:/path/to/obj", RazorConfiguration.Default, "TestRootNamespace"); - var hostDocument = new HostDocument("C:/path/to/file.cshtml", "file.cshtml", FileKinds.Legacy); + var hostDocument = new HostDocument("C:/path/to/file.cshtml", "file.cshtml", RazorFileKind.Legacy); await _projectManager.UpdateAsync(updater => { @@ -96,7 +95,7 @@ await _projectManager.UpdateAsync(updater => updater.AddDocument(hostProject.Key, hostDocument, StrictMock.Of()); }); - var newDocument = new DocumentSnapshotHandle("file.cshtml", "file.cshtml", FileKinds.Component); + var newDocument = new DocumentSnapshotHandle("file.cshtml", "file.cshtml", RazorFileKind.Component); // Act await _projectInfoListener.UpdatedAsync(new RazorProjectInfo( @@ -112,7 +111,7 @@ await _projectInfoListener.UpdatedAsync(new RazorProjectInfo( // Assert var document = _projectManager.GetRequiredDocument(hostProject.Key, hostDocument.FilePath); - Assert.Equal(FileKinds.Component, document.FileKind); + Assert.Equal(RazorFileKind.Component, document.FileKind); } [Fact] @@ -120,7 +119,7 @@ public async Task IProjectInfoListener_UpdatedAsync_AddsNewDocuments() { // Arrange var hostProject = new HostProject("C:/path/to/project.csproj", "C:/path/to/obj", RazorConfiguration.Default, "TestRootNamespace"); - var hostDocument = new HostDocument("C:/path/to/file.cshtml", "file.cshtml", FileKinds.Legacy); + var hostDocument = new HostDocument("C:/path/to/file.cshtml", "file.cshtml", RazorFileKind.Legacy); await _projectManager.UpdateAsync(updater => { @@ -129,7 +128,7 @@ await _projectManager.UpdateAsync(updater => }); var oldDocument = new DocumentSnapshotHandle(hostDocument.FilePath, hostDocument.TargetPath, hostDocument.FileKind); - var newDocument = new DocumentSnapshotHandle("C:/path/to/file2.cshtml", "file2.cshtml", FileKinds.Legacy); + var newDocument = new DocumentSnapshotHandle("C:/path/to/file2.cshtml", "file2.cshtml", RazorFileKind.Legacy); // Act await _projectInfoListener.UpdatedAsync(new RazorProjectInfo( @@ -153,7 +152,7 @@ public async Task IProjectInfoListener_UpdatedAsync_MovesDocumentsFromMisc() { // Arrange var hostProject = new HostProject("C:/path/to/project.csproj", "C:/path/to/obj", RazorConfiguration.Default, "TestRootNamespace"); - var hostDocument = new HostDocument("C:/path/to/file.cshtml", "file.cshtml", FileKinds.Legacy); + var hostDocument = new HostDocument("C:/path/to/file.cshtml", "file.cshtml", RazorFileKind.Legacy); await _projectManager.UpdateAsync(updater => { @@ -199,7 +198,7 @@ public async Task IProjectInfoListener_UpdatedAsync_MovesDocumentsFromMisc_ViaSe var project = _projectManager.GetRequiredProject(ownerProjectKey); - var addedDocument = new DocumentSnapshotHandle(DocumentFilePath, DocumentFilePath, FileKinds.Legacy); + var addedDocument = new DocumentSnapshotHandle(DocumentFilePath, DocumentFilePath, RazorFileKind.Legacy); // Act await _projectInfoListener.UpdatedAsync(new RazorProjectInfo( @@ -226,7 +225,7 @@ public async Task IProjectInfoListener_UpdatedAsync_MovesExistingDocumentToMisc( { // Arrange var hostProject = new HostProject("C:/path/to/project.csproj", "C:/path/to/obj", RazorConfiguration.Default, "TestRootNamespace"); - var hostDocument = new HostDocument("C:/path/to/file.cshtml", "file.cshtml", FileKinds.Legacy); + var hostDocument = new HostDocument("C:/path/to/file.cshtml", "file.cshtml", RazorFileKind.Legacy); await _projectManager.UpdateAsync(updater => { @@ -234,7 +233,7 @@ await _projectManager.UpdateAsync(updater => updater.AddDocument(MiscFilesProject.Key, hostDocument, StrictMock.Of()); }); - var newDocument = new DocumentSnapshotHandle("C:/path/to/file2.cshtml", "file2.cshtml", FileKinds.Legacy); + var newDocument = new DocumentSnapshotHandle("C:/path/to/file2.cshtml", "file2.cshtml", RazorFileKind.Legacy); // Act await _projectInfoListener.UpdatedAsync(new RazorProjectInfo( @@ -260,7 +259,7 @@ public async Task IProjectInfoListener_UpdatedAsync_KnownDocuments() { // Arrange var hostProject = new HostProject("path/to/project.csproj", "path/to/obj", RazorConfiguration.Default, "TestRootNamespace"); - var document = new HostDocument("path/to/file.cshtml", "file.cshtml", FileKinds.Legacy); + var document = new HostDocument("path/to/file.cshtml", "file.cshtml", RazorFileKind.Legacy); await _projectManager.UpdateAsync(updater => { @@ -291,7 +290,7 @@ public async Task IProjectInfoListener_UpdatedAsync_UpdatesLegacyDocumentsAsComp { // Arrange var hostProject = new HostProject("C:/path/to/project.csproj", "C:/path/to/obj", RazorConfiguration.Default, "TestRootNamespace"); - var legacyDocument = new HostDocument("C:/path/to/file.cshtml", "file.cshtml", FileKinds.Legacy); + var legacyDocument = new HostDocument("C:/path/to/file.cshtml", "file.cshtml", RazorFileKind.Legacy); await _projectManager.UpdateAsync(updater => { @@ -299,7 +298,7 @@ await _projectManager.UpdateAsync(updater => updater.AddDocument(hostProject.Key, legacyDocument, StrictMock.Of()); }); - var newDocument = new DocumentSnapshotHandle(legacyDocument.FilePath, legacyDocument.TargetPath, FileKinds.Component); + var newDocument = new DocumentSnapshotHandle(legacyDocument.FilePath, legacyDocument.TargetPath, RazorFileKind.Component); // Act await _projectInfoListener.UpdatedAsync(new RazorProjectInfo( @@ -315,7 +314,7 @@ await _projectInfoListener.UpdatedAsync(new RazorProjectInfo( // Assert var document = _projectManager.GetRequiredDocument(hostProject.Key, newDocument.FilePath); - Assert.Equal(FileKinds.Component, document.FileKind); + Assert.Equal(RazorFileKind.Component, document.FileKind); } [Fact] diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Refactoring/RenameEndpointDelegationTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Refactoring/RenameEndpointDelegationTest.cs index 205d58ad84e..0ed77f5caee 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Refactoring/RenameEndpointDelegationTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Refactoring/RenameEndpointDelegationTest.cs @@ -7,12 +7,11 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Rename; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -92,7 +91,7 @@ await projectManager.UpdateAsync(updater => var result = await endpoint.HandleRequestAsync(request, requestContext, DisposalToken); // Assert - var edits = result.DocumentChanges.Value.First.FirstOrDefault().Edits.Select(codeDocument.Source.Text.GetTextChange); + var edits = result.DocumentChanges.Value.First.FirstOrDefault().Edits.Select(e => codeDocument.Source.Text.GetTextChange(((TextEdit)e))); var newText = codeDocument.Source.Text.WithChanges(edits).ToString(); Assert.Equal(expected, newText); } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Refactoring/RenameEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Refactoring/RenameEndpointTest.cs index 373f578925a..fa6a0e214ca 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Refactoring/RenameEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Refactoring/RenameEndpointTest.cs @@ -14,7 +14,6 @@ using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis; @@ -24,7 +23,6 @@ using Microsoft.CodeAnalysis.Razor.Rename; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -116,7 +114,7 @@ public async Task Handle_Rename_FileManipulationNotSupported_ReturnsNull() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(2, 1), + Position = LspFactory.CreatePosition(2, 1), NewName = "Component5" }; @@ -139,7 +137,7 @@ public async Task Handle_Rename_WithNamespaceDirective() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(2, 1), + Position = LspFactory.CreatePosition(2, 1), NewName = "Component5" }; @@ -180,7 +178,7 @@ public async Task Handle_Rename_OnComponentParameter_ReturnsNull() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 14), + Position = LspFactory.CreatePosition(1, 14), NewName = "Test2" }; @@ -203,7 +201,7 @@ public async Task Handle_Rename_OnOpeningBrace_ReturnsNull() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), NewName = "Test2" }; @@ -226,7 +224,7 @@ public async Task Handle_Rename_OnComponentNameLeadingEdge_ReturnsResult() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 1), + Position = LspFactory.CreatePosition(1, 1), NewName = "Test2" }; @@ -249,7 +247,7 @@ public async Task Handle_Rename_OnComponentName_ReturnsResult() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 3), + Position = LspFactory.CreatePosition(1, 3), NewName = "Test2" }; @@ -272,7 +270,7 @@ public async Task Handle_Rename_OnComponentEndTag_ReturnsResult() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 36), + Position = LspFactory.CreatePosition(1, 36), NewName = "Test2" }; @@ -295,7 +293,7 @@ public async Task Handle_Rename_OnComponentNameTrailingEdge_ReturnsResult() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 10), + Position = LspFactory.CreatePosition(1, 10), NewName = "Test2" }; @@ -318,7 +316,7 @@ public async Task Handle_Rename_ComponentInSameFile() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 1), + Position = LspFactory.CreatePosition(1, 1), NewName = "Component5" }; @@ -390,8 +388,8 @@ static IEnumerable GetTextDocumentEdits(WorkspaceEdit workspac return builder .ToArray() .OrderBy(x => x.TextDocument.Uri.ToString()) - .ThenBy(x => x.Edits.First().Range.Start.Line) - .ThenBy(x => x.Edits.First().Range.Start.Character); + .ThenBy(x => ((TextEdit)x.Edits.First()).Range.Start.Line) + .ThenBy(x => ((TextEdit)x.Edits.First()).Range.Start.Character); } } @@ -404,7 +402,7 @@ public async Task Handle_Rename_FullyQualifiedAndNot() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(2, 1), + Position = LspFactory.CreatePosition(2, 1), NewName = "Component5" }; @@ -450,7 +448,7 @@ public async Task Handle_Rename_MultipleFileUsages() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 1), + Position = LspFactory.CreatePosition(1, 1), NewName = "Component5" }; @@ -503,7 +501,7 @@ public async Task Handle_Rename_DifferentDirectories() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 1), + Position = LspFactory.CreatePosition(1, 1), NewName = "TestComponent" }; @@ -571,7 +569,7 @@ public async Task Handle_Rename_SingleServer_CallsDelegatedLanguageServer() var request = new RenameParams { TextDocument = new() { Uri = uri }, - Position = VsLspFactory.CreatePosition(1, 0), + Position = LspFactory.CreatePosition(1, 0), NewName = "Test2" }; @@ -601,7 +599,7 @@ public async Task Handle_Rename_SingleServer_DoesNotDelegateForRazor() var request = new RenameParams { TextDocument = new() { Uri = TestPathUtilities.GetUri(s_componentWithParamFilePath) }, - Position = VsLspFactory.CreatePosition(0, 1), // This is right after the '@' in '@namespace' + Position = LspFactory.CreatePosition(0, 1), // This is right after the '@' in '@namespace' NewName = "Test2" }; @@ -750,12 +748,12 @@ private static IEnumerable CreateRazorComponentTagHelperDes yield return fullyQualifiedBuilder.Build(); } - private static Action AssertTextEdit(string fileName, int startLine, int startCharacter, int endLine, int endCharacter) + private static Action> AssertTextEdit(string fileName, int startLine, int startCharacter, int endLine, int endCharacter) => edit => { - Assert.Equal(fileName, edit.NewText); + Assert.Equal(fileName, ((TextEdit)edit).NewText); - var range = edit.Range; + var range = ((TextEdit)edit).Range; Assert.Equal(startLine, range.Start.Line); Assert.Equal(startCharacter, range.Start.Character); Assert.Equal(endLine, range.End.Line); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/RazorSemanticTokensLegendServiceTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/RazorSemanticTokensLegendServiceTest.cs index caea278d09c..f4ae741cf15 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/RazorSemanticTokensLegendServiceTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/RazorSemanticTokensLegendServiceTest.cs @@ -15,7 +15,7 @@ public class RazorSemanticTokensLegendServiceTest(ITestOutputHelper testOutput) [Fact] public void RazorModifiers_MustStartAfterRoslyn() { - var clientCapabilitiesService = new TestClientCapabilitiesService(new VisualStudio.LanguageServer.Protocol.VSInternalClientCapabilities()); + var clientCapabilitiesService = new TestClientCapabilitiesService(new VSInternalClientCapabilities()); var service = new RazorSemanticTokensLegendService(clientCapabilitiesService); var expected = Math.Pow(2, RazorSemanticTokensAccessor.GetTokenModifiers().Length); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/RazorSemanticTokensRefreshEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/RazorSemanticTokensRefreshEndpointTest.cs index ef79b93360f..d95f5bc3f4a 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/RazorSemanticTokensRefreshEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/RazorSemanticTokensRefreshEndpointTest.cs @@ -13,7 +13,6 @@ using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces.Protocol.SemanticTokens; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/SemanticTokensTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/SemanticTokensTest.cs index a82c06a93e0..ec02791caeb 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/SemanticTokensTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Semantic/SemanticTokensTest.cs @@ -15,8 +15,8 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Completion; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Utilities; @@ -28,7 +28,6 @@ using Microsoft.CodeAnalysis.Razor.Workspaces.Protocol.SemanticTokens; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -42,7 +41,7 @@ public partial class SemanticTokensTest(ITestOutputHelper testOutput) : TagHelpe private static readonly VSInternalServerCapabilities s_semanticTokensServerCapabilities = new() { - SemanticTokensOptions = new() + SemanticTokensOptions = new SemanticTokensOptions() { Full = false, Range = true diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Serialization/PlatformAgnosticClientCapabilitiesJsonConverterTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Serialization/PlatformAgnosticClientCapabilitiesJsonConverterTest.cs index 8d2f84072f0..84d5b73fd84 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Serialization/PlatformAgnosticClientCapabilitiesJsonConverterTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Serialization/PlatformAgnosticClientCapabilitiesJsonConverterTest.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Text.Json; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; namespace Microsoft.AspNetCore.Razor.LanguageServer.Serialization; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SignatureHelp/SignatureHelpEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SignatureHelp/SignatureHelpEndpointTest.cs index 646b2085413..213f683385d 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SignatureHelp/SignatureHelpEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SignatureHelp/SignatureHelpEndpointTest.cs @@ -6,10 +6,9 @@ using System; using System.Collections.Immutable; using System.Threading.Tasks; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SingleServerDelegatingEndpointTestBase.TestLanguageServer.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SingleServerDelegatingEndpointTestBase.TestLanguageServer.cs index b6b439a30b2..cd7b6876842 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SingleServerDelegatingEndpointTestBase.TestLanguageServer.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SingleServerDelegatingEndpointTestBase.TestLanguageServer.cs @@ -6,7 +6,6 @@ using System; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.LanguageServer.Diagnostics; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; @@ -14,16 +13,15 @@ using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; using Microsoft.CodeAnalysis.Razor.Protocol.Diagnostics; using Microsoft.CodeAnalysis.Razor.Protocol.Folding; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; -using DefinitionResult = Microsoft.VisualStudio.LanguageServer.Protocol.SumType< - Microsoft.VisualStudio.LanguageServer.Protocol.Location, - Microsoft.VisualStudio.LanguageServer.Protocol.Location[], - Microsoft.VisualStudio.LanguageServer.Protocol.DocumentLink[]>; -using ImplementationResult = Microsoft.VisualStudio.LanguageServer.Protocol.SumType< - Microsoft.VisualStudio.LanguageServer.Protocol.Location[], - Microsoft.VisualStudio.LanguageServer.Protocol.VSInternalReferenceItem[]>; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; +using DefinitionResult = Roslyn.LanguageServer.Protocol.SumType< + Roslyn.LanguageServer.Protocol.Location, + Roslyn.LanguageServer.Protocol.VSInternalLocation, + Roslyn.LanguageServer.Protocol.VSInternalLocation[], + Roslyn.LanguageServer.Protocol.DocumentLink[]>; +using ImplementationResult = Roslyn.LanguageServer.Protocol.SumType< + Roslyn.LanguageServer.Protocol.Location[], + Roslyn.LanguageServer.Protocol.VSInternalReferenceItem[]>; namespace Microsoft.AspNetCore.Razor.LanguageServer; @@ -287,7 +285,7 @@ private Task HandleImplementationAsync(T @params) _cancellationToken); } - private Task HandleSignatureHelpAsync(T @params) + private Task HandleSignatureHelpAsync(T @params) { var delegatedParams = Assert.IsType(@params); var delegatedRequest = new SignatureHelpParams() @@ -300,7 +298,7 @@ private Task HandleImplementationAsync(T @params) Position = delegatedParams.ProjectedPosition, }; - return _csharpServer.ExecuteRequestAsync( + return _csharpServer.ExecuteRequestAsync( Methods.TextDocumentSignatureHelpName, delegatedRequest, _cancellationToken); @@ -357,7 +355,7 @@ public Task SendNotificationAsync(string method, CancellationToken cancellationT throw new NotImplementedException(); } - private Task HandleValidateBreakpointRangeAsync(T @params) + private Task HandleValidateBreakpointRangeAsync(T @params) { var delegatedParams = Assert.IsType(@params); var delegatedRequest = new VSInternalValidateBreakableRangeParams() @@ -370,7 +368,7 @@ private Task HandleValidateBreakpointRangeAsync(T @params) Range = delegatedParams.ProjectedRange, }; - return _csharpServer.ExecuteRequestAsync( + return _csharpServer.ExecuteRequestAsync( VSInternalMethods.TextDocumentValidateBreakableRangeName, delegatedRequest, _cancellationToken); } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SingleServerDelegatingEndpointTestBase.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SingleServerDelegatingEndpointTestBase.cs index 4c9cdb6050e..cd3f7b36a0e 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SingleServerDelegatingEndpointTestBase.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SingleServerDelegatingEndpointTestBase.cs @@ -6,13 +6,12 @@ using System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.DocumentMapping; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SpellCheck/DocumentSpellCheckEndpointTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SpellCheck/DocumentSpellCheckEndpointTest.cs index a81ed10c7f1..d73b6f418c8 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SpellCheck/DocumentSpellCheckEndpointTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SpellCheck/DocumentSpellCheckEndpointTest.cs @@ -10,7 +10,6 @@ using Microsoft.CodeAnalysis.Razor.SpellCheck; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TagHelperFactsServiceTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TagHelperFactsServiceTest.cs index 01f9c323627..594dfd2b30a 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TagHelperFactsServiceTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TagHelperFactsServiceTest.cs @@ -250,7 +250,7 @@ private static RazorCodeDocument CreateComponentDocument(string text, ImmutableA builder.UseRoslynTokenizer = true; }); }); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, FileKinds.Component, importSources: default, tagHelpers); - return codeDocument; + + return projectEngine.ProcessDesignTime(sourceDocument, RazorFileKind.Component, importSources: default, tagHelpers); } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TestClient.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TestClient.cs index c99ebf5cd55..436855cc6c8 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TestClient.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TestClient.cs @@ -7,7 +7,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TestRazorProjectService.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TestRazorProjectService.cs index cab1787d10b..29682f2c686 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TestRazorProjectService.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/TestRazorProjectService.cs @@ -5,10 +5,10 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.Common; -using Microsoft.AspNetCore.Razor.Serialization; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Serialization; using Moq; namespace Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; @@ -40,7 +40,7 @@ private static IRazorProjectInfoDriver CreateProjectInfoDriver() public async Task AddDocumentToPotentialProjectsAsync(string textDocumentPath, CancellationToken cancellationToken) { var document = new DocumentSnapshotHandle( - textDocumentPath, textDocumentPath, FileKinds.GetFileKindFromFilePath(textDocumentPath)); + textDocumentPath, textDocumentPath, FileKinds.GetFileKindFromPath(textDocumentPath)); foreach (var projectSnapshot in _projectManager.FindPotentialProjects(textDocumentPath)) { diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceDiagnosticRefreshTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceDiagnosticRefreshTest.cs index 33253217f7a..72383bad6a1 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceDiagnosticRefreshTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceDiagnosticRefreshTest.cs @@ -10,7 +10,6 @@ using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceRootPathWatcherTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceRootPathWatcherTest.cs index 7a5fe3a794f..60168acc33b 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceRootPathWatcherTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceRootPathWatcherTest.cs @@ -11,8 +11,6 @@ using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.Workspaces; -using Microsoft.CommonLanguageServerProtocol.Framework; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -27,12 +25,14 @@ public async Task InitializedAsync_CallsStartAsync() // Arrange var initialWorkspaceDirectory = "testpath"; +#pragma warning disable CS0618 // Type or member is obsolete var initializeParams = new InitializeParams() { - RootUri = VsLspFactory.CreateFilePathUri(initialWorkspaceDirectory), + RootUri = LspFactory.CreateFilePathUri(initialWorkspaceDirectory), }; +#pragma warning restore CS0618 // Type or member is obsolete - var capabilitiesManager = new CapabilitiesManager(StrictMock.Of()); + var capabilitiesManager = new CapabilitiesManager(LspServices.Empty); capabilitiesManager.SetInitializeParams(initializeParams); var expectedWorkspaceDirectory = $"\\\\{initialWorkspaceDirectory}"; @@ -49,7 +49,7 @@ public async Task InitializedAsync_CallsStartAsync() }); // Act - await watcher.OnInitializedAsync(StrictMock.Of(), DisposalToken); + await watcher.OnInitializedAsync(DisposalToken); // Assert Assert.True(started); @@ -82,7 +82,7 @@ public async Task StartAsync_NotifiesProjectServiceOfExistingRazorFiles() existingRazorFiles); // Act - await watcher.OnInitializedAsync(StrictMock.Of(), DisposalToken); + await watcher.OnInitializedAsync(DisposalToken); // Assert Assert.Equal(existingRazorFiles, actual); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceSemanticTokensRefreshNotifierTest.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceSemanticTokensRefreshNotifierTest.cs index 3cf9d0fbc02..f604e190c91 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceSemanticTokensRefreshNotifierTest.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WorkspaceSemanticTokensRefreshNotifierTest.cs @@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Razor.LanguageServer.Test; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WrapWithTag/WrapWithTagEndpointTests.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WrapWithTag/WrapWithTagEndpointTests.cs index ce85b88177c..d340a2c69a3 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WrapWithTag/WrapWithTagEndpointTests.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/WrapWithTag/WrapWithTagEndpointTests.cs @@ -4,13 +4,11 @@ using System; using System.Linq; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Language; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.Formatting; -using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Moq; using Xunit; using Xunit.Abstractions; @@ -36,7 +34,7 @@ public async Task Handle_Html_ReturnsResult() var wrapWithDivParams = new WrapWithTagParams(new() { Uri = uri }) { - Range = VsLspFactory.CreateSingleLineRange(start: (0, 0), length: 2), + Range = LspFactory.CreateSingleLineRange(start: (0, 0), length: 2), }; var requestContext = CreateRazorRequestContext(documentContext); @@ -66,7 +64,7 @@ public async Task Handle_CSharp_ReturnsNull() var wrapWithDivParams = new WrapWithTagParams(new() { Uri = uri }) { - Range = VsLspFactory.CreateSingleLineRange(start: (0, 1), length: 2), + Range = LspFactory.CreateSingleLineRange(start: (0, 1), length: 2), }; var requestContext = CreateRazorRequestContext(documentContext); @@ -97,7 +95,7 @@ public async Task Handle_CSharp_WholeImplicitStatement_ReturnsResult() var wrapWithDivParams = new WrapWithTagParams(new() { Uri = uri }) { - Range = VsLspFactory.CreateSingleLineRange(start: (0, 0), length: 8), + Range = LspFactory.CreateSingleLineRange(start: (0, 0), length: 8), }; var requestContext = CreateRazorRequestContext(documentContext); @@ -147,12 +145,19 @@ public async Task Handle_RazorBlockStart_ReturnsResult() } [Fact] - public async Task Handle_CSharp_PartOfImplicitStatement_ReturnsNull() + public async Task Handle_HtmlInCSharp() { // Arrange - var codeDocument = CreateCodeDocument("@counter"); + var input = new TestCode(""" + @if (true) + { + [|

|] + } + """); + var codeDocument = CreateCodeDocument(input.Text); var uri = new Uri("file://path/test.razor"); var documentContext = CreateDocumentContext(uri, codeDocument); + var response = new WrapWithTagResponse(); var clientConnection = TestMocks.CreateClientConnection(builder => { @@ -161,29 +166,35 @@ public async Task Handle_CSharp_PartOfImplicitStatement_ReturnsNull() var endpoint = new WrapWithTagEndpoint(clientConnection, LoggerFactory); - var wrapWithDivParams = new WrapWithTagParams(new() { Uri = uri }) + var range = codeDocument.Source.Text.GetRange(input.Span); + var wrapWithDivParams = new WrapWithTagParams(new TextDocumentIdentifier { Uri = uri }) { - Range = VsLspFactory.CreateSingleLineRange(line: 0, character: 2, length: 2), + Range = range }; - var requestContext = CreateRazorRequestContext(documentContext); // Act var result = await endpoint.HandleRequestAsync(wrapWithDivParams, requestContext, DisposalToken); // Assert - Assert.Null(result); - Mock.Get(clientConnection) - .VerifySendRequest(LanguageServerConstants.RazorWrapWithTagEndpoint, Times.Never); + Assert.NotNull(result); + Mock.Get(clientConnection).Verify(); } [Fact] - public async Task Handle_CSharp_InImplicitStatement_ReturnsResult() + public async Task Handle_HtmlInCSharp_WithWhitespace() { // Arrange - var codeDocument = CreateCodeDocument("@counter"); + var input = new TestCode(""" + @if (true) + { + [|

|] + } + """); + var codeDocument = CreateCodeDocument(input.Text); var uri = new Uri("file://path/test.razor"); var documentContext = CreateDocumentContext(uri, codeDocument); + var response = new WrapWithTagResponse(); var clientConnection = TestMocks.CreateClientConnection(builder => { @@ -192,11 +203,11 @@ public async Task Handle_CSharp_InImplicitStatement_ReturnsResult() var endpoint = new WrapWithTagEndpoint(clientConnection, LoggerFactory); - var wrapWithDivParams = new WrapWithTagParams(new() { Uri = uri }) + var range = codeDocument.Source.Text.GetRange(input.Span); + var wrapWithDivParams = new WrapWithTagParams(new TextDocumentIdentifier { Uri = uri }) { - Range = VsLspFactory.CreateZeroWidthRange(0, 4), + Range = range }; - var requestContext = CreateRazorRequestContext(documentContext); // Act @@ -208,10 +219,46 @@ public async Task Handle_CSharp_InImplicitStatement_ReturnsResult() } [Fact] - public async Task Handle_DocumentNotFound_ReturnsNull() + public async Task Handle_HtmlInCSharp_WithNewline() { // Arrange - var missingUri = new Uri("file://path/nottest.razor"); + var input = new TestCode(""" + @if (true) + {[| +

|] + } + """); + var codeDocument = CreateCodeDocument(input.Text); + var uri = new Uri("file://path/test.razor"); + var documentContext = CreateDocumentContext(uri, codeDocument); + var response = new WrapWithTagResponse(); + + var clientConnection = TestMocks.CreateClientConnection(builder => { }); + + var endpoint = new WrapWithTagEndpoint(clientConnection, LoggerFactory); + + var range = codeDocument.Source.Text.GetRange(input.Span); + var wrapWithDivParams = new WrapWithTagParams(new TextDocumentIdentifier { Uri = uri }) + { + Range = range + }; + var requestContext = CreateRazorRequestContext(documentContext); + + // Act + var result = await endpoint.HandleRequestAsync(wrapWithDivParams, requestContext, DisposalToken); + + // Assert + Assert.Null(result); + Mock.Get(clientConnection).Verify(); + } + + [Fact] + public async Task Handle_CSharp_PartOfImplicitStatement_ReturnsNull() + { + // Arrange + var codeDocument = CreateCodeDocument("@counter"); + var uri = new Uri("file://path/test.razor"); + var documentContext = CreateDocumentContext(uri, codeDocument); var clientConnection = TestMocks.CreateClientConnection(builder => { @@ -220,12 +267,12 @@ public async Task Handle_DocumentNotFound_ReturnsNull() var endpoint = new WrapWithTagEndpoint(clientConnection, LoggerFactory); - var wrapWithDivParams = new WrapWithTagParams(new() { Uri = missingUri }) + var wrapWithDivParams = new WrapWithTagParams(new() { Uri = uri }) { - Range = VsLspFactory.CreateSingleLineRange(start: (0, 0), length: 2), + Range = LspFactory.CreateSingleLineRange(line: 0, character: 2, length: 2), }; - var requestContext = CreateRazorRequestContext(documentContext: null); + var requestContext = CreateRazorRequestContext(documentContext); // Act var result = await endpoint.HandleRequestAsync(wrapWithDivParams, requestContext, DisposalToken); @@ -233,15 +280,14 @@ public async Task Handle_DocumentNotFound_ReturnsNull() // Assert Assert.Null(result); Mock.Get(clientConnection) - .VerifySendRequest(LanguageServerConstants.RazorWrapWithTagEndpoint, Times.Never); + .VerifySendRequest(LanguageServerConstants.RazorWrapWithTagEndpoint, Times.Never); } [Fact] - public async Task Handle_UnsupportedCodeDocument_ReturnsNull() + public async Task Handle_CSharp_InImplicitStatement_ReturnsResult() { // Arrange - var codeDocument = CreateCodeDocument("
"); - codeDocument.SetUnsupported(); + var codeDocument = CreateCodeDocument("@counter"); var uri = new Uri("file://path/test.razor"); var documentContext = CreateDocumentContext(uri, codeDocument); @@ -254,7 +300,7 @@ public async Task Handle_UnsupportedCodeDocument_ReturnsNull() var wrapWithDivParams = new WrapWithTagParams(new() { Uri = uri }) { - Range = VsLspFactory.CreateSingleLineRange(start: (0, 0), length: 2), + Range = LspFactory.CreateZeroWidthRange(0, 4), }; var requestContext = CreateRazorRequestContext(documentContext); @@ -262,10 +308,38 @@ public async Task Handle_UnsupportedCodeDocument_ReturnsNull() // Act var result = await endpoint.HandleRequestAsync(wrapWithDivParams, requestContext, DisposalToken); + // Assert + Assert.NotNull(result); + Mock.Get(clientConnection).Verify(); + } + + [Fact] + public async Task Handle_DocumentNotFound_ReturnsNull() + { + // Arrange + var missingUri = new Uri("file://path/nottest.razor"); + + var clientConnection = TestMocks.CreateClientConnection(builder => + { + builder.SetupSendRequest(LanguageServerConstants.RazorWrapWithTagEndpoint, response: new(), verifiable: true); + }); + + var endpoint = new WrapWithTagEndpoint(clientConnection, LoggerFactory); + + var wrapWithDivParams = new WrapWithTagParams(new() { Uri = missingUri }) + { + Range = LspFactory.CreateSingleLineRange(start: (0, 0), length: 2), + }; + + var requestContext = CreateRazorRequestContext(documentContext: null); + + // Act + var result = await endpoint.HandleRequestAsync(wrapWithDivParams, requestContext, DisposalToken); + // Assert Assert.Null(result); Mock.Get(clientConnection) - .VerifySendRequest(LanguageServerConstants.RazorWrapWithTagEndpoint, Times.Never); + .VerifySendRequest(LanguageServerConstants.RazorWrapWithTagEndpoint, Times.Never); } [Fact] @@ -292,10 +366,10 @@ public async Task CleanUpTextEdits_NoTilde() var computedEdits = new TextEdit[] { - VsLspFactory.CreateTextEdit(position: (0, 0), "
" + Environment.NewLine + " "), - VsLspFactory.CreateTextEdit(line: 1, character: 0, " "), - VsLspFactory.CreateTextEdit( - range: VsLspFactory.CreateSingleLineRange(line: 2, character: 0, length: 1), + LspFactory.CreateTextEdit(position: (0, 0), "
" + Environment.NewLine + " "), + LspFactory.CreateTextEdit(line: 1, character: 0, " "), + LspFactory.CreateTextEdit( + range: LspFactory.CreateSingleLineRange(line: 2, character: 0, length: 1), newText: " }" + Environment.NewLine + "
"), }; @@ -331,11 +405,11 @@ public async Task CleanUpTextEdits_BadEditWithTilde() var computedEdits = new TextEdit[] { - VsLspFactory.CreateTextEdit(position: (0, 0), "
" + Environment.NewLine + " "), - VsLspFactory.CreateTextEdit(line: 1, character: 0, " "), + LspFactory.CreateTextEdit(position: (0, 0), "
" + Environment.NewLine + " "), + LspFactory.CreateTextEdit(line: 1, character: 0, " "), // This is the problematic edit.. the close brace has been replaced with a tilde - VsLspFactory.CreateTextEdit( - range: VsLspFactory.CreateSingleLineRange(line: 2, character: 0, length: 1), + LspFactory.CreateTextEdit( + range: LspFactory.CreateSingleLineRange(line: 2, character: 0, length: 1), newText: " ~" + Environment.NewLine + "
") }; @@ -371,11 +445,11 @@ public async Task CleanUpTextEdits_GoodEditWithTilde() var computedEdits = new[] { - VsLspFactory.CreateTextEdit(position: (0, 0), "
" + Environment.NewLine + " "), - VsLspFactory.CreateTextEdit(line: 1, character: 0, " "), + LspFactory.CreateTextEdit(position: (0, 0), "
" + Environment.NewLine + " "), + LspFactory.CreateTextEdit(line: 1, character: 0, " "), // This looks like a bad edit, but the original source document had a tilde - VsLspFactory.CreateTextEdit( - range: VsLspFactory.CreateSingleLineRange(line: 2, character: 0, length: 1), + LspFactory.CreateTextEdit( + range: LspFactory.CreateSingleLineRange(line: 2, character: 0, length: 1), newText: " ~" + Environment.NewLine + "
") }; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/AssertExtensions.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/AssertExtensions.cs index eeab228a043..e6d35ad6e18 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/AssertExtensions.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/AssertExtensions.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.VisualStudio.Text.Adornments; +using Roslyn.Text.Adornments; using Xunit; namespace Microsoft.AspNetCore.Razor.Test.Common; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Formatting_NetFx/HtmlFormattingService.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Formatting_NetFx/HtmlFormattingService.cs index 7c082b276cc..6cd32ce4efa 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Formatting_NetFx/HtmlFormattingService.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Formatting_NetFx/HtmlFormattingService.cs @@ -11,7 +11,6 @@ using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.Composition; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Text; using Microsoft.VisualStudio.Utilities; using Microsoft.WebTools.Languages.Shared.ContentTypes; @@ -113,7 +112,7 @@ public void Dispose() foreach (var textChange in response.TextChanges) { var span = new TextSpan(textChange.Position, textChange.Length); - var edit = VsLspFactory.CreateTextEdit(sourceText.GetRange(span), textChange.NewText); + var edit = LspFactory.CreateTextEdit(sourceText.GetRange(span), textChange.NewText); edits.Add(edit); } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Language/IntegrationTests/RazorToolingIntegrationTestBase.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Language/IntegrationTests/RazorToolingIntegrationTestBase.cs index 4590a961b7d..3b2e28ced4a 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Language/IntegrationTests/RazorToolingIntegrationTestBase.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Language/IntegrationTests/RazorToolingIntegrationTestBase.cs @@ -20,6 +20,7 @@ using Xunit; using Xunit.Abstractions; using Xunit.Sdk; +using Diagnostic = Microsoft.CodeAnalysis.Diagnostic; namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests; @@ -84,7 +85,7 @@ public RazorToolingIntegrationTestBase(ITestOutputHelper testOutput) /// Gets a hardcoded document kind to be added to each code document that's created. This can /// be used to generate components. /// - internal virtual string FileKind { get; } + internal virtual RazorFileKind? FileKind { get; } internal virtual VirtualRazorProjectFileSystem FileSystem { get; } @@ -142,7 +143,7 @@ private RazorProjectEngine CreateProjectEngine(RazorConfiguration configuration, }); } - internal RazorProjectItem CreateProjectItem(string cshtmlRelativePath, string cshtmlContent, string fileKind = null) + internal RazorProjectItem CreateProjectItem(string cshtmlRelativePath, string cshtmlContent, RazorFileKind? fileKind = null) { var fullPath = WorkingDirectory + PathSeparator + cshtmlRelativePath; @@ -174,7 +175,7 @@ protected CompileToCSharpResult CompileToCSharp(string cshtmlContent, bool throw return CompileToCSharp(DefaultFileName, cshtmlContent, throwOnFailure); } - protected CompileToCSharpResult CompileToCSharp(string cshtmlRelativePath, string cshtmlContent, bool throwOnFailure = true, string fileKind = null) + protected CompileToCSharpResult CompileToCSharp(string cshtmlRelativePath, string cshtmlContent, bool throwOnFailure = true, RazorFileKind? fileKind = null) { if (DeclarationOnly && DesignTime) { @@ -288,7 +289,7 @@ protected static CompileToAssemblyResult CompileToAssembly(CompileToCSharpResult var diagnostics = compilation .GetDiagnostics() - .Where(d => d.Severity != DiagnosticSeverity.Hidden); + .Where(d => d.Severity != CodeAnalysis.DiagnosticSeverity.Hidden); if (diagnostics.Any() && throwOnFailure) { diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Language/Legacy/ToolingParserTestBase.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Language/Legacy/ToolingParserTestBase.cs index 76071f6841a..de1dcae9e6f 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Language/Legacy/ToolingParserTestBase.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Language/Legacy/ToolingParserTestBase.cs @@ -173,107 +173,4 @@ internal virtual void BaselineTest(RazorSyntaxTree syntaxTree, bool verifySyntax AssertSyntaxTreeNodeMatchesBaseline(syntaxTree); } - - internal RazorSyntaxTree ParseDocument( - string document, - bool designTime = false, - IEnumerable directives = null, - string fileKind = null, - Action configureParserOptions = null) - { - return ParseDocument(RazorLanguageVersion.Latest, document, directives, designTime, fileKind, configureParserOptions); - } - - internal virtual RazorSyntaxTree ParseDocument( - RazorLanguageVersion version, - string document, - IEnumerable directives, - bool designTime = false, - string fileKind = null, - Action configureParserOptions = null) - { - directives ??= []; - - var source = TestRazorSourceDocument.Create(document, filePath: null, relativePath: null, normalizeNewLines: true); - var parserOptions = CreateParserOptions(version, directives, designTime, fileKind, configureParserOptions); - var codeDocument = RazorCodeDocument.Create(source, parserOptions); - - using var context = new ParserContext(source, parserOptions); - using var codeParser = new CSharpCodeParser(directives, context); - using var markupParser = new HtmlMarkupParser(context); - - codeParser.HtmlParser = markupParser; - markupParser.CodeParser = codeParser; - - var root = markupParser.ParseDocument().CreateRed(); - - var diagnostics = context.ErrorSink.GetErrorsAndClear(); - - var syntaxTree = new RazorSyntaxTree(root, source, diagnostics, parserOptions); - codeDocument.SetSyntaxTree(syntaxTree); - - var defaultDirectivePass = new DefaultDirectiveSyntaxTreePass(); - syntaxTree = defaultDirectivePass.Execute(codeDocument, syntaxTree); - - return syntaxTree; - } - - internal virtual void ParseDocumentTest(string document) - { - ParseDocumentTest(document, null, false); - } - - internal virtual void ParseDocumentTest(string document, string fileKind) - { - ParseDocumentTest(document, null, false, fileKind); - } - - internal virtual void ParseDocumentTest(string document, IEnumerable directives) - { - ParseDocumentTest(document, directives, false); - } - - internal virtual void ParseDocumentTest(string document, bool designTime) - { - ParseDocumentTest(document, null, designTime); - } - - internal virtual void ParseDocumentTest(string document, IEnumerable directives, bool designTime, string fileKind = null) - { - ParseDocumentTest(RazorLanguageVersion.Latest, document, directives, designTime, fileKind); - } - - internal virtual void ParseDocumentTest( - RazorLanguageVersion version, - string document, - IEnumerable directives, - bool designTime, - string fileKind = null) - { - var result = ParseDocument(version, document, directives, designTime, fileKind: fileKind); - - BaselineTest(result); - } - - private RazorParserOptions CreateParserOptions( - RazorLanguageVersion version, - IEnumerable directives, - bool designTime, - string fileKind = null, - Action configureParserOptions = null) - { - fileKind ??= FileKinds.Legacy; - - var builder = new RazorParserOptions.Builder(version, fileKind) - { - DesignTime = designTime, - Directives = [.. directives], - EnableSpanEditHandlers = EnableSpanEditHandlers, - UseRoslynTokenizer = true - }; - - configureParserOptions?.Invoke(builder); - - return builder.ToOptions(); - } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/CSharpTestLspServer.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/CSharpTestLspServer.cs index cc3760b27c9..f4462da41f9 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/CSharpTestLspServer.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/CSharpTestLspServer.cs @@ -5,18 +5,17 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Linq; +using System.Reflection; using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.PooledObjects; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.VisualStudio.Composition; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Nerdbank.Streams; using StreamJsonRpc; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; +using Xunit; namespace Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; @@ -28,6 +27,8 @@ public sealed class CSharpTestLspServer : IAsyncDisposable private readonly JsonRpc _clientRpc; private readonly JsonRpc _serverRpc; + private readonly object _roslynLanguageServer; + private readonly SystemTextJsonFormatter _clientMessageFormatter; private readonly SystemTextJsonFormatter _serverMessageFormatter; private readonly HeaderDelimitedMessageHandler _clientMessageHandler; @@ -69,7 +70,17 @@ private CSharpTestLspServer( _clientRpc.StartListening(); - _ = CreateLanguageServer(_serverRpc, _serverMessageFormatter.JsonSerializerOptions, testWorkspace, languageServerFactory, exportProvider, serverCapabilities); + var languageServerTarget = CreateLanguageServer(_serverRpc, _serverMessageFormatter.JsonSerializerOptions, testWorkspace, languageServerFactory, exportProvider, serverCapabilities); + + // This isn't ideal, but we need to pull the actual RoslynLanguageServer out of languageServerTarget + // so that we can call ShutdownAsync and ExitAsync on it when dispos + var languageServerField = languageServerTarget.GetType().GetField("_languageServer", BindingFlags.Instance | BindingFlags.NonPublic); + Assert.NotNull(languageServerField); + + var roslynLanguageServer = languageServerField.GetValue(languageServerTarget); + Assert.NotNull(roslynLanguageServer); + + _roslynLanguageServer = roslynLanguageServer; static SystemTextJsonFormatter CreateSystemTextJsonMessageFormatter(AbstractRazorLanguageServerFactoryWrapper languageServerFactory) { @@ -78,8 +89,6 @@ static SystemTextJsonFormatter CreateSystemTextJsonMessageFormatter(AbstractRazo // Roslyn has its own converters since it doesn't use MS.VS.LS.Protocol languageServerFactory.AddJsonConverters(messageFormatter.JsonSerializerOptions); - JsonHelpers.AddVSInternalExtensionConverters(messageFormatter.JsonSerializerOptions); - return messageFormatter; } @@ -146,6 +155,21 @@ internal Task ExecuteRequestAsync( public async ValueTask DisposeAsync() { + // This is a bit of a hack, but we need to call ShutdownAsync and ExitAsync on the RoslynLanguageServer + // so that it disconnects gracefully from _serverRpc. Otherwise, it'll fail if we dispose _serverRpc + // which forcibly disconnects the JsonRpc from the RoslynLanguageServer. + var shutdownAsyncMethod = _roslynLanguageServer.GetType() + .GetMethod("ShutdownAsync", BindingFlags.Instance | BindingFlags.Public); + Assert.NotNull(shutdownAsyncMethod); + + await (Task)shutdownAsyncMethod.Invoke(_roslynLanguageServer, parameters: [$"{nameof(CSharpTestLspServer)} shutting down"]).AssumeNotNull(); + + var exitAsyncMethod = _roslynLanguageServer.GetType() + .GetMethod("ExitAsync", BindingFlags.Instance | BindingFlags.Public); + Assert.NotNull(exitAsyncMethod); + + await (Task)exitAsyncMethod.Invoke(_roslynLanguageServer, parameters: null).AssumeNotNull(); + _testWorkspace.Dispose(); _exportProvider.Dispose(); @@ -176,7 +200,7 @@ static DidOpenTextDocumentParams CreateDidOpenTextDocumentParams(Uri uri, string }; } - public async Task ReplaceTextAsync(Uri documentUri, params (Range Range, string Text)[] changes) + internal async Task ReplaceTextAsync(Uri documentUri, params (LspRange Range, string Text)[] changes) { var didChangeParams = CreateDidChangeTextDocumentParams( documentUri, @@ -184,7 +208,7 @@ public async Task ReplaceTextAsync(Uri documentUri, params (Range Range, string await ExecuteRequestAsync(Methods.TextDocumentDidChangeName, didChangeParams, _cancellationToken); - static DidChangeTextDocumentParams CreateDidChangeTextDocumentParams(Uri documentUri, ImmutableArray<(Range Range, string Text)> changes) + static DidChangeTextDocumentParams CreateDidChangeTextDocumentParams(Uri documentUri, ImmutableArray<(LspRange Range, string Text)> changes) { var changeEvents = changes.Select(change => new TextDocumentContentChangeEvent { diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/CSharpTestLspServerHelpers.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/CSharpTestLspServerHelpers.cs index 324664d723b..89823009cf4 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/CSharpTestLspServerHelpers.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/CSharpTestLspServerHelpers.cs @@ -18,7 +18,6 @@ using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.Composition; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/LanguageServerTestBase.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/LanguageServerTestBase.cs index cc838c0f7a2..f74ebe0f24b 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/LanguageServerTestBase.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/LanguageServerTestBase.cs @@ -13,18 +13,16 @@ using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Workspaces; - using Microsoft.CodeAnalysis.Text; -using Microsoft.CommonLanguageServerProtocol.Framework; using Xunit.Abstractions; namespace Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; @@ -33,7 +31,7 @@ public abstract class LanguageServerTestBase(ITestOutputHelper testOutput) : Too { private protected IRazorMappingService SpanMappingService { get; } = new ThrowingRazorMappingService(); private protected IFilePathService FilePathService { get; } = new LSPFilePathService(TestLanguageServerFeatureOptions.Instance); - private protected JsonSerializerOptions SerializerOptions { get; } = JsonHelpers.VsLspJsonSerializerOptions; + private protected JsonSerializerOptions SerializerOptions { get; } = JsonHelpers.JsonSerializerOptions; private protected override TestProjectSnapshotManager CreateProjectSnapshotManager( IProjectEngineFactoryProvider projectEngineFactoryProvider, LanguageServerFeatureOptions languageServerFeatureOptions) @@ -46,17 +44,17 @@ private protected override TestProjectSnapshotManager CreateProjectSnapshotManag private protected static RazorRequestContext CreateRazorRequestContext( DocumentContext? documentContext, - ILspServices? lspServices = null) - => new(documentContext, lspServices ?? StrictMock.Of(), "lsp/method", uri: null); + LspServices? lspServices = null) + => new(documentContext, lspServices ?? LspServices.Empty, "lsp/method", uri: null); protected static RazorCodeDocument CreateCodeDocument(string text, ImmutableArray tagHelpers = default, string? filePath = null, string? rootNamespace = null) { filePath ??= "test.cshtml"; - var fileKind = FileKinds.GetFileKindFromFilePath(filePath); + var fileKind = FileKinds.GetFileKindFromPath(filePath); tagHelpers = tagHelpers.NullToEmpty(); - if (fileKind == FileKinds.Component) + if (fileKind == RazorFileKind.Component) { tagHelpers = tagHelpers.AddRange(RazorTestResources.BlazorServerAppTagHelpers); } @@ -78,7 +76,8 @@ protected static RazorCodeDocument CreateCodeDocument(string text, ImmutableArra b.Features.Add(new DefaultTypeNameFeature()); }); - var importDocumentName = fileKind == FileKinds.Legacy ? "_ViewImports.cshtml" : "_Imports.razor"; + + var importDocumentName = fileKind == RazorFileKind.Legacy ? "_ViewImports.cshtml" : "_Imports.razor"; var defaultImportDocument = TestRazorSourceDocument.Create( """ @using BlazorApp1 @@ -92,8 +91,8 @@ @using Microsoft.AspNetCore.Components.Routing @using Microsoft.AspNetCore.Components.Web """, RazorSourceDocumentProperties.Create(importDocumentName, importDocumentName)); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKind, [defaultImportDocument], tagHelpers); - return codeDocument; + + return projectEngine.ProcessDesignTime(sourceDocument, fileKind, [defaultImportDocument], tagHelpers); } private protected static IDocumentContextFactory CreateDocumentContextFactory(Uri documentPath, string sourceText) diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestClientCapabilitiesService.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestClientCapabilitiesService.cs index f3dd0cb02d6..56b25ce496f 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestClientCapabilitiesService.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestClientCapabilitiesService.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using Microsoft.CodeAnalysis.Razor.Protocol; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.Test; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestDocumentContextFactory.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestDocumentContextFactory.cs index 90049c04c1e..0c4a67e6d2a 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestDocumentContextFactory.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestDocumentContextFactory.cs @@ -4,8 +4,8 @@ using System; using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Razor.Language; +using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestRazorSemanticTokensLegendService.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestRazorSemanticTokensLegendService.cs index 95def5825fc..8688dee484c 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestRazorSemanticTokensLegendService.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/LanguageServer/TestRazorSemanticTokensLegendService.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using Microsoft.AspNetCore.Razor.LanguageServer.Test; -using Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.AspNetCore.Razor.LanguageServer.Semantic; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Mef/TestComposition.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Mef/TestComposition.cs index d73f291ca9c..477ada1563e 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Mef/TestComposition.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Mef/TestComposition.cs @@ -29,7 +29,7 @@ public sealed partial class TestComposition .AddAssemblies(Assembly.LoadFrom("Microsoft.CodeAnalysis.dll")) .AddAssemblies(Assembly.LoadFrom("Microsoft.CodeAnalysis.CSharp.EditorFeatures.dll")) .AddAssemblies(Assembly.LoadFrom("Microsoft.CodeAnalysis.EditorFeatures.dll")) - .AddAssemblies(Assembly.LoadFrom("Microsoft.CodeAnalysis.ExternalAccess.Razor.dll")) + .AddAssemblies(Assembly.LoadFrom("Microsoft.CodeAnalysis.ExternalAccess.Razor.Features.dll")) .AddAssemblies(Assembly.LoadFrom("Microsoft.CodeAnalysis.LanguageServer.Protocol.dll")) .AddParts(typeof(RazorTestWorkspaceRegistrationService)); diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/MessagePackConvert.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/MessagePackConvert.cs index 72e4eecf2e1..841e6054340 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/MessagePackConvert.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/MessagePackConvert.cs @@ -4,7 +4,7 @@ using System; using System.Buffers; using MessagePack; -using Microsoft.AspNetCore.Razor.Serialization.MessagePack.Formatters; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Formatters; namespace Microsoft.AspNetCore.Razor.Test.Common; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Microsoft.AspNetCore.Razor.Test.Common.Tooling.csproj b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Microsoft.AspNetCore.Razor.Test.Common.Tooling.csproj index f9e6e961adf..af8698788c3 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Microsoft.AspNetCore.Razor.Test.Common.Tooling.csproj +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Microsoft.AspNetCore.Razor.Test.Common.Tooling.csproj @@ -17,6 +17,7 @@ + @@ -48,6 +49,7 @@ + @@ -61,8 +63,6 @@ - - diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestDocumentSnapshot.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestDocumentSnapshot.cs index 636e31626fb..ac1ae3612df 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestDocumentSnapshot.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestDocumentSnapshot.cs @@ -5,7 +5,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; @@ -50,6 +49,8 @@ public static TestDocumentSnapshot Create(string filePath, RazorCodeDocument cod var project = TestProjectSnapshot.Create(filePath + ".csproj", projectWorkspaceState); var hostDocument = TestHostDocument.Create(project.HostProject, filePath); + hostDocument = hostDocument with { FileKind = codeDocument.FileKind }; + var sourceText = codeDocument.Source.Text; var documentState = DocumentState.Create(hostDocument, sourceText); @@ -59,7 +60,7 @@ public static TestDocumentSnapshot Create(string filePath, RazorCodeDocument cod public HostDocument HostDocument => RealSnapshot.HostDocument; - public string FileKind => RealSnapshot.FileKind; + public RazorFileKind FileKind => RealSnapshot.FileKind; public string FilePath => RealSnapshot.FilePath; public string TargetPath => RealSnapshot.TargetPath; public IProjectSnapshot Project => RealSnapshot.Project; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestHostDocument.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestHostDocument.cs index 5cbc8c2793a..ad0c0c44542 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestHostDocument.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestHostDocument.cs @@ -1,8 +1,8 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Utilities; namespace Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectEngineFactoryProvider.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectEngineFactoryProvider.cs index 72571b38da4..388a538bbfe 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectEngineFactoryProvider.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectEngineFactoryProvider.cs @@ -4,7 +4,7 @@ using System; using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; namespace Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshot.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshot.cs index 159c0b6371d..619a7f7d7e3 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshot.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshot.cs @@ -7,8 +7,8 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshotManager.Listener.Inspector.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshotManager.Listener.Inspector.cs index fcf63f0fd60..94f9f14f889 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshotManager.Listener.Inspector.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshotManager.Listener.Inspector.cs @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Xunit; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshotManager.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshotManager.cs index 1ef649d797c..cdc521f7957 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshotManager.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ProjectSystem/TestProjectSnapshotManager.cs @@ -4,8 +4,8 @@ using System; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/RazorCodeDocumentFactory.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/RazorCodeDocumentFactory.cs index 50310f3f1bf..a0165d96bd9 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/RazorCodeDocumentFactory.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/RazorCodeDocumentFactory.cs @@ -35,9 +35,8 @@ public static RazorCodeDocument CreateCodeDocument(string text, string filePath, RazorExtensions.Register(builder); }); - var fileKind = FileKinds.GetFileKindFromFilePath(filePath); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKind, importSources: default, tagHelpers); + var fileKind = FileKinds.GetFileKindFromPath(filePath); - return codeDocument; + return projectEngine.ProcessDesignTime(sourceDocument, fileKind, importSources: default, tagHelpers); } } diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestMocks.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestMocks.cs index 76b03321696..69459539ddb 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestMocks.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestMocks.cs @@ -4,7 +4,6 @@ using System; using System.Threading; using Microsoft.AspNetCore.Razor.LanguageServer.Hosting; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestPathUtilities.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestPathUtilities.cs index bd22d609d67..644563113c5 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestPathUtilities.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestPathUtilities.cs @@ -4,6 +4,7 @@ using System; using System.IO; using Microsoft.AspNetCore.Razor.Utilities; +using Microsoft.CodeAnalysis.Razor.Utilities; using Xunit; namespace Microsoft.AspNetCore.Razor.Test.Common; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestProjectData.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestProjectData.cs index 815e9588eea..f2766c90cc6 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestProjectData.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/TestProjectData.cs @@ -23,33 +23,33 @@ static TestProjectData() var someProjectObjPath = Path.Combine(SomeProjectPath, "obj"); SomeProject = new HostProject(Path.Combine(SomeProjectPath, "SomeProject.csproj"), someProjectObjPath, RazorConfiguration.Default, "SomeProject"); - SomeProjectFile1 = new HostDocument(Path.Combine(SomeProjectPath, "File1.cshtml"), "File1.cshtml", FileKinds.Legacy); - SomeProjectFile2 = new HostDocument(Path.Combine(SomeProjectPath, "File2.cshtml"), "File2.cshtml", FileKinds.Legacy); - SomeProjectImportFile = new HostDocument(Path.Combine(SomeProjectPath, "_ViewImports.cshtml"), "_ViewImports.cshtml", FileKinds.Legacy); - SomeProjectNestedFile3 = new HostDocument(Path.Combine(SomeProjectPath, "Nested", "File3.cshtml"), "Nested\\File3.cshtml", FileKinds.Legacy); - SomeProjectNestedFile4 = new HostDocument(Path.Combine(SomeProjectPath, "Nested", "File4.cshtml"), "Nested\\File4.cshtml", FileKinds.Legacy); - SomeProjectNestedImportFile = new HostDocument(Path.Combine(SomeProjectPath, "Nested", "_ViewImports.cshtml"), "Nested\\_ViewImports.cshtml", FileKinds.Legacy); - SomeProjectComponentFile1 = new HostDocument(Path.Combine(SomeProjectPath, "File1.razor"), "File1.razor", FileKinds.Component); - SomeProjectComponentFile2 = new HostDocument(Path.Combine(SomeProjectPath, "File2.razor"), "File2.razor", FileKinds.Component); - SomeProjectComponentImportFile1 = new HostDocument(Path.Combine(SomeProjectPath, "_Imports.razor"), "_Imports.razor", FileKinds.Component); - SomeProjectNestedComponentFile3 = new HostDocument(Path.Combine(SomeProjectPath, "Nested", "File3.razor"), "Nested\\File3.razor", FileKinds.Component); - SomeProjectNestedComponentFile4 = new HostDocument(Path.Combine(SomeProjectPath, "Nested", "File4.razor"), "Nested\\File4.razor", FileKinds.Component); - SomeProjectCshtmlComponentFile5 = new HostDocument(Path.Combine(SomeProjectPath, "File5.cshtml"), "File5.cshtml", FileKinds.Component); + SomeProjectFile1 = new HostDocument(Path.Combine(SomeProjectPath, "File1.cshtml"), "File1.cshtml", RazorFileKind.Legacy); + SomeProjectFile2 = new HostDocument(Path.Combine(SomeProjectPath, "File2.cshtml"), "File2.cshtml", RazorFileKind.Legacy); + SomeProjectImportFile = new HostDocument(Path.Combine(SomeProjectPath, "_ViewImports.cshtml"), "_ViewImports.cshtml", RazorFileKind.Legacy); + SomeProjectNestedFile3 = new HostDocument(Path.Combine(SomeProjectPath, "Nested", "File3.cshtml"), "Nested\\File3.cshtml", RazorFileKind.Legacy); + SomeProjectNestedFile4 = new HostDocument(Path.Combine(SomeProjectPath, "Nested", "File4.cshtml"), "Nested\\File4.cshtml", RazorFileKind.Legacy); + SomeProjectNestedImportFile = new HostDocument(Path.Combine(SomeProjectPath, "Nested", "_ViewImports.cshtml"), "Nested\\_ViewImports.cshtml", RazorFileKind.Legacy); + SomeProjectComponentFile1 = new HostDocument(Path.Combine(SomeProjectPath, "File1.razor"), "File1.razor", RazorFileKind.Component); + SomeProjectComponentFile2 = new HostDocument(Path.Combine(SomeProjectPath, "File2.razor"), "File2.razor", RazorFileKind.Component); + SomeProjectComponentImportFile1 = new HostDocument(Path.Combine(SomeProjectPath, "_Imports.razor"), "_Imports.razor", RazorFileKind.Component); + SomeProjectNestedComponentFile3 = new HostDocument(Path.Combine(SomeProjectPath, "Nested", "File3.razor"), "Nested\\File3.razor", RazorFileKind.Component); + SomeProjectNestedComponentFile4 = new HostDocument(Path.Combine(SomeProjectPath, "Nested", "File4.razor"), "Nested\\File4.razor", RazorFileKind.Component); + SomeProjectCshtmlComponentFile5 = new HostDocument(Path.Combine(SomeProjectPath, "File5.cshtml"), "File5.cshtml", RazorFileKind.Component); var anotherProjectPath = Path.Combine(baseDirectory, "AnotherProject"); var anotherProjectObjPath = Path.Combine(anotherProjectPath, "obj"); AnotherProject = new HostProject(Path.Combine(anotherProjectPath, "AnotherProject.csproj"), anotherProjectObjPath, RazorConfiguration.Default, "AnotherProject"); - AnotherProjectFile1 = new HostDocument(Path.Combine(anotherProjectPath, "File1.cshtml"), "File1.cshtml", FileKinds.Legacy); - AnotherProjectFile2 = new HostDocument(Path.Combine(anotherProjectPath, "File2.cshtml"), "File2.cshtml", FileKinds.Legacy); - AnotherProjectImportFile = new HostDocument(Path.Combine(anotherProjectPath, "_ViewImports.cshtml"), "_ViewImports.cshtml", FileKinds.Legacy); - AnotherProjectNestedFile3 = new HostDocument(Path.Combine(anotherProjectPath, "Nested", "File3.cshtml"), "Nested\\File1.cshtml", FileKinds.Legacy); - AnotherProjectNestedFile4 = new HostDocument(Path.Combine(anotherProjectPath, "Nested", "File4.cshtml"), "Nested\\File2.cshtml", FileKinds.Legacy); - AnotherProjectNestedImportFile = new HostDocument(Path.Combine(anotherProjectPath, "Nested", "_ViewImports.cshtml"), "Nested\\_ViewImports.cshtml", FileKinds.Legacy); - AnotherProjectComponentFile1 = new HostDocument(Path.Combine(anotherProjectPath, "File1.razor"), "File1.razor", FileKinds.Component); - AnotherProjectComponentFile2 = new HostDocument(Path.Combine(anotherProjectPath, "File2.razor"), "File2.razor", FileKinds.Component); - AnotherProjectNestedComponentFile3 = new HostDocument(Path.Combine(anotherProjectPath, "Nested", "File3.razor"), "Nested\\File1.razor", FileKinds.Component); - AnotherProjectNestedComponentFile4 = new HostDocument(Path.Combine(anotherProjectPath, "Nested", "File4.razor"), "Nested\\File2.razor", FileKinds.Component); + AnotherProjectFile1 = new HostDocument(Path.Combine(anotherProjectPath, "File1.cshtml"), "File1.cshtml", RazorFileKind.Legacy); + AnotherProjectFile2 = new HostDocument(Path.Combine(anotherProjectPath, "File2.cshtml"), "File2.cshtml", RazorFileKind.Legacy); + AnotherProjectImportFile = new HostDocument(Path.Combine(anotherProjectPath, "_ViewImports.cshtml"), "_ViewImports.cshtml", RazorFileKind.Legacy); + AnotherProjectNestedFile3 = new HostDocument(Path.Combine(anotherProjectPath, "Nested", "File3.cshtml"), "Nested\\File1.cshtml", RazorFileKind.Legacy); + AnotherProjectNestedFile4 = new HostDocument(Path.Combine(anotherProjectPath, "Nested", "File4.cshtml"), "Nested\\File2.cshtml", RazorFileKind.Legacy); + AnotherProjectNestedImportFile = new HostDocument(Path.Combine(anotherProjectPath, "Nested", "_ViewImports.cshtml"), "Nested\\_ViewImports.cshtml", RazorFileKind.Legacy); + AnotherProjectComponentFile1 = new HostDocument(Path.Combine(anotherProjectPath, "File1.razor"), "File1.razor", RazorFileKind.Component); + AnotherProjectComponentFile2 = new HostDocument(Path.Combine(anotherProjectPath, "File2.razor"), "File2.razor", RazorFileKind.Component); + AnotherProjectNestedComponentFile3 = new HostDocument(Path.Combine(anotherProjectPath, "Nested", "File3.razor"), "Nested\\File1.razor", RazorFileKind.Component); + AnotherProjectNestedComponentFile4 = new HostDocument(Path.Combine(anotherProjectPath, "Nested", "File4.razor"), "Nested\\File2.razor", RazorFileKind.Component); } public static readonly HostProject SomeProject; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ToolingTestBase.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ToolingTestBase.cs index 07df8ee9eae..5269a84bbee 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ToolingTestBase.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/ToolingTestBase.cs @@ -5,11 +5,11 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.Logging; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.Razor.Logging; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.Threading; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Workspaces/WorkspaceTestBase.cs b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Workspaces/WorkspaceTestBase.cs index c5c06206940..83c52232bd5 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Workspaces/WorkspaceTestBase.cs +++ b/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Workspaces/WorkspaceTestBase.cs @@ -4,11 +4,11 @@ using System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Host; using Microsoft.CodeAnalysis.Host.Mef; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Workspaces; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/ChecksumTests.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ChecksumTests.cs similarity index 98% rename from src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/ChecksumTests.cs rename to src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ChecksumTests.cs index 733a399cf44..a9ef022a64e 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/ChecksumTests.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ChecksumTests.cs @@ -8,7 +8,7 @@ using Xunit; using Xunit.Abstractions; -namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost.Test; +namespace Microsoft.CodeAnalysis.Razor.Workspaces.Test; public class ChecksumTests(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) { diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListCacheTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListCacheTest.cs index cbe93bb6a26..2ad0867d8ea 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListCacheTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListCacheTest.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListMergerTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListMergerTest.cs index 6fe44aad1d8..64bf88008ff 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListMergerTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListMergerTest.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -14,9 +13,9 @@ public class CompletionListMergerTest : ToolingTestBase private readonly VSInternalCompletionItem _completionItem1; private readonly VSInternalCompletionItem _completionItem2; private readonly VSInternalCompletionItem _completionItem3; - private readonly VSInternalCompletionList _completionListWith1; - private readonly VSInternalCompletionList _completionListWith2; - private readonly VSInternalCompletionList _completionListWith13; + private readonly RazorVSInternalCompletionList _completionListWith1; + private readonly RazorVSInternalCompletionList _completionListWith2; + private readonly RazorVSInternalCompletionList _completionListWith13; public CompletionListMergerTest(ITestOutputHelper testOutput) : base(testOutput) @@ -36,17 +35,17 @@ public CompletionListMergerTest(ITestOutputHelper testOutput) Label = "CompletionItem3" }; - _completionListWith1 = new VSInternalCompletionList() + _completionListWith1 = new RazorVSInternalCompletionList() { Items = [_completionItem1] }; - _completionListWith2 = new VSInternalCompletionList() + _completionListWith2 = new RazorVSInternalCompletionList() { Items = [_completionItem2] }; - _completionListWith13 = new VSInternalCompletionList() + _completionListWith13 = new RazorVSInternalCompletionList() { Items = [_completionItem1, _completionItem3] }; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListOptimizerTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListOptimizerTest.cs index bc41b1ed2c9..90d2a70f3a3 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListOptimizerTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/CompletionListOptimizerTest.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -15,7 +14,7 @@ public void Convert_CommitCharactersTrue_RemovesCommitCharactersFromItems() { // Arrange var commitCharacters = new[] { "<" }; - var completionList = new VSInternalCompletionList() + var completionList = new RazorVSInternalCompletionList() { Items = new[] { @@ -51,7 +50,7 @@ public void Convert_CommitCharactersFalse_DoesNotTouchCommitCharacters() { // Arrange var commitCharacters = new[] { "<" }; - var completionList = new VSInternalCompletionList() + var completionList = new RazorVSInternalCompletionList() { Items = [ new VSInternalCompletionItem() diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeCompletionItemProviderBaseTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeCompletionItemProviderBaseTest.cs index 103fa2209f6..11d4581c535 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeCompletionItemProviderBaseTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeCompletionItemProviderBaseTest.cs @@ -13,7 +13,7 @@ namespace Microsoft.CodeAnalysis.Razor.Completion; public class DirectiveAttributeCompletionItemProviderBaseTest(ITestOutputHelper testOutput) : RazorToolingIntegrationTestBase(testOutput) { - internal override string FileKind => FileKinds.Component; + internal override RazorFileKind? FileKind => RazorFileKind.Component; internal override bool UseTwoPhaseCompilation => true; [Fact] diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeCompletionItemProviderTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeCompletionItemProviderTest.cs index 7b8aac24b61..3e330b02857 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeCompletionItemProviderTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeCompletionItemProviderTest.cs @@ -16,9 +16,9 @@ namespace Microsoft.CodeAnalysis.Razor.Completion; public class DirectiveAttributeCompletionItemProviderTest : RazorToolingIntegrationTestBase { private readonly DirectiveAttributeCompletionItemProvider _provider; - private readonly TagHelperDocumentContext _defaultTagHelperDocumentContext; + private readonly TagHelperDocumentContext _defaultTagHelperContext; - internal override string FileKind => FileKinds.Component; + internal override RazorFileKind? FileKind => RazorFileKind.Component; internal override bool UseTwoPhaseCompilation => true; public DirectiveAttributeCompletionItemProviderTest(ITestOutputHelper testOutput) @@ -32,7 +32,7 @@ public DirectiveAttributeCompletionItemProviderTest(ITestOutputHelper testOutput "@using Microsoft.AspNetCore.Components.Web")); var codeDocument = GetCodeDocument(string.Empty); - _defaultTagHelperDocumentContext = codeDocument.GetTagHelperContext(); + _defaultTagHelperContext = codeDocument.GetRequiredTagHelperContext(); } private RazorCodeDocument GetCodeDocument(string content) @@ -194,7 +194,7 @@ public void GetAttributeCompletions_SelectedDirectiveAttribute_IsIncludedInCompl var attributeNames = ImmutableArray.Create("@bind"); // Act - var completions = DirectiveAttributeCompletionItemProvider.GetAttributeCompletions("@bind", "input", attributeNames, _defaultTagHelperDocumentContext); + var completions = DirectiveAttributeCompletionItemProvider.GetAttributeCompletions("@bind", "input", attributeNames, _defaultTagHelperContext); // Assert AssertContains(completions, "bind", "@bind", ["=", ":"]); @@ -206,7 +206,7 @@ public void GetAttributeCompletions_NonIndexer_ReturnsCompletion() // Arrange // Act - var completions = DirectiveAttributeCompletionItemProvider.GetAttributeCompletions("@", "input", [], _defaultTagHelperDocumentContext); + var completions = DirectiveAttributeCompletionItemProvider.GetAttributeCompletions("@", "input", [], _defaultTagHelperContext); // Assert AssertContains(completions, "bind", "@bind", ["=", ":"]); @@ -218,7 +218,7 @@ public void GetAttributeCompletions_Indexer_ReturnsCompletion() // Arrange // Act - var completions = DirectiveAttributeCompletionItemProvider.GetAttributeCompletions("@", "input", [], _defaultTagHelperDocumentContext); + var completions = DirectiveAttributeCompletionItemProvider.GetAttributeCompletions("@", "input", [], _defaultTagHelperContext); // Assert AssertContains(completions, "bind-", "@bind-...", []); @@ -231,7 +231,7 @@ public void GetAttributeCompletions_BaseDirectiveAttributeAlreadyExists_Includes var attributeNames = ImmutableArray.Create("@bind", "@"); // Act - var completions = DirectiveAttributeCompletionItemProvider.GetAttributeCompletions("@", "input", attributeNames, _defaultTagHelperDocumentContext); + var completions = DirectiveAttributeCompletionItemProvider.GetAttributeCompletions("@", "input", attributeNames, _defaultTagHelperContext); // Assert AssertContains(completions, "bind", "@bind", ["=", ":"]); @@ -252,7 +252,7 @@ public void GetAttributeCompletions_BaseDirectiveAttributeAndParameterVariations "@"); // Act - var completions = DirectiveAttributeCompletionItemProvider.GetAttributeCompletions("@", "input", attributeNames, _defaultTagHelperDocumentContext); + var completions = DirectiveAttributeCompletionItemProvider.GetAttributeCompletions("@", "input", attributeNames, _defaultTagHelperContext); // Assert AssertDoesNotContain(completions, "bind", "@bind"); @@ -282,11 +282,11 @@ private RazorCompletionContext CreateRazorCompletionContext(int absoluteIndex, s { var codeDocument = GetCodeDocument(documentContent); var syntaxTree = codeDocument.GetSyntaxTree(); - var tagHelperDocumentContext = codeDocument.GetTagHelperContext(); + var tagHelperContext = codeDocument.GetRequiredTagHelperContext(); var owner = syntaxTree.Root.FindInnermostNode(absoluteIndex, includeWhitespace: true, walkMarkersBack: true); owner = AbstractRazorCompletionFactsService.AdjustSyntaxNodeForWordBoundary(owner, absoluteIndex); - return new RazorCompletionContext(absoluteIndex, owner, syntaxTree, tagHelperDocumentContext); + return new RazorCompletionContext(absoluteIndex, owner, syntaxTree, tagHelperContext); } } diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeParameterCompletionItemProviderTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeParameterCompletionItemProviderTest.cs index 61a1d95d575..f81d8fe76e7 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeParameterCompletionItemProviderTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeParameterCompletionItemProviderTest.cs @@ -14,9 +14,9 @@ namespace Microsoft.CodeAnalysis.Razor.Completion; public class DirectiveAttributeParameterCompletionItemProviderTest : RazorToolingIntegrationTestBase { private readonly DirectiveAttributeParameterCompletionItemProvider _provider; - private readonly TagHelperDocumentContext _defaultTagHelperDocumentContext; + private readonly TagHelperDocumentContext _defaultTagHelperContext; - internal override string FileKind => FileKinds.Component; + internal override RazorFileKind? FileKind => RazorFileKind.Component; internal override bool UseTwoPhaseCompilation => true; public DirectiveAttributeParameterCompletionItemProviderTest(ITestOutputHelper testOutput) @@ -30,7 +30,7 @@ public DirectiveAttributeParameterCompletionItemProviderTest(ITestOutputHelper t "@using Microsoft.AspNetCore.Components.Web")); var codeDocument = GetCodeDocument(string.Empty); - _defaultTagHelperDocumentContext = codeDocument.GetTagHelperContext(); + _defaultTagHelperContext = codeDocument.GetRequiredTagHelperContext(); } private RazorCodeDocument GetCodeDocument(string content) @@ -120,7 +120,7 @@ public void GetAttributeParameterCompletions_SelectedDirectiveAttributeParameter var attributeNames = ImmutableArray.Create("@bind"); // Act - var completions = DirectiveAttributeParameterCompletionItemProvider.GetAttributeParameterCompletions("@bind", "format", "input", attributeNames, _defaultTagHelperDocumentContext); + var completions = DirectiveAttributeParameterCompletionItemProvider.GetAttributeParameterCompletions("@bind", "format", "input", attributeNames, _defaultTagHelperContext); // Assert AssertDoesNotContain(completions, "format"); @@ -132,7 +132,7 @@ public void GetAttributeParameterCompletions_ReturnsCompletion() // Arrange // Act - var completions = DirectiveAttributeParameterCompletionItemProvider.GetAttributeParameterCompletions("@bind", string.Empty, "input", [], _defaultTagHelperDocumentContext); + var completions = DirectiveAttributeParameterCompletionItemProvider.GetAttributeParameterCompletions("@bind", string.Empty, "input", [], _defaultTagHelperContext); // Assert AssertContains(completions, "format"); @@ -149,7 +149,7 @@ public void GetAttributeParameterCompletions_BaseDirectiveAttributeAndParameterV "@"); // Act - var completions = DirectiveAttributeParameterCompletionItemProvider.GetAttributeParameterCompletions("@bind", string.Empty, "input", attributeNames, _defaultTagHelperDocumentContext); + var completions = DirectiveAttributeParameterCompletionItemProvider.GetAttributeParameterCompletions("@bind", string.Empty, "input", attributeNames, _defaultTagHelperContext); // Assert AssertDoesNotContain(completions, "format"); @@ -174,10 +174,10 @@ private RazorCompletionContext CreateRazorCompletionContext(int absoluteIndex, s { var codeDocument = GetCodeDocument(documentContent); var syntaxTree = codeDocument.GetSyntaxTree(); - var tagHelperDocumentContext = codeDocument.GetTagHelperContext(); + var tagHelperContext = codeDocument.GetRequiredTagHelperContext(); var owner = syntaxTree.Root.FindInnermostNode(absoluteIndex); owner = AbstractRazorCompletionFactsService.AdjustSyntaxNodeForWordBoundary(owner, absoluteIndex); - return new RazorCompletionContext(absoluteIndex, owner, syntaxTree, tagHelperDocumentContext); + return new RazorCompletionContext(absoluteIndex, owner, syntaxTree, tagHelperContext); } } diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeTransitionCompletionItemProviderTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeTransitionCompletionItemProviderTest.cs index 21fba86c4dc..bbe321b5d0e 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeTransitionCompletionItemProviderTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveAttributeTransitionCompletionItemProviderTest.cs @@ -129,7 +129,7 @@ public void IsValidCompletionPoint_OutsideOfNameAndPrefix_ReturnsFalse() public void GetCompletionItems_AttributeAreaInNonComponentFile_ReturnsEmptyList() { // Arrange - var context = CreateContext(absoluteIndex: 7, "", FileKinds.Legacy); + var context = CreateContext(absoluteIndex: 7, "", RazorFileKind.Legacy); // Act var result = _provider.GetCompletionItems(context); @@ -327,9 +327,10 @@ public void GetCompletionItems_WithAvoidExplicitCommitOption_ReturnsAppropriateC } } - private static RazorSyntaxTree GetSyntaxTree(string text, string? fileKind = null) + private static RazorSyntaxTree GetSyntaxTree(string text, RazorFileKind? fileKind = null) { - fileKind ??= FileKinds.Component; + var fileKindValue = fileKind ?? RazorFileKind.Component; + var sourceDocument = TestRazorSourceDocument.Create(text); var projectEngine = RazorProjectEngine.Create(builder => { @@ -339,12 +340,12 @@ private static RazorSyntaxTree GetSyntaxTree(string text, string? fileKind = nul }); }); - var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKind, importSources: default, tagHelpers: []); + var codeDocument = projectEngine.ProcessDesignTime(sourceDocument, fileKindValue, importSources: default, tagHelpers: []); return codeDocument.GetSyntaxTree(); } - private RazorCompletionContext CreateContext(int absoluteIndex, string documentContent, string? fileKind = null) + private RazorCompletionContext CreateContext(int absoluteIndex, string documentContent, RazorFileKind? fileKind = null) { var syntaxTree = GetSyntaxTree(documentContent, fileKind); var owner = syntaxTree.Root.FindInnermostNode(absoluteIndex, includeWhitespace: true, walkMarkersBack: true); diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveCompletionItemProviderTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveCompletionItemProviderTest.cs index 06bb15c47d4..100097fdc54 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveCompletionItemProviderTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveCompletionItemProviderTest.cs @@ -165,7 +165,7 @@ public void GetDirectiveCompletionItems_ReturnsKnownDirectivesAsSnippets_SingleL builder.DisplayName = knownDirective; builder.Description = string.Empty; // Doesn't matter for this test. Just need to provide something to avoid ArgumentNullException }); - var syntaxTree = CreateSyntaxTree("@", FileKinds.Component, customDirective); + var syntaxTree = CreateSyntaxTree("@", RazorFileKind.Component, customDirective); // Act var completionItems = DirectiveCompletionItemProvider.GetDirectiveCompletionItems(syntaxTree); @@ -189,7 +189,7 @@ public void GetDirectiveCompletionItems_ReturnsKnownDirectivesAsSnippets_SingleL builder.DisplayName = "model"; // Currently "model" is the only cshtml-only single-line directive. "add(remove)TagHelper" and "tagHelperPrefix" are there by default builder.Description = string.Empty; // Doesn't matter for this test. Just need to provide something to avoid ArgumentNullException }); - var syntaxTree = CreateSyntaxTree("@", FileKinds.Legacy, customDirective); + var syntaxTree = CreateSyntaxTree("@", RazorFileKind.Legacy, customDirective); // Act var completionItems = DirectiveCompletionItemProvider.GetDirectiveCompletionItems(syntaxTree); @@ -209,7 +209,7 @@ public void GetDirectiveCompletionItems_ReturnsKnownDirectivesAsSnippets_SingleL public void GetDirectiveCompletionItems_ComponentDocument_ReturnsDefaultComponentDirectivesAsCompletionItems() { // Arrange - var syntaxTree = CreateSyntaxTree("@addTag", FileKinds.Component); + var syntaxTree = CreateSyntaxTree("@addTag", RazorFileKind.Component); // Act var completionItems = DirectiveCompletionItemProvider.GetDirectiveCompletionItems(syntaxTree); @@ -463,10 +463,10 @@ private static void AssertRazorCompletionItem(DirectiveDescriptor directive, Raz private static RazorSyntaxTree CreateSyntaxTree(string text, params DirectiveDescriptor[] directives) { - return CreateSyntaxTree(text, FileKinds.Legacy, directives); + return CreateSyntaxTree(text, RazorFileKind.Legacy, directives); } - private static RazorSyntaxTree CreateSyntaxTree(string text, string fileKind, params DirectiveDescriptor[] directives) + private static RazorSyntaxTree CreateSyntaxTree(string text, RazorFileKind fileKind, params DirectiveDescriptor[] directives) { var sourceDocument = TestRazorSourceDocument.Create(text); diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveVerifier.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveVerifier.cs index 739d4643232..813e2743895 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveVerifier.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/DirectiveVerifier.cs @@ -3,7 +3,8 @@ using System; using System.Collections.Generic; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using System.Linq; +using Microsoft.CodeAnalysis.Razor.Completion; using Xunit; namespace Microsoft.CodeAnalysis.Razor.Completion; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/MarkupTransitionCompletionItemProviderTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/MarkupTransitionCompletionItemProviderTest.cs index 1d65f8e5180..4891d03d973 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/MarkupTransitionCompletionItemProviderTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/MarkupTransitionCompletionItemProviderTest.cs @@ -335,10 +335,10 @@ private static RazorCompletionContext CreateRazorCompletionContext(int absoluteI private static RazorSyntaxTree CreateSyntaxTree(string text, params DirectiveDescriptor[] directives) { - return CreateSyntaxTree(text, FileKinds.Legacy, directives); + return CreateSyntaxTree(text, RazorFileKind.Legacy, directives); } - private static RazorSyntaxTree CreateSyntaxTree(string text, string fileKind, params DirectiveDescriptor[] directives) + private static RazorSyntaxTree CreateSyntaxTree(string text, RazorFileKind fileKind, params DirectiveDescriptor[] directives) { var sourceDocument = TestRazorSourceDocument.Create(text); diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/RazorCompletionListProviderTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/RazorCompletionListProviderTest.cs index 3beaadff6db..4cf2fb9a619 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/RazorCompletionListProviderTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Completion/RazorCompletionListProviderTest.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Collections.Generic; +using System.Collections.Immutable; using System.Linq; using System.Text.Json; using Microsoft.AspNetCore.Razor.Language; @@ -11,7 +12,6 @@ using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.Razor.Tooltip; using Microsoft.CodeAnalysis.Testing; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; using static Microsoft.AspNetCore.Razor.Language.CommonMetadata; @@ -436,9 +436,7 @@ public void GetCompletionList_ProvidesInjectOnIncomplete_KeywordIn() builder.TagMatchingRule(rule => rule.TagName = "Test"); builder.Metadata(TypeName("TestNamespace.TestTagHelper")); var tagHelper = builder.Build(); - var tagHelperContext = TagHelperDocumentContext.Create(prefix: string.Empty, [tagHelper]); - var codeDocument = CreateCodeDocument("@in", documentPath); - codeDocument.SetTagHelperContext(tagHelperContext); + var codeDocument = CreateCodeDocument("@in", documentPath, [tagHelper]); var provider = new RazorCompletionListProvider(_completionFactsService, _completionListCache, LoggerFactory); var completionContext = new VSInternalCompletionContext() { @@ -466,9 +464,7 @@ public void GetCompletionList_DoesNotProvideInjectOnInvoked() builder.TagMatchingRule(rule => rule.TagName = "Test"); builder.Metadata(TypeName("TestNamespace.TestTagHelper")); var tagHelper = builder.Build(); - var tagHelperContext = TagHelperDocumentContext.Create(prefix: string.Empty, [tagHelper]); - var codeDocument = CreateCodeDocument("@inje", documentPath); - codeDocument.SetTagHelperContext(tagHelperContext); + var codeDocument = CreateCodeDocument("@inje", documentPath, [tagHelper]); var provider = new RazorCompletionListProvider(_completionFactsService, _completionListCache, LoggerFactory); var completionContext = new VSInternalCompletionContext() { @@ -494,9 +490,7 @@ public void GetCompletionList_ProvidesInjectOnIncomplete() builder.TagMatchingRule(rule => rule.TagName = "Test"); builder.Metadata(TypeName("TestNamespace.TestTagHelper")); var tagHelper = builder.Build(); - var tagHelperContext = TagHelperDocumentContext.Create(prefix: string.Empty, [tagHelper]); - var codeDocument = CreateCodeDocument("@inje", documentPath); - codeDocument.SetTagHelperContext(tagHelperContext); + var codeDocument = CreateCodeDocument("@inje", documentPath, [tagHelper]); var provider = new RazorCompletionListProvider(_completionFactsService, _completionListCache, LoggerFactory); var completionContext = new VSInternalCompletionContext() { @@ -525,9 +519,7 @@ public void GetCompletionList_ProvidesTagHelperElementCompletionItems() builder.TagMatchingRule(rule => rule.TagName = "Test"); builder.Metadata(TypeName("TestNamespace.TestTagHelper")); var tagHelper = builder.Build(); - var tagHelperContext = TagHelperDocumentContext.Create(prefix: string.Empty, [tagHelper]); - var codeDocument = CreateCodeDocument("<", documentPath); - codeDocument.SetTagHelperContext(tagHelperContext); + var codeDocument = CreateCodeDocument("<", documentPath, [tagHelper]); var provider = new RazorCompletionListProvider(_completionFactsService, _completionListCache, LoggerFactory); // Act @@ -555,9 +547,7 @@ public void GetCompletionList_ProvidesTagHelperAttributeItems() }); builder.Metadata(TypeName("TestNamespace.TestTagHelper")); var tagHelper = builder.Build(); - var tagHelperContext = TagHelperDocumentContext.Create(prefix: string.Empty, [tagHelper]); - var codeDocument = CreateCodeDocument(" item.InsertText == "testAttribute=$0"); } - private static RazorCodeDocument CreateCodeDocument(string text, string documentFilePath) + private static RazorCodeDocument CreateCodeDocument(string text, string documentFilePath, ImmutableArray tagHelpers = default) { var codeDocument = TestRazorCodeDocument.CreateEmpty(); var sourceDocument = TestRazorSourceDocument.Create(text, filePath: documentFilePath); var syntaxTree = RazorSyntaxTree.Parse(sourceDocument); codeDocument.SetSyntaxTree(syntaxTree); - var tagHelperDocumentContext = TagHelperDocumentContext.Create(prefix: string.Empty, tagHelpers: []); + var tagHelperDocumentContext = TagHelperDocumentContext.Create(prefix: null, tagHelpers.NullToEmpty()); codeDocument.SetTagHelperContext(tagHelperDocumentContext); return codeDocument; } diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Diagnostics/TaskListDiagnosticProviderTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Diagnostics/TaskListDiagnosticProviderTest.cs index 9c261ac3e72..1cf4c45a73f 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Diagnostics/TaskListDiagnosticProviderTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Diagnostics/TaskListDiagnosticProviderTest.cs @@ -6,7 +6,6 @@ using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.Razor.Diagnostics; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Extensions/RazorCodeDocumentExtensionsTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Extensions/RazorCodeDocumentExtensionsTest.cs index 88fe73770b3..6e11b01ef5f 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Extensions/RazorCodeDocumentExtensionsTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Extensions/RazorCodeDocumentExtensionsTest.cs @@ -336,6 +336,6 @@ private static RazorCodeDocument CreateCodeDocument(TestCode code, params Immuta }); }); - return projectEngine.ProcessDesignTime(sourceDocument, "mvc", importSources: default, tagHelpers); + return projectEngine.ProcessDesignTime(sourceDocument, RazorFileKind.Legacy, importSources: default, tagHelpers); } } diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/FilePathServiceTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/FilePathServiceTest.cs index 0421c2ce086..7817d5325f2 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/FilePathServiceTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/FilePathServiceTest.cs @@ -2,8 +2,8 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Xunit; namespace Microsoft.CodeAnalysis.Razor.Workspaces.Test; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Hover/HoverFactoryTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Hover/HoverFactoryTest.cs index fae68d11ec6..ae21d6dbd18 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Hover/HoverFactoryTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Hover/HoverFactoryTest.cs @@ -8,8 +8,7 @@ using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.Classification; using Microsoft.CodeAnalysis.Razor.Tooltip; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Microsoft.VisualStudio.Text.Adornments; +using Roslyn.Text.Adornments; using Moq; using Xunit; using Xunit.Abstractions; @@ -48,9 +47,8 @@ public async Task GetHoverAsync_TagHelper_Element() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("**Test1TagHelper**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5); Assert.Equal(expectedRange, hover.Range); } @@ -72,9 +70,8 @@ public async Task GetHoverAsync_TagHelper_Element_WithParent() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("**SomeChild**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 2, character: 5, length: 9); + var expectedRange = LspFactory.CreateSingleLineRange(line: 2, character: 5, length: 9); Assert.Equal(expectedRange, hover.Range); } @@ -96,7 +93,6 @@ public async Task GetHoverAsync_TagHelper_Attribute_WithParent() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("**Attribute**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); var expectedRange = codeDocument.Source.Text.GetRange(code.Span); Assert.Equal(expectedRange, hover.Range); @@ -118,9 +114,8 @@ public async Task GetHoverAsync_TagHelper_Element_EndTag() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("**Test1TagHelper**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 9, length: 5); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 9, length: 5); Assert.Equal(expectedRange, hover.Range); } @@ -140,10 +135,9 @@ public async Task GetHoverAsync_TagHelper_Attribute() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("**BoolVal**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.DoesNotContain("**IntVal**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); Assert.Equal(expectedRange, hover.Range); } @@ -163,10 +157,9 @@ public async Task GetHoverAsync_TagHelper_AttributeTrailingEdge() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("**BoolVal**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.DoesNotContain("**IntVal**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); Assert.Equal(expectedRange, hover.Range); } @@ -240,10 +233,9 @@ public async Task GetHoverAsync_TagHelper_MinimizedAttribute() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("**BoolVal**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.DoesNotContain("**IntVal**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); Assert.Equal(expectedRange, hover.Range); } @@ -267,9 +259,8 @@ public void Increment(){ // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("**Test**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 5, length: 5); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 5, length: 5); Assert.Equal(expectedRange, hover.Range); } @@ -289,9 +280,8 @@ public async Task GetHoverAsync_TagHelper_MalformedElement() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("**Test1TagHelper**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5); Assert.Equal(expectedRange, hover.Range); } @@ -311,10 +301,9 @@ public async Task GetHoverAsync_TagHelper_MalformedAttribute() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("**BoolVal**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.DoesNotContain("**IntVal**", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); Assert.Equal(expectedRange, hover.Range); } @@ -352,10 +341,9 @@ public async Task GetHoverAsync_TagHelper_PlainTextElement() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("Test1TagHelper", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.Equal(MarkupKind.PlainText, ((MarkupContent)hover.Contents).Kind); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5); Assert.Equal(expectedRange, hover.Range); } @@ -375,10 +363,9 @@ public async Task GetHoverAsync_TagHelper_PlainTextElement_EndTag() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("Test1TagHelper", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.Equal(MarkupKind.PlainText, ((MarkupContent)hover.Contents).Kind); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 9, length: 5); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 9, length: 5); Assert.Equal(expectedRange, hover.Range); } @@ -397,10 +384,9 @@ public async Task GetHoverAsync_TagHelper_TextComponent() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("Text", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.Equal(MarkupKind.PlainText, ((MarkupContent)hover.Contents).Kind); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 0, character: 1, length: 4); + var expectedRange = LspFactory.CreateSingleLineRange(line: 0, character: 1, length: 4); Assert.Equal(expectedRange, hover.Range); } @@ -421,10 +407,9 @@ public async Task GetHoverAsync_TagHelper_TextComponent_NestedInHtml() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("Text", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.Equal(MarkupKind.PlainText, ((MarkupContent)hover.Contents).Kind); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 5, length: 4); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 5, length: 4); Assert.Equal(expectedRange, hover.Range); } @@ -468,10 +453,9 @@ public async Task GetHoverAsync_TagHelper_TextComponent_NestedInCSharpAndText() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("Text", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.Equal(MarkupKind.PlainText, ((MarkupContent)hover.Contents).Kind); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 3, character: 9, length: 4); + var expectedRange = LspFactory.CreateSingleLineRange(line: 3, character: 9, length: 4); Assert.Equal(expectedRange, hover.Range); } @@ -491,11 +475,10 @@ public async Task GetHoverAsync_TagHelper_PlainTextAttribute() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); Assert.Contains("BoolVal", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.DoesNotContain("IntVal", ((MarkupContent)hover.Contents).Value, StringComparison.Ordinal); Assert.Equal(MarkupKind.PlainText, ((MarkupContent)hover.Contents).Kind); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); Assert.Equal(expectedRange, hover.Range); } @@ -551,10 +534,9 @@ public async Task GetHoverAsync_TagHelper_Element_VSClient_ReturnVSHover() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); - Assert.False(hover.Contents.Value.TryGetFourth(out var _)); - Assert.True(hover.Contents.Value.TryGetThird(out var _) && !hover.Contents.Value.Third.Any()); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5); + Assert.False(hover.Contents.TryGetFourth(out var _)); + Assert.True(hover.Contents.TryGetThird(out var _) && !hover.Contents.Third.Any()); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 1, length: 5); Assert.Equal(expectedRange, hover.Range); var vsHover = Assert.IsType(hover); @@ -589,10 +571,9 @@ public async Task GetHoverAsync_TagHelper_Attribute_VSClient_ReturnVSHover() // Assert Assert.NotNull(hover); - Assert.NotNull(hover.Contents); - Assert.False(hover.Contents.Value.TryGetFourth(out _)); - Assert.True(hover.Contents.Value.TryGetThird(out var markedStrings) && !markedStrings.Any()); - var expectedRange = VsLspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); + Assert.False(hover.Contents.TryGetFourth(out _)); + Assert.True(hover.Contents.TryGetThird(out var markedStrings) && !markedStrings.Any()); + var expectedRange = LspFactory.CreateSingleLineRange(line: 1, character: 7, length: 8); Assert.Equal(expectedRange, hover.Range); var vsHover = Assert.IsType(hover); diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/IProjectSnapshotManagerExtensions.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/IProjectSnapshotManagerExtensions.cs index 165380d101f..8d05b12eb14 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/IProjectSnapshotManagerExtensions.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/IProjectSnapshotManagerExtensions.cs @@ -5,7 +5,6 @@ using System.Collections.Immutable; using System.Linq; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.Workspaces.Test; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.csproj b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.csproj index 36c2f7e6ac4..6592f638aae 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.csproj +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Microsoft.CodeAnalysis.Razor.Workspaces.Test.csproj @@ -3,10 +3,14 @@ $(StandardTestTfms) true + + + $(DefineConstants);GENERATE_JSON_FILES + diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/ProjectEngineFactoryProviderTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/ProjectEngineFactoryProviderTest.cs index 34fb4152bf5..67898dd1a14 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/ProjectEngineFactoryProviderTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/ProjectEngineFactoryProviderTest.cs @@ -6,10 +6,8 @@ using System.Collections.Immutable; using System.IO; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.Razor.ProjectSystem; - using Xunit; using Xunit.Abstractions; using Mvc1_X = Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/ProjectEngineFactory_UnsupportedTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/ProjectEngineFactory_UnsupportedTest.cs deleted file mode 100644 index 33f2ffeb5b6..00000000000 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/ProjectEngineFactory_UnsupportedTest.cs +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System; -using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Test.Common; - -using Xunit; -using Xunit.Abstractions; -using Xunit.Sdk; - -namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost.Test; - -public class ProjectEngineFactory_UnsupportedTest(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) -{ - [Fact] - public void Create_IgnoresConfigureParameter() - { - // Arrange - var factory = new ProjectEngineFactory_Unsupported(); - - // Act & Assert - factory.Create(UnsupportedRazorConfiguration.Instance, RazorProjectFileSystem.Empty, (builder) => throw new XunitException("There should not be an opportunity to configure the project engine in the unsupported scenario.")); - } - - // This is more of an integration test to validate that all the pieces work together - [Fact] - public void Create_ProcessDesignTime_AlwaysGeneratesEmptyGeneratedCSharp() - { - // Arrange - var factory = new ProjectEngineFactory_Unsupported(); - var engine = factory.Create(UnsupportedRazorConfiguration.Instance, RazorProjectFileSystem.Empty, (_) => { }); - var sourceDocument = TestRazorSourceDocument.Create("Hello World!", RazorSourceDocumentProperties.Default); - - // Act - var codeDocument = engine.ProcessDesignTime(sourceDocument, "test", importSources: default, Array.Empty()); - - // Assert - Assert.Equal(UnsupportedCSharpLoweringPhase.UnsupportedDisclaimer, codeDocument.GetCSharpDocument().Text.ToString()); - } -} diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/CompareKeysTestData.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/CompareKeysTestData.cs index 34751c9f67c..4f452886aac 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/CompareKeysTestData.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/CompareKeysTestData.cs @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.ProjectSystem; using Xunit; namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DocumentKeyTests.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DocumentKeyTests.cs index bc22bd62dd2..050e685fa3b 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DocumentKeyTests.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DocumentKeyTests.cs @@ -1,10 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -#nullable disable - using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DocumentStateTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DocumentStateTest.cs index 1162177b1f8..abbd343b4da 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DocumentStateTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/DocumentStateTest.cs @@ -61,100 +61,4 @@ public async Task DocumentState_WithTextLoader_CreatesNewState() var text = await state.GetTextAsync(DisposalToken); Assert.Same(_text, text); } - - [Fact] - public void DocumentState_WithConfigurationChange_CachesSnapshotText() - { - // Arrange - var original = DocumentState.Create(_hostDocument, EmptyTextLoader.Instance) - .WithText(_text, VersionStamp.Create()); - - // Act - var state = original.WithConfigurationChange(); - - // Assert - Assert.True(state.TryGetText(out _)); - Assert.True(state.TryGetTextVersion(out _)); - } - - [Fact] - public async Task DocumentState_WithConfigurationChange_CachesLoadedText() - { - // Arrange - var original = DocumentState.Create(_hostDocument, EmptyTextLoader.Instance) - .WithTextLoader(_textLoader); - - await original.GetTextAsync(DisposalToken); - - // Act - var state = original.WithConfigurationChange(); - - // Assert - Assert.True(state.TryGetText(out _)); - Assert.True(state.TryGetTextVersion(out _)); - } - - [Fact] - public void DocumentState_WithImportsChange_CachesSnapshotText() - { - // Arrange - var original = DocumentState.Create(_hostDocument, EmptyTextLoader.Instance) - .WithText(_text, VersionStamp.Create()); - - // Act - var state = original.WithImportsChange(); - - // Assert - Assert.True(state.TryGetText(out _)); - Assert.True(state.TryGetTextVersion(out _)); - } - - [Fact] - public async Task DocumentState_WithImportsChange_CachesLoadedText() - { - // Arrange - var original = DocumentState.Create(_hostDocument, EmptyTextLoader.Instance) - .WithTextLoader(_textLoader); - - await original.GetTextAsync(DisposalToken); - - // Act - var state = original.WithImportsChange(); - - // Assert - Assert.True(state.TryGetText(out _)); - Assert.True(state.TryGetTextVersion(out _)); - } - - [Fact] - public void DocumentState_WithProjectWorkspaceStateChange_CachesSnapshotText() - { - // Arrange - var original = DocumentState.Create(_hostDocument, EmptyTextLoader.Instance) - .WithText(_text, VersionStamp.Create()); - - // Act - var state = original.WithProjectWorkspaceStateChange(); - - // Assert - Assert.True(state.TryGetText(out _)); - Assert.True(state.TryGetTextVersion(out _)); - } - - [Fact] - public async Task DocumentState_WithProjectWorkspaceStateChange_CachesLoadedText() - { - // Arrange - var original = DocumentState.Create(_hostDocument, EmptyTextLoader.Instance) - .WithTextLoader(_textLoader); - - await original.GetTextAsync(DisposalToken); - - // Act - var state = original.WithProjectWorkspaceStateChange(); - - // Assert - Assert.True(state.TryGetText(out _)); - Assert.True(state.TryGetTextVersion(out _)); - } } diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectKeyTests.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectKeyTests.cs index 742d47e0154..f5ec05b1821 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectKeyTests.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectKeyTests.cs @@ -1,11 +1,8 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -#nullable disable - using System.IO; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectSnapshotTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectSnapshotTest.cs index c783b12709d..504def8d622 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectSnapshotTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectSnapshotTest.cs @@ -3,7 +3,6 @@ using System.Linq; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Xunit; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectStateGeneratedOutputTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectStateGeneratedOutputTest.cs deleted file mode 100644 index 00e59121da3..00000000000 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectStateGeneratedOutputTest.cs +++ /dev/null @@ -1,195 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the MIT license. See License.txt in the project root for license information. - -using System.Collections.Immutable; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; -using Xunit; -using Xunit.Abstractions; - -namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; - -public class ProjectStateGeneratedOutputTest : WorkspaceTestBase -{ - private readonly HostDocument _hostDocument; - private readonly HostProject _hostProject; - private readonly HostProject _hostProjectWithConfigurationChange; - private readonly ImmutableArray _someTagHelpers; - - public ProjectStateGeneratedOutputTest(ITestOutputHelper testOutput) - : base(testOutput) - { - _hostProject = TestProjectData.SomeProject with { Configuration = FallbackRazorConfiguration.MVC_2_0 }; - _hostProjectWithConfigurationChange = TestProjectData.SomeProject with { Configuration = FallbackRazorConfiguration.MVC_1_0 }; - - _someTagHelpers = ImmutableArray.Create( - TagHelperDescriptorBuilder.Create("Test1", "TestAssembly").Build()); - - _hostDocument = TestProjectData.SomeProjectFile1; - } - - protected override void ConfigureProjectEngine(RazorProjectEngineBuilder builder) - { - builder.SetImportFeature(new TestImportProjectFeature(HierarchicalImports.Legacy)); - } - - [Fact] - public async Task AddDocument_CachesOutput() - { - // Arrange - var state = ProjectState - .Create(_hostProject, CompilerOptions, ProjectEngineFactoryProvider) - .AddEmptyDocument(_hostDocument); - - var output = await GetGeneratedOutputAsync(state, _hostDocument); - - // Act - var newState = state.AddEmptyDocument(TestProjectData.AnotherProjectFile1); - var newOutput = await GetGeneratedOutputAsync(newState, _hostDocument); - - // Assert - Assert.Same(output, newOutput); - } - - [Fact] - public async Task AddDocument_Import_DoesNotCacheOutput() - { - // Arrange - var state = ProjectState - .Create(_hostProject, CompilerOptions, ProjectEngineFactoryProvider) - .AddEmptyDocument(_hostDocument); - - var output = await GetGeneratedOutputAsync(state, _hostDocument); - - // Act - var newState = state.AddEmptyDocument(TestProjectData.SomeProjectImportFile); - var newOutput = await GetGeneratedOutputAsync(newState, _hostDocument); - - // Assert - Assert.NotSame(output, newOutput); - } - - [Fact] - public async Task WithDocumentText_DoesNotCacheOutput() - { - // Arrange - var state = ProjectState - .Create(_hostProject, CompilerOptions, ProjectEngineFactoryProvider) - .AddEmptyDocument(_hostDocument) - .AddEmptyDocument(TestProjectData.SomeProjectImportFile); - - var output = await GetGeneratedOutputAsync(state, _hostDocument); - - // Act - var newState = state.WithDocumentText(_hostDocument.FilePath, TestMocks.CreateTextLoader("@using System")); - var newOutput = await GetGeneratedOutputAsync(newState, _hostDocument); - - // Assert - Assert.NotSame(output, newOutput); - } - - [Fact] - public async Task WithDocumentText_Import_DoesNotCacheOutput() - { - // Arrange - var state = ProjectState - .Create(_hostProject, CompilerOptions, ProjectEngineFactoryProvider) - .AddEmptyDocument(_hostDocument) - .AddEmptyDocument(TestProjectData.SomeProjectImportFile); - - var output = await GetGeneratedOutputAsync(state, _hostDocument); - - // Act - var newState = state.WithDocumentText(TestProjectData.SomeProjectImportFile.FilePath, TestMocks.CreateTextLoader("@using System")); - var newOutput = await GetGeneratedOutputAsync(newState, _hostDocument); - - // Assert - Assert.NotSame(output, newOutput); - } - - [Fact] - public async Task RemoveDocument_Import_DoesNotCacheOutput() - { - // Arrange - var state = ProjectState - .Create(_hostProject, CompilerOptions, ProjectEngineFactoryProvider) - .AddEmptyDocument(_hostDocument) - .AddEmptyDocument(TestProjectData.SomeProjectImportFile); - - var output = await GetGeneratedOutputAsync(state, _hostDocument); - - // Act - var newState = state.RemoveDocument(TestProjectData.SomeProjectImportFile.FilePath); - var newOutput = await GetGeneratedOutputAsync(newState, _hostDocument); - - // Assert - Assert.NotSame(output, newOutput); - } - - [Fact] - public async Task WithProjectWorkspaceState_CachesOutput_EvenWhenNewerProjectWorkspaceState() - { - // Arrange - var state = ProjectState - .Create(_hostProject, CompilerOptions, ProjectEngineFactoryProvider) - .AddEmptyDocument(_hostDocument); - - var output = await GetGeneratedOutputAsync(state, _hostDocument); - - // Act - var newState = state.WithProjectWorkspaceState(ProjectWorkspaceState.Default); - var newOutput = await GetGeneratedOutputAsync(newState, _hostDocument); - - // Assert - Assert.Same(output, newOutput); - } - - [Fact] - public async Task WithProjectWorkspaceState_TagHelperChange_DoesNotCacheOutput() - { - // Arrange - var state = ProjectState - .Create(_hostProject, CompilerOptions, ProjectEngineFactoryProvider) - .AddEmptyDocument(_hostDocument); - - var output = await GetGeneratedOutputAsync(state, _hostDocument); - - // Act - var newState = state.WithProjectWorkspaceState(ProjectWorkspaceState.Create(_someTagHelpers)); - var newOutput = await GetGeneratedOutputAsync(newState, _hostDocument); - - // Assert - Assert.NotSame(output, newOutput); - } - - [Fact] - public async Task WithHostProject_DoesNotCacheOutput() - { - // Arrange - var state = ProjectState - .Create(_hostProject, CompilerOptions, ProjectEngineFactoryProvider) - .AddEmptyDocument(_hostDocument); - - var output = await GetGeneratedOutputAsync(state, _hostDocument); - - // Act - var newState = state.WithHostProject(_hostProjectWithConfigurationChange); - var newOutput = await GetGeneratedOutputAsync(newState, _hostDocument); - - // Assert - Assert.NotSame(output, newOutput); - } - - private ValueTask GetGeneratedOutputAsync(ProjectState project, HostDocument hostDocument) - { - var document = project.Documents[hostDocument.FilePath]; - - var projectSnapshot = new ProjectSnapshot(project); - var documentSnapshot = new DocumentSnapshot(projectSnapshot, document); - - return documentSnapshot.GetGeneratedOutputAsync(DisposalToken); - } -} diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectStateTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectStateTest.cs index 2605703a4e9..5c9c2f8ffaa 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectStateTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/ProjectStateTest.cs @@ -5,11 +5,10 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; -using Microsoft.AspNetCore.Razor.Utilities; - +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Text; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/GenerateJsonFiles.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/GenerateJsonFiles.cs new file mode 100644 index 00000000000..3a037da918b --- /dev/null +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/GenerateJsonFiles.cs @@ -0,0 +1,119 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the MIT license. See License.txt in the project root for license information. + +// Uncomment to easily generate new JSON files +//#define GENERATE_JSON_FILES + +using System; +using System.Collections.Immutable; +using System.IO; +using Microsoft.AspNetCore.Razor.Language; +using Microsoft.AspNetCore.Razor.Serialization.Json; +using Microsoft.AspNetCore.Razor.Test.Common; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Xunit; +using Xunit.Abstractions; + +/////////////////////////////////////////////////////////////////////////////// +// +// Note: The JSON files used for testing are very large. When making +// significant changes to the JSON format for tag helpers or RazorProjectInfo, it +// can be helpful to update the ObjectWriters first and the write new JSON files +// before updating the ObjectReaders. This avoids having to make a series of +// manual edits to the JSON resource files. +// +// 1. Update ObjectWriters to write the new JSON format. +// 2. Uncomment the GENERATE_JSON_FILES #define above. +// 3. Run the GenerateNewJsonFiles test below. +// 4. Update ObjectReaders to read the new JSON format. +// 5. Comment the GENERATE_JSON_FILES #define again. +// 6. Run all of the tests in SerializerValidationTest to ensure that the +// new JSON files deserialize correctly. +// +/////////////////////////////////////////////////////////////////////////////// + +namespace Microsoft.CodeAnalysis.Razor.Serialization; + +public class GenerateJsonFiles(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) +{ +#if GENERATE_JSON_FILES + internal static readonly bool ShouldGenerate = true; +#else + internal static readonly bool ShouldGenerate = false; +#endif + + // This is to prevent you from accidentally checking in with GenerateJsonFiles = true + [Fact] + public void GenerateJsonFilesMustBeFalse() + { + Assert.False(ShouldGenerate, "GenerateJsonFiles should be set back to false before you check in!"); + } + + // This updates shared JSON files +#if GENERATE_JSON_FILES + [Theory] +#else + [Theory(Skip = "Run with /p:GenerateJsonFiles=true or uncomment #define GENERATE_JSON_FILES to run this test.")] +#endif + [MemberData(nameof(JsonFiles))] + public void GenerateNewJsonFiles(JsonFile jsonFile) + { + var filePath = Path.Combine([GetSharedFilesRoot(), .. jsonFile.PathParts]); + + if (jsonFile.IsRazorProjectInfo) + { + var original = DeserializeProjectInfoFromFile(filePath); + JsonDataConvert.SerializeToFile(original, filePath, indented: true); + } + else + { + var original = DeserializeTagHelperArrayFromFile(filePath); + JsonDataConvert.SerializeToFile(original, filePath, indented: true); + } + } + + public readonly record struct JsonFile(string[] PathParts, bool IsRazorProjectInfo) + { + public static JsonFile TagHelpers(params string[] pathParts) + => new(pathParts, IsRazorProjectInfo: false); + + public static JsonFile RazorProjectInfo(params string[] pathParts) + => new(pathParts, IsRazorProjectInfo: true); + } + + public static TheoryData JsonFiles => + new() + { + JsonFile.TagHelpers("Compiler", "taghelpers.json"), + JsonFile.TagHelpers("Tooling", "BlazorServerApp.TagHelpers.json"), + JsonFile.TagHelpers("Tooling", "taghelpers.json"), + JsonFile.TagHelpers("Tooling", "Telerik", "Kendo.Mvc.Examples.taghelpers.json"), + JsonFile.RazorProjectInfo("Tooling", "project.razor.json"), + JsonFile.RazorProjectInfo("Tooling", "Telerik", "Kendo.Mvc.Examples.project.razor.json") + }; + + private static RazorProjectInfo DeserializeProjectInfoFromFile(string filePath) + { + using var reader = new StreamReader(filePath); + return JsonDataConvert.DeserializeProjectInfo(reader); + } + + private static ImmutableArray DeserializeTagHelperArrayFromFile(string filePath) + { + using var reader = new StreamReader(filePath); + return JsonDataConvert.DeserializeTagHelperArray(reader); + } + + private static string GetSharedFilesRoot() + { + var current = new DirectoryInfo(AppContext.BaseDirectory); + while (current != null && !File.Exists(Path.Combine(current.FullName, "Razor.sln"))) + { + current = current.Parent; + } + + Assert.NotNull(current); + + return Path.Combine(current.FullName, "src", "Shared", "files"); + } +} diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/JsonSerializationTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/JsonSerializationTest.cs new file mode 100644 index 00000000000..9ea62edeac2 --- /dev/null +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/JsonSerializationTest.cs @@ -0,0 +1,143 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the MIT license. See License.txt in the project root for license information. + +using System.Linq; +using Microsoft.AspNetCore.Razor.Language; +using Microsoft.AspNetCore.Razor.Serialization.Json; +using Microsoft.AspNetCore.Razor.Test.Common; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Newtonsoft.Json.Linq; +using Xunit; +using Xunit.Abstractions; + +namespace Microsoft.CodeAnalysis.Razor.Serialization; + +public class JsonSerializationTest(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) +{ + private readonly RazorConfiguration _configuration = new(RazorLanguageVersion.Experimental, ConfigurationName: "Custom", [new("TestExtension")]); + + private readonly ProjectWorkspaceState _projectWorkspaceState = ProjectWorkspaceState.Create( + tagHelpers: [TagHelperDescriptorBuilder.Create("Test", "TestAssembly").Build()]); + + [Fact] + public void RazorProjectInfo_InvalidVersionThrows() + { + // Arrange + var projectInfo = new RazorProjectInfo( + new ProjectKey("/path/to/obj/"), + "/path/to/project.csproj", + _configuration, + rootNamespace: "TestProject", + displayName: "project", + _projectWorkspaceState, + documents: []); + + var jsonText = JsonDataConvert.Serialize(projectInfo); + Assert.NotNull(jsonText); + + var serializedJObject = JObject.Parse(jsonText); + serializedJObject[WellKnownPropertyNames.Version] = -1; + + var updatedJsonText = serializedJObject.ToString(); + Assert.NotNull(updatedJsonText); + + // Act + RazorProjectInfo? deserializedProjectInfo = null; + Assert.Throws(() => + { + deserializedProjectInfo = JsonDataConvert.DeserializeProjectInfo(updatedJsonText); + }); + + // Assert + Assert.Null(deserializedProjectInfo); + } + + [Fact] + public void RazorProjectInfo_MissingVersionThrows() + { + // Arrange + var projectInfo = new RazorProjectInfo( + new ProjectKey("/path/to/obj/"), + "/path/to/project.csproj", + _configuration, + rootNamespace: "TestProject", + displayName: "project", + _projectWorkspaceState, + documents: []); + + var jsonText = JsonDataConvert.Serialize(projectInfo); + Assert.NotNull(jsonText); + + var serializedJObject = JObject.Parse(jsonText); + serializedJObject.Remove(WellKnownPropertyNames.Version); + + var updatedJsonText = serializedJObject.ToString(); + Assert.NotNull(updatedJsonText); + + // Act + RazorProjectInfo? deserializedProjectInfo = null; + Assert.Throws(() => + { + deserializedProjectInfo = JsonDataConvert.DeserializeProjectInfo(updatedJsonText); + }); + + // Assert + Assert.Null(deserializedProjectInfo); + } + + [Fact] + public void RazorProjectInfo_CanRoundTrip() + { + // Arrange + var legacyDocument = new DocumentSnapshotHandle("/path/to/file.cshtml", "file.cshtml", RazorFileKind.Legacy); + var componentDocument = new DocumentSnapshotHandle("/path/to/otherfile.razor", "otherfile.razor", RazorFileKind.Component); + var projectInfo = new RazorProjectInfo( + new ProjectKey("/path/to/obj/"), + "/path/to/project.csproj", + _configuration, + rootNamespace: "TestProject", + displayName: "project", + _projectWorkspaceState, + documents: [legacyDocument, componentDocument]); + + var jsonText = JsonDataConvert.Serialize(projectInfo); + Assert.NotNull(jsonText); + + // Act + var deserializedProjectInfo = JsonDataConvert.DeserializeProjectInfo(jsonText); + Assert.NotNull(deserializedProjectInfo); + + // Assert + Assert.Equal(projectInfo.FilePath, deserializedProjectInfo.FilePath); + Assert.Equal(projectInfo.Configuration, deserializedProjectInfo.Configuration); + Assert.Equal(projectInfo.RootNamespace, deserializedProjectInfo.RootNamespace); + Assert.Equal(projectInfo.ProjectWorkspaceState, deserializedProjectInfo.ProjectWorkspaceState); + Assert.Collection(projectInfo.Documents.OrderBy(doc => doc.FilePath), + document => + { + Assert.Equal(legacyDocument.FilePath, document.FilePath); + Assert.Equal(legacyDocument.TargetPath, document.TargetPath); + Assert.Equal(legacyDocument.FileKind, document.FileKind); + }, + document => + { + Assert.Equal(componentDocument.FilePath, document.FilePath); + Assert.Equal(componentDocument.TargetPath, document.TargetPath); + Assert.Equal(componentDocument.FileKind, document.FileKind); + }); + } + + [Fact] + public void RazorConfiguration_CanRoundTrip() + { + // Arrange + var jsonText = JsonDataConvert.Serialize(_configuration); + Assert.NotNull(jsonText); + + // Act + var deserializedConfiguration = JsonDataConvert.DeserializeConfiguration(jsonText); + + // Assert + Assert.Equal(_configuration, deserializedConfiguration); + } +} diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/ProjectSnapshotHandleSerializationTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/ProjectSnapshotHandleSerializationTest.cs new file mode 100644 index 00000000000..6e0ddc07e51 --- /dev/null +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/ProjectSnapshotHandleSerializationTest.cs @@ -0,0 +1,82 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the MIT license. See License.txt in the project root for license information. + +using System.Linq; +using MessagePack; +using MessagePack.Resolvers; +using Microsoft.AspNetCore.Razor.Language; +using Microsoft.AspNetCore.Razor.Test.Common; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; +using Xunit; +using Xunit.Abstractions; + +namespace Microsoft.CodeAnalysis.Razor.Serialization; + +public class ProjectSnapshotHandleSerializationTest(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) +{ + private static readonly MessagePackSerializerOptions s_options = MessagePackSerializerOptions.Standard + .WithResolver(CompositeResolver.Create( + ProjectSnapshotHandleResolver.Instance, + StandardResolver.Instance)); + + [Fact] + public void ProjectSnapshotHandle_Serialization_CanKindaRoundTrip() + { + // Arrange + var projectId = ProjectId.CreateNewId(); + var expectedSnapshot = new ProjectSnapshotHandle( + projectId, + new(RazorLanguageVersion.Version_1_1, + "Test", + [new("Test-Extension1"), new("Test-Extension2")], + CodeAnalysis.CSharp.LanguageVersion.CSharp7, + UseConsolidatedMvcViews: false, + SuppressAddComponentParameter: true, + UseRoslynTokenizer: true, + PreprocessorSymbols: ["DEBUG", "TRACE", "DAVID"]), + "Test"); + + // Act + var bytes = MessagePackConvert.Serialize(expectedSnapshot, s_options); + var actualSnapshot = MessagePackConvert.Deserialize(bytes, s_options); + + // Assert + Assert.NotNull(actualSnapshot); + Assert.Equal(expectedSnapshot.ProjectId, actualSnapshot.ProjectId); + Assert.NotNull(expectedSnapshot.Configuration); + Assert.NotNull(actualSnapshot.Configuration); + Assert.Equal(expectedSnapshot.Configuration.ConfigurationName, actualSnapshot.Configuration.ConfigurationName); + Assert.Collection( + expectedSnapshot.Configuration.Extensions.OrderBy(e => e.ExtensionName), + e => Assert.Equal("Test-Extension1", e.ExtensionName), + e => Assert.Equal("Test-Extension2", e.ExtensionName)); + Assert.Equal(expectedSnapshot.Configuration.LanguageVersion, actualSnapshot.Configuration.LanguageVersion); + Assert.Equal(expectedSnapshot.RootNamespace, actualSnapshot.RootNamespace); + Assert.Equal(expectedSnapshot.Configuration.CSharpLanguageVersion, actualSnapshot.Configuration.CSharpLanguageVersion); + Assert.Equal(expectedSnapshot.Configuration.UseConsolidatedMvcViews, actualSnapshot.Configuration.UseConsolidatedMvcViews); + Assert.Equal(expectedSnapshot.Configuration.SuppressAddComponentParameter, actualSnapshot.Configuration.SuppressAddComponentParameter); + Assert.Equal(expectedSnapshot.Configuration.UseRoslynTokenizer, actualSnapshot.Configuration.UseRoslynTokenizer); + Assert.Collection(actualSnapshot.Configuration.PreprocessorSymbols, + s => Assert.Equal("DEBUG", s), + s => Assert.Equal("TRACE", s), + s => Assert.Equal("DAVID", s)); + } + + [Fact] + public void ProjectSnapshotHandle_SerializationWithNulls_CanKindaRoundTrip() + { + // Arrange + var projectId = ProjectId.CreateNewId(); + var expectedSnapshot = new ProjectSnapshotHandle(projectId, RazorConfiguration.Default, null); + + // Act + var bytes = MessagePackConvert.Serialize(expectedSnapshot, s_options); + var actualSnapshot = MessagePackConvert.Deserialize(bytes, s_options); + + // Assert + Assert.NotNull(actualSnapshot); + Assert.Equal(expectedSnapshot.ProjectId, actualSnapshot.ProjectId); + Assert.NotNull(actualSnapshot.Configuration); + Assert.Null(actualSnapshot.RootNamespace); + } +} diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/SerializerValidationTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/SerializerValidationTest.cs new file mode 100644 index 00000000000..40ac9d62d5d --- /dev/null +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/SerializerValidationTest.cs @@ -0,0 +1,116 @@ +using System.Collections.Immutable; +using MessagePack; +using MessagePack.Resolvers; +using Microsoft.AspNetCore.Razor.Language; +using Microsoft.AspNetCore.Razor.Serialization.Json; +using Microsoft.AspNetCore.Razor.Test.Common; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; +using Xunit; +using Xunit.Abstractions; + +namespace Microsoft.CodeAnalysis.Razor.Serialization; + +public class SerializerValidationTest(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) +{ + [Theory] + [InlineData("Kendo.Mvc.Examples.project.razor.json", "Telerik")] + [InlineData("project.razor.json")] + public void VerifyMessagePack_RazorProjectInfo(string resourceName, string? folderName = null) + { + // Arrange + var resourceBytes = RazorTestResources.GetResourceBytes(resourceName, folderName); + + // Read tag helpers from JSON + var originalProjectInfo = JsonDataConvert.DeserializeProjectInfo(resourceBytes); + + var options = MessagePackSerializerOptions.Standard + .WithResolver(CompositeResolver.Create( + RazorProjectInfoResolver.Instance, + StandardResolver.Instance)); + + // Act + var bytes = MessagePackConvert.Serialize(originalProjectInfo, options); + var actualProjectInfo = MessagePackConvert.Deserialize(bytes, options); + + // Assert + Assert.Equal(originalProjectInfo, actualProjectInfo); + } + + [Theory] + [InlineData("Kendo.Mvc.Examples.taghelpers.json", "Telerik")] + [InlineData("taghelpers.json")] + public void VerifyMessagePack_TagHelpers(string resourceName, string? folderName = null) + { + // Arrange + var resourceBytes = RazorTestResources.GetResourceBytes(resourceName, folderName); + + // Read tag helpers from JSON + var originalTagHelpers = JsonDataConvert.DeserializeTagHelperArray(resourceBytes); + + var options = MessagePackSerializerOptions.Standard.WithResolver( + CompositeResolver.Create( + FetchTagHelpersResultResolver.Instance, + StandardResolver.Instance)); + + // Act + var bytes = MessagePackConvert.Serialize(originalTagHelpers, options); + var actualTagHelpers = MessagePackConvert.Deserialize>(bytes, options); + + // Assert + Assert.Equal(originalTagHelpers, actualTagHelpers); + } + + [Theory] + [InlineData("Kendo.Mvc.Examples.project.razor.json", "Telerik")] + [InlineData("project.razor.json")] + public void VerifyJson_RazorProjectInfo(string resourceName, string? folderName = null) + { + // Arrange + var resourceBytes = RazorTestResources.GetResourceBytes(resourceName, folderName); + + // Read tag helpers from JSON + var originalProjectInfo = JsonDataConvert.DeserializeProjectInfo(resourceBytes); + + // Act + + // Serialize to JSON + var jsonText = JsonDataConvert.Serialize(originalProjectInfo); + + // Deserialize from JSON + var actualProjectInfo = JsonDataConvert.DeserializeProjectInfo(jsonText); + Assert.NotNull(actualProjectInfo); + + // Assert + Assert.Equal(originalProjectInfo.ProjectKey, actualProjectInfo.ProjectKey); + Assert.Equal(originalProjectInfo.FilePath, actualProjectInfo.FilePath); + Assert.Equal(originalProjectInfo.Configuration, actualProjectInfo.Configuration); + Assert.Equal(originalProjectInfo.RootNamespace, actualProjectInfo.RootNamespace); + Assert.Equal(originalProjectInfo.ProjectWorkspaceState, actualProjectInfo.ProjectWorkspaceState); + Assert.Equal(originalProjectInfo.Documents, actualProjectInfo.Documents); + } + + [Theory] + [InlineData("Kendo.Mvc.Examples.taghelpers.json", "Telerik")] + [InlineData("taghelpers.json")] + [InlineData("BlazorServerApp.TagHelpers.json")] + public void VerifyJson_TagHelpers(string resourceName, string? folderName = null) + { + // Arrange + var resourceBytes = RazorTestResources.GetResourceBytes(resourceName, folderName); + + // Read tag helpers from JSON + var originalTagHelpers = JsonDataConvert.DeserializeTagHelperArray(resourceBytes); + + // Act + + // Serialize to JSON + var jsonText = JsonDataConvert.Serialize(originalTagHelpers); + + // Deserialize from JSON + var actualTagHelpers = JsonDataConvert.DeserializeTagHelperArray(jsonText); + + // Assert + Assert.Equal(originalTagHelpers, actualTagHelpers); + } +} diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/TagHelperDeltaResultSerializationTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/TagHelperDeltaResultSerializationTest.cs new file mode 100644 index 00000000000..0c0fbb9e2fa --- /dev/null +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Serialization/TagHelperDeltaResultSerializationTest.cs @@ -0,0 +1,289 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the MIT license. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using MessagePack; +using MessagePack.Resolvers; +using Microsoft.AspNetCore.Mvc.Razor.Extensions; +using Microsoft.AspNetCore.Razor.Language; +using Microsoft.AspNetCore.Razor.Test.Common; +using Microsoft.CodeAnalysis.Razor.Serialization.MessagePack.Resolvers; +using Xunit; +using Xunit.Abstractions; +using static Microsoft.AspNetCore.Razor.Language.CommonMetadata; + +namespace Microsoft.CodeAnalysis.Razor.Serialization; + +public class TagHelperDeltaResultSerializationTest(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) +{ + private static readonly MessagePackSerializerOptions s_options = MessagePackSerializerOptions.Standard + .WithResolver(CompositeResolver.Create( + TagHelperDeltaResultResolver.Instance, + StandardResolver.Instance)); + + [Fact] + public void TagHelperResolutionResult_DefaultBlazorServerProject_RoundTrips() + { + // Arrange + var tagHelpers = RazorTestResources.BlazorServerAppTagHelpers; + var checksums = tagHelpers.SelectAsArray(t => t.Checksum); + + var expectedResult = new TagHelperDeltaResult( + IsDelta: true, + ResultId: 1, + Added: checksums, + Removed: checksums); + + // Act + + // Serialize the result to bytes + var bytes = MessagePackConvert.Serialize(expectedResult, s_options); + + // Deserialize the bytes we just serialized. + var actualResult = MessagePackConvert.Deserialize(bytes, s_options); + + // Assert + Assert.NotNull(actualResult); + Assert.Equal(expectedResult, actualResult); + } + + [Fact] + public void TagHelperDescriptor_RoundTripsProperly() + { + // Arrange + var descriptor = CreateTagHelperDescriptor( + kind: TagHelperConventions.DefaultKind, + tagName: "tag-name", + typeName: "type name", + assemblyName: "assembly name", + attributes: + [ + builder => builder + .Name("test-attribute") + .Metadata(PropertyName("TestAttribute")) + .TypeName("string"), + ], + ruleBuilders: + [ + builder => builder + .RequireAttributeDescriptor(attribute => attribute + .Name("required-attribute-one") + .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)) + .RequireAttributeDescriptor(attribute => attribute + .Name("required-attribute-two") + .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch) + .Value("something") + .ValueComparisonMode(RequiredAttributeDescriptor.ValueComparisonMode.PrefixMatch)) + .RequireParentTag("parent-name") + .RequireTagStructure(TagStructure.WithoutEndTag), + ], + configureAction: builder => + { + builder.AllowChildTag("allowed-child-one"); + builder.Metadata("foo", "bar"); + }); + + var expectedResult = new TagHelperDeltaResult( + IsDelta: true, + ResultId: 1, + Added: [descriptor.Checksum], + Removed: [descriptor.Checksum]); + + // Act + var bytes = MessagePackConvert.Serialize(expectedResult, s_options); + var actualResult = MessagePackConvert.Deserialize(bytes, s_options); + + // Assert + Assert.Equal(expectedResult, actualResult); + } + + [Fact] + public void ViewComponentTagHelperDescriptor_RoundTripsProperly() + { + // Arrange + var descriptor = CreateTagHelperDescriptor( + kind: ViewComponentTagHelperConventions.Kind, + tagName: "tag-name", + typeName: "type name", + assemblyName: "assembly name", + attributes: + [ + builder => builder + .Name("test-attribute") + .Metadata(PropertyName("TestAttribute")) + .TypeName("string"), + ], + ruleBuilders: + [ + builder => builder + .RequireAttributeDescriptor(attribute => attribute + .Name("required-attribute-one") + .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)) + .RequireAttributeDescriptor(attribute => attribute + .Name("required-attribute-two") + .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch) + .Value("something") + .ValueComparisonMode(RequiredAttributeDescriptor.ValueComparisonMode.PrefixMatch)) + .RequireParentTag("parent-name") + .RequireTagStructure(TagStructure.WithoutEndTag), + ], + configureAction: builder => + { + builder.AllowChildTag("allowed-child-one"); + builder.Metadata("foo", "bar"); + }); + + var expectedResult = new TagHelperDeltaResult( + IsDelta: true, + ResultId: 1, + Added: [descriptor.Checksum], + Removed: [descriptor.Checksum]); + + // Act + var bytes = MessagePackConvert.Serialize(expectedResult, s_options); + var actualResult = MessagePackConvert.Deserialize(bytes, s_options); + + // Assert + Assert.Equal(expectedResult, actualResult); + } + + [Fact] + public void TagHelperDescriptor_WithDiagnostic_RoundTripsProperly() + { + // Arrange + var descriptor = CreateTagHelperDescriptor( + kind: TagHelperConventions.DefaultKind, + tagName: "tag-name", + typeName: "type name", + assemblyName: "assembly name", + attributes: + [ + builder => builder + .Name("test-attribute") + .Metadata(PropertyName("TestAttribute")) + .TypeName("string"), + ], + ruleBuilders: + [ + builder => builder + .RequireAttributeDescriptor(attribute => attribute + .Name("required-attribute-one") + .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)) + .RequireAttributeDescriptor(attribute => attribute + .Name("required-attribute-two") + .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.FullMatch) + .Value("something") + .ValueComparisonMode(RequiredAttributeDescriptor.ValueComparisonMode.PrefixMatch)) + .RequireParentTag("parent-name"), + ], + configureAction: builder => builder.AllowChildTag("allowed-child-one") + .Metadata("foo", "bar") + .AddDiagnostic(RazorDiagnostic.Create( + new RazorDiagnosticDescriptor("id", "Test Message", RazorDiagnosticSeverity.Error), new SourceSpan(null, 10, 20, 30, 40)))); + + var expectedResult = new TagHelperDeltaResult( + IsDelta: true, + ResultId: 1, + Added: [descriptor.Checksum], + Removed: [descriptor.Checksum]); + + // Act + var bytes = MessagePackConvert.Serialize(expectedResult, s_options); + var actualResult = MessagePackConvert.Deserialize(bytes, s_options); + + // Assert + Assert.Equal(expectedResult, actualResult); + } + + [Fact] + public void TagHelperDescriptor_WithIndexerAttributes_RoundTripsProperly() + { + // Arrange + var descriptor = CreateTagHelperDescriptor( + kind: TagHelperConventions.DefaultKind, + tagName: "tag-name", + typeName: "type name", + assemblyName: "assembly name", + attributes: + [ + builder => builder + .Name("test-attribute") + .Metadata(PropertyName("TestAttribute")) + .TypeName("SomeEnum") + .AsEnum() + .Documentation("Summary"), + builder => builder + .Name("test-attribute2") + .Metadata(PropertyName("TestAttribute2")) + .TypeName("SomeDictionary") + .AsDictionaryAttribute("dict-prefix-", "string"), + ], + ruleBuilders: + [ + builder => builder + .RequireAttributeDescriptor(attribute => attribute + .Name("required-attribute-one") + .NameComparisonMode(RequiredAttributeDescriptor.NameComparisonMode.PrefixMatch)) + ], + configureAction: builder => builder + .AllowChildTag("allowed-child-one") + .Metadata("foo", "bar") + .TagOutputHint("Hint")); + + var expectedResult = new TagHelperDeltaResult( + IsDelta: true, + ResultId: 1, + Added: [descriptor.Checksum], + Removed: [descriptor.Checksum]); + + // Act + var bytes = MessagePackConvert.Serialize(expectedResult, s_options); + var actualResult = MessagePackConvert.Deserialize(bytes, s_options); + + // Assert + Assert.Equal(expectedResult, actualResult); + } + + private static TagHelperDescriptor CreateTagHelperDescriptor( + string kind, + string tagName, + string typeName, + string assemblyName, + IEnumerable>? attributes = null, + IEnumerable>? ruleBuilders = null, + Action? configureAction = null) + { + var builder = TagHelperDescriptorBuilder.Create(kind, typeName, assemblyName); + builder.Metadata(TypeName(typeName)); + + if (attributes != null) + { + foreach (var attributeBuilder in attributes) + { + builder.BoundAttributeDescriptor(attributeBuilder); + } + } + + if (ruleBuilders != null) + { + foreach (var ruleBuilder in ruleBuilders) + { + builder.TagMatchingRuleDescriptor(innerRuleBuilder => + { + innerRuleBuilder.RequireTagName(tagName); + ruleBuilder(innerRuleBuilder); + }); + } + } + else + { + builder.TagMatchingRuleDescriptor(ruleBuilder => ruleBuilder.RequireTagName(tagName)); + } + + configureAction?.Invoke(builder); + + return builder.Build(); + } +} diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/TagHelperFactsTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/TagHelperFactsTest.cs index a1b00abdcbc..5f9a5ab4151 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/TagHelperFactsTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/TagHelperFactsTest.cs @@ -77,7 +77,7 @@ public void GetTagHelperBinding_WorksAsExpected() // Assert var descriptor = Assert.Single(binding.Descriptors); Assert.Equal(documentDescriptors[0], descriptor); - var boundRule = Assert.Single(binding.Mappings[descriptor]); + var boundRule = Assert.Single(binding.GetBoundRules(descriptor)); Assert.Equal(documentDescriptors[0].TagMatchingRules.First(), boundRule); } diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/TextDifferencing/SourceTextDifferTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/TextDifferencing/SourceTextDifferTest.cs index 5ad6bff0766..0b95eb69efc 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/TextDifferencing/SourceTextDifferTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/TextDifferencing/SourceTextDifferTest.cs @@ -3,7 +3,6 @@ using System; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.AspNetCore.Razor.TextDifferencing; using Microsoft.CodeAnalysis.Text; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/ClassifiedTagHelperTooltipFactoryTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/ClassifiedTagHelperTooltipFactoryTest.cs index eb7f49dd11a..b04f9d4a0f0 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/ClassifiedTagHelperTooltipFactoryTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/ClassifiedTagHelperTooltipFactoryTest.cs @@ -10,7 +10,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.Classification; -using Microsoft.VisualStudio.Text.Adornments; +using Roslyn.Text.Adornments; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/MarkupTagHelperTooltipFactoryTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/MarkupTagHelperTooltipFactoryTest.cs index b0c37f88f75..91ff5f3f3de 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/MarkupTagHelperTooltipFactoryTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/MarkupTagHelperTooltipFactoryTest.cs @@ -5,8 +5,9 @@ using System.Collections.Immutable; using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; +using Microsoft.CodeAnalysis.Razor.Tooltip; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/ProjectAvailabilityTests.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/ProjectAvailabilityTests.cs index 2c2151bcf62..626ddeb4847 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/ProjectAvailabilityTests.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/ProjectAvailabilityTests.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Components; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Roslyn.Test.Utilities; @@ -48,7 +47,7 @@ public async Task GetProjectAvailabilityText_OneProject_ReturnsNull() var hostDocument = new HostDocument( "C:/path/to/file.razor", "file.razor", - FileKinds.Component); + RazorFileKind.Component); var projectManager = CreateProjectSnapshotManager(); @@ -93,7 +92,7 @@ public async Task GetProjectAvailabilityText_AvailableInAllProjects_ReturnsNull( var hostDocument = new HostDocument( "C:/path/to/file.razor", "file.razor", - FileKinds.Component); + RazorFileKind.Component); var projectManager = CreateProjectSnapshotManager(); @@ -142,7 +141,7 @@ public async Task GetProjectAvailabilityText_NotAvailableInAllProjects_ReturnsTe var hostDocument = new HostDocument( "C:/path/to/file.razor", "file.razor", - FileKinds.Component); + RazorFileKind.Component); var projectManager = CreateProjectSnapshotManager(); @@ -187,7 +186,7 @@ public async Task GetProjectAvailabilityText_NotAvailableInAnyProject_ReturnsTex var hostDocument = new HostDocument( "C:/path/to/file.razor", "file.razor", - FileKinds.Component); + RazorFileKind.Component); var projectManager = CreateProjectSnapshotManager(); diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/TestComponentAvailabilityService.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/TestComponentAvailabilityService.cs index f6ade562e13..c1658fb8715 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/TestComponentAvailabilityService.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Tooltip/TestComponentAvailabilityService.cs @@ -3,7 +3,6 @@ using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.CodeAnalysis.Razor.Tooltip; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/AsyncBatchingWorkQueueTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/AsyncBatchingWorkQueueTest.cs index a2a69509a19..f0177e8957b 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/AsyncBatchingWorkQueueTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/AsyncBatchingWorkQueueTest.cs @@ -5,11 +5,10 @@ using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.AspNetCore.Razor.Utilities; using Xunit; using Xunit.Abstractions; -namespace Microsoft.CodeAnalysis.Razor.Workspaces.Test.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; public class AsyncBatchingWorkQueueTest(ITestOutputHelper output) : ToolingTestBase(output) { diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/FilePathNormalizerTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/FilePathNormalizerTest.cs similarity index 98% rename from src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/FilePathNormalizerTest.cs rename to src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/FilePathNormalizerTest.cs index 21210532d6d..20415167350 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/FilePathNormalizerTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/FilePathNormalizerTest.cs @@ -4,11 +4,10 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.AspNetCore.Razor.Utilities; using Xunit; using Xunit.Abstractions; -namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost.Test; +namespace Microsoft.CodeAnalysis.Razor.Utilities; public class FilePathNormalizerTest(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) { diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/MemoryCacheTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/MemoryCacheTest.cs similarity index 92% rename from src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/MemoryCacheTest.cs rename to src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/MemoryCacheTest.cs index f58abfe09d9..5afd47433d4 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/MemoryCacheTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/MemoryCacheTest.cs @@ -1,8 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -#nullable disable - using System; using System.Collections.Generic; using System.Globalization; @@ -10,19 +8,14 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.AspNetCore.Razor.Utilities; +using Microsoft.CodeAnalysis; using Xunit; using Xunit.Abstractions; -namespace Microsoft.CodeAnalysis.Razor.Test; +namespace Microsoft.CodeAnalysis.Razor.Utilities; -public class MemoryCacheTest : ToolingTestBase +public class MemoryCacheTest(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) { - public MemoryCacheTest(ITestOutputHelper testOutput) - : base(testOutput) - { - } - [Fact] public async Task ConcurrentSets_DoesNotThrow() { @@ -110,7 +103,7 @@ public void NullKey() { var cache = new TestMemoryCache(); - Assert.Throws(() => cache.TryGetValue(key: null, out var result)); + Assert.Throws(() => cache.TryGetValue(key: null!, out var result)); } private static string GetKey() diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/StreamExtensionTests.NetCore.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/StreamExtensionTests.NetCore.cs similarity index 91% rename from src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/StreamExtensionTests.NetCore.cs rename to src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/StreamExtensionTests.NetCore.cs index 3e91bcc3a69..837c6174307 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/StreamExtensionTests.NetCore.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/StreamExtensionTests.NetCore.cs @@ -9,14 +9,13 @@ using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Serialization; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.AspNetCore.Razor.Utilities; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Serialization; using Xunit; using Xunit.Abstractions; -namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost.Test; +namespace Microsoft.CodeAnalysis.Razor.Utilities; public class StreamExtensionTests(ITestOutputHelper testOutputHelper) : ToolingTestBase(testOutputHelper) { @@ -88,7 +87,7 @@ public async Task SerializeProjectInfo() "TestNamespace", "Test", projectWorkspaceState, - [new DocumentSnapshotHandle(@"C:\test\document.razor", @"document.razor", FileKinds.Component)]); + [new DocumentSnapshotHandle(@"C:\test\document.razor", @"document.razor", RazorFileKind.Component)]); var bytesToSerialize = projectInfo.Serialize(); @@ -111,7 +110,7 @@ public async Task SerializeProjectInfo() [Theory] [CombinatorialData] - internal void ProjectInfoActionFunctions(ProjectInfoAction infoAction) + internal void ProjectInfoActionFunctions(RazorProjectInfoAction infoAction) { using var stream = new MemoryStream(); stream.WriteProjectInfoAction(infoAction); diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/TagHelperDescriptorCacheTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/TagHelperDescriptorCacheTest.cs similarity index 97% rename from src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/TagHelperDescriptorCacheTest.cs rename to src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/TagHelperDescriptorCacheTest.cs index 1c3e6f55508..d91b54b354f 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectEngineHost/TagHelperDescriptorCacheTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/TagHelperDescriptorCacheTest.cs @@ -6,11 +6,12 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Utilities; +using Microsoft.CodeAnalysis; using Xunit; using Xunit.Abstractions; using static Microsoft.AspNetCore.Razor.Language.CommonMetadata; -namespace Microsoft.CodeAnalysis.Razor.ProjectEngineHost.Test; +namespace Microsoft.CodeAnalysis.Razor.Utilities; public class TagHelperDescriptorCacheTest(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) { diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/UrlDecoderTests.cs b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/UrlDecoderTests.cs index 20d2893f2d8..8c5dba1cb6e 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/UrlDecoderTests.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/Utilities/UrlDecoderTests.cs @@ -3,11 +3,10 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.AspNetCore.Razor.Utilities; using Xunit; using Xunit.Abstractions; -namespace Microsoft.CodeAnalysis.Razor.Workspaces.Test.Utilities; +namespace Microsoft.CodeAnalysis.Razor.Utilities; public class UrlDecoderTests(ITestOutputHelper testOutput) : ToolingTestBase(testOutput) { diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.Test/TagHelperDeltaResultTest.cs b/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.Test/TagHelperDeltaResultTest.cs index 3fc7697422d..42a15037192 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.Test/TagHelperDeltaResultTest.cs +++ b/src/Razor/test/Microsoft.CodeAnalysis.Remote.Razor.Test/TagHelperDeltaResultTest.cs @@ -2,9 +2,9 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Collections.Immutable; -using Microsoft.AspNetCore.Razor.Serialization; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Utilities; +using Microsoft.CodeAnalysis.Razor.Serialization; using Xunit; using Xunit.Abstractions; using static Microsoft.AspNetCore.Razor.Test.Common.TagHelperTestData; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CodeActions/CohostCodeActionsEndpointTestBase.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CodeActions/CohostCodeActionsEndpointTestBase.cs index d5af12f4f0d..03c636d6542 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CodeActions/CohostCodeActionsEndpointTestBase.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CodeActions/CohostCodeActionsEndpointTestBase.cs @@ -7,30 +7,36 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; +using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Razor.CodeActions.Models; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; +using Microsoft.CodeAnalysis.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.CodeAnalysis.Remote.Razor; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Settings; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; -using LspDiagnostic = Microsoft.VisualStudio.LanguageServer.Protocol.Diagnostic; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost.CodeActions; public abstract class CohostCodeActionsEndpointTestBase(ITestOutputHelper testOutputHelper) : CohostEndpointTestBase(testOutputHelper) { - private protected async Task VerifyCodeActionAsync(TestCode input, string? expected, string codeActionName, int childActionIndex = 0, string? fileKind = null, (string filePath, string contents)[]? additionalFiles = null, (Uri fileUri, string contents)[]? additionalExpectedFiles = null) + private protected async Task VerifyCodeActionAsync( + TestCode input, + string? expected, + string codeActionName, + int childActionIndex = 0, + RazorFileKind? fileKind = null, + (string filePath, string contents)[]? additionalFiles = null, + (Uri fileUri, string contents)[]? additionalExpectedFiles = null) { var document = CreateRazorDocument(input, fileKind, additionalFiles); @@ -49,7 +55,7 @@ private protected async Task VerifyCodeActionAsync(TestCode input, string? expec await VerifyCodeActionResultAsync(document, workspaceEdit, expected, additionalExpectedFiles); } - private protected TextDocument CreateRazorDocument(TestCode input, string? fileKind = null, (string filePath, string contents)[]? additionalFiles = null) + private protected TextDocument CreateRazorDocument(TestCode input, RazorFileKind? fileKind = null, (string filePath, string contents)[]? additionalFiles = null) { var fileSystem = (RemoteFileSystem)OOPExportProvider.GetExportedValue(); fileSystem.GetTestAccessor().SetFileSystem(new TestFileSystem(additionalFiles)); @@ -67,8 +73,7 @@ private protected TextDocument CreateRazorDocument(TestCode input, string? fileK return options; }); - var document = CreateProjectAndRazorDocument(input.Text, fileKind, createSeparateRemoteAndLocalWorkspaces: true, additionalFiles: additionalFiles); - return document; + return CreateProjectAndRazorDocument(input.Text, fileKind, createSeparateRemoteAndLocalWorkspaces: true, additionalFiles: additionalFiles); } private async Task VerifyCodeActionRequestAsync(TextDocument document, TestCode input, string codeActionName, int childActionIndex, bool expectOffer) @@ -184,11 +189,11 @@ private async Task VerifyCodeActionResultAsync(TextDocument document, WorkspaceE var text = await textDocument.GetTextAsync(DisposalToken).ConfigureAwait(false); if (textDocument is Document) { - solution = solution.WithDocumentText(textDocument.Id, text.WithChanges(edit.Edits.Select(text.GetTextChange))); + solution = solution.WithDocumentText(textDocument.Id, text.WithChanges(edit.Edits.Select(e => text.GetTextChange((TextEdit)e)))); } else { - solution = solution.WithAdditionalDocumentText(textDocument.Id, text.WithChanges(edit.Edits.Select(text.GetTextChange))); + solution = solution.WithAdditionalDocumentText(textDocument.Id, text.WithChanges(edit.Edits.Select(e => text.GetTextChange((TextEdit)e)))); } } diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CodeActions/PromoteUsingDirectiveTests.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CodeActions/PromoteUsingDirectiveTests.cs index a340af3556d..5c89848db56 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CodeActions/PromoteUsingDirectiveTests.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CodeActions/PromoteUsingDirectiveTests.cs @@ -81,7 +81,7 @@ Hello World
""", codeActionName: LanguageServerConstants.CodeActions.PromoteUsingDirective, - fileKind: FileKinds.Legacy, + fileKind: RazorFileKind.Legacy, additionalExpectedFiles: [ (FileUri(@"..\_ViewImports.cshtml"), """ @using System diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentCompletionEndpointTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentCompletionEndpointTest.cs index 89121d592cb..ffa8bebefab 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentCompletionEndpointTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentCompletionEndpointTest.cs @@ -10,18 +10,11 @@ using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Razor.Settings; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.ProjectSystem; using Microsoft.VisualStudio.Razor.Settings; using Microsoft.VisualStudio.Razor.Snippets; using Xunit; using Xunit.Abstractions; -using RoslynCompletionParams = Roslyn.LanguageServer.Protocol.CompletionParams; -using RoslynCompletionTriggerKind = Roslyn.LanguageServer.Protocol.CompletionTriggerKind; -using RoslynLspExtensions = Roslyn.LanguageServer.Protocol.RoslynLspExtensions; -using RoslynTextDocumentIdentifier = Roslyn.LanguageServer.Protocol.TextDocumentIdentifier; -using RoslynVSInternalCompletionContext = Roslyn.LanguageServer.Protocol.VSInternalCompletionContext; -using RoslynVSInternalCompletionInvokeKind = Roslyn.LanguageServer.Protocol.VSInternalCompletionInvokeKind; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -40,10 +33,10 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Explicit, - TriggerKind = RoslynCompletionTriggerKind.Invoked + InvokeKind = VSInternalCompletionInvokeKind.Explicit, + TriggerKind = CompletionTriggerKind.Invoked }, expectedItemLabels: ["var", "char", "DateTime", "Exception"]); } @@ -59,11 +52,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = "@", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["char", "DateTime", "Exception"]); } @@ -79,11 +72,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = ".", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["DaysInMonth", "IsLeapYear", "Now"]); } @@ -101,11 +94,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Explicit, + InvokeKind = VSInternalCompletionInvokeKind.Explicit, TriggerCharacter = null, - TriggerKind = RoslynCompletionTriggerKind.Invoked + TriggerKind = CompletionTriggerKind.Invoked }, expectedItemLabels: ["char", "DateTime", "Exception"]); } @@ -128,11 +121,11 @@ void foo() The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = ".", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["DaysInMonth", "IsLeapYear", "Now"]); } @@ -150,11 +143,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Explicit, + InvokeKind = VSInternalCompletionInvokeKind.Explicit, TriggerCharacter = null, - TriggerKind = RoslynCompletionTriggerKind.Invoked + TriggerKind = CompletionTriggerKind.Invoked }, expectedItemLabels: ["Equals(object? obj)", "GetHashCode()", "SetParametersAsync(ParameterView parameters)", "ToString()"]); } @@ -178,11 +171,11 @@ void foo() The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = "<", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["text", "EditForm", "InputDate", "div"], delegatedItemLabels: ["div"]); @@ -219,11 +212,11 @@ void foo() The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = "@", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: expectedLabels); } @@ -239,11 +232,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = "<", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["LayoutView", "EditForm", "ValidationMessage", "div"], delegatedItemLabels: ["div"]); @@ -260,11 +253,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = "<", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["div", "h1", "LayoutView", "EditForm", "ValidationMessage"], delegatedItemLabels: ["div", "h1"]); @@ -279,11 +272,11 @@ This is a Razor document. <$$ """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = "<", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["div", "h1", "LayoutView", "EditForm", "ValidationMessage"], delegatedItemLabels: ["div", "h1"], @@ -301,11 +294,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = "<", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["div", "h1", "LayoutView", "EditForm", "ValidationMessage"], delegatedItemLabels: ["div", "h1"], @@ -324,11 +317,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Explicit, + InvokeKind = VSInternalCompletionInvokeKind.Explicit, TriggerCharacter = null, - TriggerKind = RoslynCompletionTriggerKind.Invoked + TriggerKind = CompletionTriggerKind.Invoked }, expectedItemLabels: ["snippet1", "snippet2"], delegatedItemLabels: [], @@ -342,11 +335,11 @@ await VerifyCompletionListAsync( input: """ $$ """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Explicit, + InvokeKind = VSInternalCompletionInvokeKind.Explicit, TriggerCharacter = null, - TriggerKind = RoslynCompletionTriggerKind.Invoked + TriggerKind = CompletionTriggerKind.Invoked }, expectedItemLabels: ["snippet1", "snippet2"], delegatedItemLabels: [], @@ -361,11 +354,11 @@ await VerifyCompletionListAsync( $$ """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Explicit, + InvokeKind = VSInternalCompletionInvokeKind.Explicit, TriggerCharacter = null, - TriggerKind = RoslynCompletionTriggerKind.Invoked + TriggerKind = CompletionTriggerKind.Invoked }, expectedItemLabels: ["snippet1", "snippet2"], delegatedItemLabels: [], @@ -380,11 +373,11 @@ await VerifyCompletionListAsync( $$ """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Explicit, + InvokeKind = VSInternalCompletionInvokeKind.Explicit, TriggerCharacter = null, - TriggerKind = RoslynCompletionTriggerKind.Invoked + TriggerKind = CompletionTriggerKind.Invoked }, expectedItemLabels: ["snippet1", "snippet2"], delegatedItemLabels: [], @@ -402,11 +395,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = " ", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["style", "dir"], unexpectedItemLabels: ["snippet1", "snippet2"], @@ -426,11 +419,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = " ", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["style", "dir", "@..."], delegatedItemLabels: ["style", "dir"]); @@ -448,11 +441,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = "@", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["style", "dir", "@rendermode", "@bind-..."], delegatedItemLabels: ["style", "dir"]); @@ -470,11 +463,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = null, - TriggerKind = RoslynCompletionTriggerKind.Invoked + TriggerKind = CompletionTriggerKind.Invoked }, expectedItemLabels: ["style", "dir", "culture", "event", "format", "get", "set", "after"], delegatedItemLabels: ["style", "dir"]); @@ -491,11 +484,11 @@ This is a Razor document. The end. """, - completionContext: new RoslynVSInternalCompletionContext() + completionContext: new VSInternalCompletionContext() { - InvokeKind = RoslynVSInternalCompletionInvokeKind.Typing, + InvokeKind = VSInternalCompletionInvokeKind.Typing, TriggerCharacter = " ", - TriggerKind = RoslynCompletionTriggerKind.TriggerCharacter + TriggerKind = CompletionTriggerKind.TriggerCharacter }, expectedItemLabels: ["style", "dir", "FormName", "OnValidSubmit", "@..."], delegatedItemLabels: ["style", "dir"]); @@ -510,11 +503,11 @@ This is a Razor document. new VSInternalCompletionItem() + Items = [.. delegatedItemLabels.Select((label) => new VSInternalCompletionItem() { Label = label, CommitCharacters = delegatedItemCommitCharacters, // If test specifies not to commit with space, set kind to element since we remove space // commit from elements only. Otherwise test doesn't care, so set to None Kind = !commitElementsWithSpace ? CompletionItemKind.Element : CompletionItemKind.None, - }).ToArray(), + })], IsIncomplete = true }; @@ -593,13 +586,13 @@ private async Task VerifyCompletionListAsync( requestInvoker, LoggerFactory); - var request = new RoslynCompletionParams() + var request = new CompletionParams() { - TextDocument = new RoslynTextDocumentIdentifier() + TextDocument = new TextDocumentIdentifier() { Uri = document.CreateUri() }, - Position = RoslynLspExtensions.GetPosition(sourceText, input.Position), + Position = sourceText.GetPosition(input.Position), Context = completionContext }; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentHighlightEndpointTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentHighlightEndpointTest.cs index ce044474c00..e34c2fcf89a 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentHighlightEndpointTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentHighlightEndpointTest.cs @@ -7,7 +7,6 @@ using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentPullDiagnosticsTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentPullDiagnosticsTest.cs index 7b67e6b363d..67d28afd215 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentPullDiagnosticsTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentPullDiagnosticsTest.cs @@ -8,7 +8,6 @@ using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.Razor.Diagnostics; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Settings; using Roslyn.Test.Utilities; using Xunit; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentSymbolEndpointTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentSymbolEndpointTest.cs index a9b9b09f359..990b4c1fbd2 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentSymbolEndpointTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentSymbolEndpointTest.cs @@ -5,10 +5,8 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -92,12 +90,15 @@ private async Task VerifyDocumentSymbolsAsync(string input, bool hierarchical = Assert.Equal(spansDict.Values.Count(), symbolsInformations.Length); var sourceText = SourceText.From(input); +#pragma warning disable CS0618 // Type or member is obsolete + // SymbolInformation is obsolete, but things still return it so we have to handle it foreach (var symbolInformation in symbolsInformations) { Assert.True(spansDict.TryGetValue(symbolInformation.Name, out var spans), $"Expected {symbolInformation.Name} to be in test provided markers"); var expectedRange = sourceText.GetRange(Assert.Single(spans)); Assert.Equal(expectedRange, symbolInformation.Location.Range); } +#pragma warning restore CS0618 // Type or member is obsolete } } diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTest.cs index 51093a9d438..cd80fb0f698 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTest.cs @@ -15,12 +15,12 @@ using Microsoft.CodeAnalysis.Razor.Workspaces; using Microsoft.VisualStudio.LanguageServer.Client; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Text; using Microsoft.VisualStudio.Threading; using Newtonsoft.Json.Linq; using Xunit; using Xunit.Abstractions; +using VSLSP = Microsoft.VisualStudio.LanguageServer.Protocol; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -66,7 +66,7 @@ public void RegistrationsProvideFilter() // First we verify that the MEF composition above is correct, otherwise this test will be invalid var actualProviders = typeof(CohostLinkedEditingRangeEndpoint).Assembly.GetTypes().Where(t => !t.IsInterface && typeof(IDynamicRegistrationProvider).IsAssignableFrom(t)).ToList(); - Assert.Equal(actualProviders.OrderBy(a => a.Name).Select(r => r.Name).ToArray(), providers.OrderBy(e => e.GetType().Name).Select(r => r.GetType().Name).ToArray()); + Assert.Equal([.. actualProviders.OrderBy(a => a.Name).Select(r => r.Name)], [.. providers.OrderBy(e => e.GetType().Name).Select(r => r.GetType().Name)]); var clientCapabilities = new VSInternalClientCapabilities() { @@ -115,14 +115,7 @@ public void RegistrationsProvideFilter() Assert.Fail($"Did not get any registrations from {endpoint.GetType().Name}. Client capabilities might be wrong?"); } - foreach (var registration in registrations) - { - var options = registration.RegisterOptions as ITextDocumentRegistrationOptions; - if (options is null) - { - Assert.Fail($"Could not convert registration options from {endpoint.GetType().Name} to {nameof(ITextDocumentRegistrationOptions)}. It was {registration.RegisterOptions?.GetType().Name}"); - } - } + Assert.All(registrations, registration => Assert.IsAssignableFrom(registration.RegisterOptions)); } } @@ -153,11 +146,11 @@ public event AsyncEventHandler ClientNotifyAsync public Task RequestAsync(ITextBuffer textBuffer, Func capabilitiesFilter, string languageServerName, string method, Func parameterFactory, CancellationToken cancellationToken) => throw new NotImplementedException(); public Task RequestAsync(ILanguageClient languageClient, string method, JToken parameters, CancellationToken cancellationToken) => throw new NotImplementedException(); public Task RequestAsync(Request request, CancellationToken cancellationToken) => throw new NotImplementedException(); - public Task<(ILanguageClient?, TOut)> RequestAsync(string[] contentTypes, Func capabilitiesFilter, LspRequest method, TIn parameters, CancellationToken cancellationToken) => throw new NotImplementedException(); - public Task RequestAsync(ILanguageClient languageClient, LspRequest method, TIn parameters, CancellationToken cancellationToken) => throw new NotImplementedException(); + public Task<(ILanguageClient?, TOut)> RequestAsync(string[] contentTypes, Func capabilitiesFilter, VSLSP.LspRequest method, TIn parameters, CancellationToken cancellationToken) => throw new NotImplementedException(); + public Task RequestAsync(ILanguageClient languageClient, VSLSP.LspRequest method, TIn parameters, CancellationToken cancellationToken) => throw new NotImplementedException(); public Task> RequestMultipleAsync(string[] contentTypes, Func capabilitiesFilter, string method, JToken parameters, CancellationToken cancellationToken) => throw new NotImplementedException(); public IAsyncEnumerable RequestMultipleAsync(ITextBuffer textBuffer, Func capabilitiesFilter, string method, Func parameterFactory, CancellationToken cancellationToken) => throw new NotImplementedException(); - public Task> RequestMultipleAsync(string[] contentTypes, Func capabilitiesFilter, LspRequest method, TIn parameters, CancellationToken cancellationToken) => throw new NotImplementedException(); + public Task> RequestMultipleAsync(string[] contentTypes, Func capabilitiesFilter, VSLSP.LspRequest method, TIn parameters, CancellationToken cancellationToken) => throw new NotImplementedException(); } [Export(typeof(IWorkspaceProvider))] diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTestBase.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTestBase.cs index a1ab9149eb0..219135e1c21 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTestBase.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostEndpointTestBase.cs @@ -23,9 +23,8 @@ using Microsoft.CodeAnalysis.Text; using Microsoft.NET.Sdk.Razor.SourceGenerators; using Microsoft.VisualStudio.Composition; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Xunit; using Roslyn.Test.Utilities; +using Xunit; using Xunit.Abstractions; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -137,13 +136,13 @@ private protected virtual TestComposition ConfigureRoslynDevenvComposition(TestC protected TextDocument CreateProjectAndRazorDocument( string contents, - string? fileKind = null, + RazorFileKind? fileKind = null, (string fileName, string contents)[]? additionalFiles = null, bool createSeparateRemoteAndLocalWorkspaces = false, bool inGlobalNamespace = false) { // Using IsLegacy means null == component, so easier for test authors - var isComponent = !FileKinds.IsLegacy(fileKind); + var isComponent = fileKind != RazorFileKind.Legacy; var documentFilePath = isComponent ? TestProjectData.SomeProjectComponentFile1.FilePath diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostFindAllReferencesEndpointTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostFindAllReferencesEndpointTest.cs index 786dbc5e5ff..853e102cbec 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostFindAllReferencesEndpointTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostFindAllReferencesEndpointTest.cs @@ -5,10 +5,9 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Test.Common; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis.ExternalAccess.Razor; +using Microsoft.CodeAnalysis.Razor.Utilities; using Microsoft.CodeAnalysis.Text; -using Roslyn.LanguageServer.Protocol; using Roslyn.Text.Adornments; using Xunit; using Xunit.Abstractions; @@ -98,7 +97,7 @@ private async Task VerifyFindAllReferencesAsync(TestCode input, bool supportsVSE return c; }); - var document = CreateProjectAndRazorDocument(input.Text, additionalFiles: additionalFiles.Select(f => (f.fileName, f.testCode.Text)).ToArray()); + var document = CreateProjectAndRazorDocument(input.Text, additionalFiles: [.. additionalFiles.Select(f => (f.fileName, f.testCode.Text))]); var inputText = await document.GetTextAsync(DisposalToken); var position = inputText.GetPosition(input.Position); @@ -151,10 +150,10 @@ private async Task VerifyFindAllReferencesAsync(TestCode input, bool supportsVSE } else { - var additionalFile = Assert.Single(additionalFiles.Where(f => FilePathNormalizingComparer.Instance.Equals(f.fileName, location.Uri.AbsolutePath))); - var text = SourceText.From(additionalFile.testCode.Text); + var (fileName, testCode) = Assert.Single(additionalFiles.Where(f => FilePathNormalizingComparer.Instance.Equals(f.fileName, location.Uri.AbsolutePath))); + var text = SourceText.From(testCode.Text); matchedText = text.Lines[location.Range.Start.Line].ToString(); - Assert.Single(additionalFile.testCode.Spans.Where(s => text.GetRange(s).Equals(location.Range))); + Assert.Single(testCode.Spans.Where(s => text.GetRange(s).Equals(location.Range))); } if (result.TryGetFirst(out var referenceItem)) @@ -174,10 +173,10 @@ private static string GetText(VSInternalReferenceItem referenceItem) return referenceItem.Text.AssumeNotNull().ToString(); } - private static Location GetLocation(SumType r) + private static LspLocation GetLocation(SumType r) { return r.TryGetFirst(out var refItem) - ? refItem.Location ?? Assumed.Unreachable() + ? refItem.Location ?? Assumed.Unreachable() : r.Second; } } diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostFoldingRangeEndpointTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostFoldingRangeEndpointTest.cs index 4dbfae089b7..27c4d480bfa 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostFoldingRangeEndpointTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostFoldingRangeEndpointTest.cs @@ -9,7 +9,6 @@ using Microsoft.AspNetCore.Razor.Language; using Microsoft.CodeAnalysis.Testing; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Roslyn.Test.Utilities; using Xunit; using Xunit.Abstractions; @@ -152,7 +151,7 @@ public Task CodeBlock_Mvc()

hello!

""", - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); [Fact] public Task Section() @@ -165,7 +164,7 @@ @section Hello {[|

hello!

""", - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); [Fact] public Task Section_Invalid() @@ -178,7 +177,7 @@ public Task Section_Invalid()

hello!

""", - fileKind: FileKinds.Legacy); + fileKind: RazorFileKind.Legacy); [Fact] public Task CSharpCodeInCodeBlocks() @@ -214,7 +213,7 @@ public void M() {[| }|] """); - private async Task VerifyFoldingRangesAsync(string input, string? fileKind = null) + private async Task VerifyFoldingRangesAsync(string input, RazorFileKind? fileKind = null) { TestFileMarkupParser.GetSpans(input, out var source, out ImmutableDictionary> spans); var document = CreateProjectAndRazorDocument(source, fileKind); @@ -262,9 +261,9 @@ private static string GenerateTestInput(SourceText inputText, ImmutableArray p.index)) + foreach (var (index, isStart) in markerPositions.OrderByDescending(p => p.index)) { - actual.Insert(marker.index, GetMarker(marker.index, marker.isStart, htmlSpans)); + actual.Insert(index, GetMarker(index, isStart, htmlSpans)); } static string GetMarker(int index, bool isStart, ImmutableArray htmlSpans) diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostGoToDefinitionEndpointTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostGoToDefinitionEndpointTest.cs index f434ea0af4e..ebba5e26bac 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostGoToDefinitionEndpointTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostGoToDefinitionEndpointTest.cs @@ -9,12 +9,8 @@ using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; -using RoslynDocumentLink = Roslyn.LanguageServer.Protocol.DocumentLink; -using RoslynLocation = Roslyn.LanguageServer.Protocol.Location; -using RoslynLspExtensions = Roslyn.LanguageServer.Protocol.RoslynLspExtensions; using TextDocument = Microsoft.CodeAnalysis.TextDocument; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -104,7 +100,7 @@ public async Task Attribute_SameFile(string method) } """; - await VerifyGoToDefinitionAsync(input, FileKinds.Component); + await VerifyGoToDefinitionAsync(input, RazorFileKind.Component); } [Fact] @@ -123,7 +119,7 @@ public async Task AttributeValue_BindAfter() } """; - await VerifyGoToDefinitionAsync(input, FileKinds.Component); + await VerifyGoToDefinitionAsync(input, RazorFileKind.Component); } [Fact] @@ -145,7 +141,7 @@ public async Task Component() } """; - var result = await GetGoToDefinitionResultAsync(input, FileKinds.Component, + var result = await GetGoToDefinitionResultAsync(input, RazorFileKind.Component, (FileName("SurveyPrompt.razor"), surveyPrompt.Text)); Assert.NotNull(result.Value.Second); @@ -153,7 +149,7 @@ public async Task Component() var location = Assert.Single(locations); var text = SourceText.From(surveyPrompt.Text); - var range = RoslynLspExtensions.GetRange(text, surveyPrompt.Span); + var range = text.GetRange(surveyPrompt.Span); Assert.Equal(range, location.Range); } @@ -191,7 +187,7 @@ @namespace SomeProject } """; - var result = await GetGoToDefinitionResultAsync(input, FileKinds.Component, + var result = await GetGoToDefinitionResultAsync(input, RazorFileKind.Component, (FileName("SurveyPrompt.razor"), surveyPrompt.Text)); Assert.NotNull(result.Value.Second); @@ -199,7 +195,7 @@ @namespace SomeProject var location = Assert.Single(locations); var text = SourceText.From(surveyPrompt.Text); - var range = RoslynLspExtensions.GetRange(text, surveyPrompt.Span); + var range = text.GetRange(surveyPrompt.Span); Assert.Equal(range, location.Range); } @@ -221,10 +217,9 @@ public async Task Html() var document = CreateProjectAndRazorDocument(input.Text); var inputText = await document.GetTextAsync(DisposalToken); - var htmlResponse = new SumType?(new Location[] + var htmlResponse = new SumType?(new LspLocation[] { - new Location - { + new() { Uri = new Uri(document.CreateUri(), document.Name + FeatureOptions.HtmlVirtualDocumentSuffix), Range = inputText.GetRange(input.Span), }, @@ -236,7 +231,10 @@ public async Task Html() private static string FileName(string projectRelativeFileName) => Path.Combine(TestProjectData.SomeProjectPath, projectRelativeFileName); - private async Task VerifyGoToDefinitionAsync(TestCode input, string? fileKind = null, SumType? htmlResponse = null) + private async Task VerifyGoToDefinitionAsync( + TestCode input, + RazorFileKind? fileKind = null, + SumType? htmlResponse = null) { var document = CreateProjectAndRazorDocument(input.Text, fileKind); var result = await GetGoToDefinitionResultCoreAsync(document, input, htmlResponse); @@ -248,21 +246,23 @@ private async Task VerifyGoToDefinitionAsync(TestCode input, string? fileKind = var location = Assert.Single(locations); var text = SourceText.From(input.Text); - var range = RoslynLspExtensions.GetRange(text, input.Span); + var range = text.GetRange(input.Span); Assert.Equal(range, location.Range); Assert.Equal(document.CreateUri(), location.Uri); } - private async Task?> GetGoToDefinitionResultAsync( - TestCode input, string? fileKind = null, params (string fileName, string contents)[]? additionalFiles) + private async Task?> GetGoToDefinitionResultAsync( + TestCode input, + RazorFileKind? fileKind = null, + params (string fileName, string contents)[]? additionalFiles) { var document = CreateProjectAndRazorDocument(input.Text, fileKind, additionalFiles); return await GetGoToDefinitionResultCoreAsync(document, input, htmlResponse: null); } - private async Task?> GetGoToDefinitionResultCoreAsync( - TextDocument document, TestCode input, SumType? htmlResponse) + private async Task?> GetGoToDefinitionResultCoreAsync( + TextDocument document, TestCode input, SumType? htmlResponse) { var inputText = await document.GetTextAsync(DisposalToken); var position = inputText.GetPosition(input.Position); diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostGoToImplementationEndpointTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostGoToImplementationEndpointTest.cs index 5f157074921..c9e6b7ce270 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostGoToImplementationEndpointTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostGoToImplementationEndpointTest.cs @@ -9,11 +9,8 @@ using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Remote.Razor; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; -using LspLocation = Microsoft.VisualStudio.LanguageServer.Protocol.Location; -using RoslynLspExtensions = Roslyn.LanguageServer.Protocol.RoslynLspExtensions; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -150,19 +147,11 @@ private async Task VerifyGoToImplementationResultCoreAsync(TestCode input, TextD if (result.Value.TryGetFirst(out var roslynLocations)) { var expected = input.Spans.Select(s => inputText.GetRange(s).ToLinePositionSpan()).OrderBy(r => r.Start.Line).ToArray(); - var actual = roslynLocations.Select(l => RoslynLspExtensions.ToLinePositionSpan(l.Range)).OrderBy(r => r.Start.Line).ToArray(); + var actual = roslynLocations.Select(l => l.Range.ToLinePositionSpan()).OrderBy(r => r.Start.Line).ToArray(); Assert.Equal(expected, actual); Assert.All(roslynLocations, l => l.Uri.Equals(document.CreateUri())); } - else if (result.Value.TryGetSecond(out var vsLocations)) - { - var expected = input.Spans.Select(s => inputText.GetRange(s).ToLinePositionSpan()).OrderBy(r => r.Start.Line).ToArray(); - var actual = vsLocations.Select(l => l.Range.ToLinePositionSpan()).OrderBy(r => r.Start.Line).ToArray(); - Assert.Equal(expected, actual); - - Assert.All(vsLocations, l => l.Uri.Equals(document.CreateUri())); - } else { Assert.Fail($"Unsupported result type: {result.Value.GetType()}"); diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostHoverEndpointTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostHoverEndpointTest.cs index 0d10af64354..a960115c999 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostHoverEndpointTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostHoverEndpointTest.cs @@ -7,10 +7,8 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.ExternalAccess.Razor; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; -using RoslynHover = Roslyn.LanguageServer.Protocol.Hover; namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost; @@ -183,16 +181,13 @@ await VerifyHoverAsync(code, async (hover, document) => }); } - private async Task VerifyHoverAsync(TestCode input, Func verifyHover) + private async Task VerifyHoverAsync(TestCode input, Func verifyHover) { var document = CreateProjectAndRazorDocument(input.Text); var result = await GetHoverResultAsync(document, input); Assert.NotNull(result); - var value = result.GetValueOrDefault(); - - Assert.True(value.TryGetFirst(out var hover)); - await verifyHover(hover, document); + await verifyHover(result, document); } private async Task VerifyHoverAsync(TestCode input, Hover htmlResponse, Action verifyHover) @@ -201,13 +196,10 @@ private async Task VerifyHoverAsync(TestCode input, Hover htmlResponse, Action?> GetHoverResultAsync(TextDocument document, TestCode input, Hover? htmlResponse = null) + private async Task GetHoverResultAsync(TextDocument document, TestCode input, Hover? htmlResponse = null) { var inputText = await document.GetTextAsync(DisposalToken); var linePosition = inputText.GetLinePosition(input.Position); @@ -217,7 +209,7 @@ private async Task VerifyHoverAsync(TestCode input, Hover htmlResponse, Action Run(string text, string? classificationT Assert.Equal(text, run.Text); }; - public static Action ClassName (string text) + public static Action ClassName(string text) => Run(text, ClassificationTypeNames.ClassName); public static Action Keyword(string text) diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/RazorComponentDefinitionServiceTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/RazorComponentDefinitionServiceTest.cs index d0f3f64d3a0..1b4fb69590b 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/RazorComponentDefinitionServiceTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/RazorComponentDefinitionServiceTest.cs @@ -9,7 +9,6 @@ using Microsoft.CodeAnalysis.Razor.GoToDefinition; using Microsoft.CodeAnalysis.Remote.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Xunit; using Xunit.Abstractions; @@ -62,7 +61,7 @@ await VerifyDefinitionAsync(input, surveyPrompt, private async Task VerifyDefinitionAsync(TestCode input, TestCode expectedDocument, params (string fileName, string contents)[]? additionalFiles) { - var document = CreateProjectAndRazorDocument(input.Text, FileKinds.Component, additionalFiles); + var document = CreateProjectAndRazorDocument(input.Text, RazorFileKind.Component, additionalFiles); var service = OOPExportProvider.GetExportedValue(); var snapshotManager = OOPExportProvider.GetExportedValue(); diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/OutOfProcTagHelperResolverTest.TestResolver.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/OutOfProcTagHelperResolverTest.TestResolver.cs index d9c63b1c63e..53b99fa0b07 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/OutOfProcTagHelperResolverTest.TestResolver.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/OutOfProcTagHelperResolverTest.TestResolver.cs @@ -6,13 +6,13 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.Serialization; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.Logging; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Remote; +using Microsoft.CodeAnalysis.Razor.Serialization; +using Microsoft.CodeAnalysis.Razor.Telemetry; namespace Microsoft.VisualStudio.Razor.Discovery; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/OutOfProcTagHelperResolverTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/OutOfProcTagHelperResolverTest.cs index 4fda438e15d..6e8255717d3 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/OutOfProcTagHelperResolverTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/OutOfProcTagHelperResolverTest.cs @@ -8,17 +8,16 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Serialization; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Remote; - +using Microsoft.CodeAnalysis.Razor.Serialization; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Xunit; using Xunit.Abstractions; using static Microsoft.AspNetCore.Razor.Test.Common.TagHelperTestData; @@ -105,6 +104,86 @@ await _projectManager.UpdateAsync(updater => Assert.Empty(result); } + [Fact] + public async Task GetTagHelpersAsync_WithSuccessOutOfProc_SkipsInProc() + { + // Arrange + await _projectManager.UpdateAsync(updater => + { + updater.AddProject(s_hostProject_For_2_0); + }); + + var projectSnapshot = _projectManager.GetRequiredProject(s_hostProject_For_2_0.Key); + + var calledOutOfProcess = false; + var calledInProcess = false; + + var resolver = new TestResolver(_remoteServiceInvoker, LoggerFactory, NoOpTelemetryReporter.Instance) + { + OnResolveOutOfProcess = (p) => + { + calledOutOfProcess = true; + + Assert.Same(projectSnapshot, p); + return new([]); + }, + OnResolveInProcess = (p) => + { + calledInProcess = true; + + Assert.Same(projectSnapshot, p); + return new([]); + }, + }; + + var result = await resolver.GetTagHelpersAsync(_workspaceProject, projectSnapshot, DisposalToken); + + // Assert + Assert.True(calledOutOfProcess); + Assert.False(calledInProcess); + Assert.Empty(result); + } + + [Fact] + public async Task GetTagHelpersAsync_WithFailOutOfProc_RunsInProc() + { + // Arrange + await _projectManager.UpdateAsync(updater => + { + updater.AddProject(s_hostProject_For_2_0); + }); + + var projectSnapshot = _projectManager.GetRequiredProject(s_hostProject_For_2_0.Key); + + var calledOutOfProcess = false; + var calledInProcess = false; + + var resolver = new TestResolver(_remoteServiceInvoker, LoggerFactory, NoOpTelemetryReporter.Instance) + { + OnResolveOutOfProcess = (p) => + { + calledOutOfProcess = true; + + Assert.Same(projectSnapshot, p); + throw new ApplicationException("Test exception"); + }, + OnResolveInProcess = (p) => + { + calledInProcess = true; + + Assert.Same(projectSnapshot, p); + return new([]); + }, + }; + + var result = await resolver.GetTagHelpersAsync(_workspaceProject, projectSnapshot, DisposalToken); + + // Assert + Assert.True(calledOutOfProcess); + Assert.True(calledInProcess); + Assert.Empty(result); + } + [Fact] public async Task GetTagHelpersAsync_WithNonSerializableCustomFactory_StaysInProcess() { diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/ProjectStateDetectorTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/ProjectStateDetectorTest.cs index 3d5be40d7de..3354c0f6f53 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/ProjectStateDetectorTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/ProjectStateDetectorTest.cs @@ -4,7 +4,6 @@ using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language.Components; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/ProjectStateUpdaterTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/ProjectStateUpdaterTest.cs index ce572387756..a20a97ac81c 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/ProjectStateUpdaterTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/ProjectStateUpdaterTest.cs @@ -6,13 +6,12 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Xunit; using Xunit.Abstractions; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/TestProjectStateUpdater.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/TestProjectStateUpdater.cs index e5c788050ae..6dd2857c3c6 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/TestProjectStateUpdater.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Discovery/TestProjectStateUpdater.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; using Microsoft.AspNetCore.Razor.PooledObjects; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; namespace Microsoft.VisualStudio.Razor.Discovery; diff --git a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Workspaces/DocumentExcerptServiceTestBase.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DocumentExcerptServiceTestBase.cs similarity index 99% rename from src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Workspaces/DocumentExcerptServiceTestBase.cs rename to src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DocumentExcerptServiceTestBase.cs index e4110008180..6f7c1eeb19c 100644 --- a/src/Razor/test/Microsoft.AspNetCore.Razor.Test.Common.Tooling/Workspaces/DocumentExcerptServiceTestBase.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DocumentExcerptServiceTestBase.cs @@ -7,10 +7,10 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; +using Microsoft.VisualStudio.Razor.DynamicFiles; using Xunit; using Xunit.Abstractions; using TestFileMarkupParser = Microsoft.CodeAnalysis.Testing.TestFileMarkupParser; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DocumentGenerator/BackgroundDocumentGeneratorTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DocumentGenerator/BackgroundDocumentGeneratorTest.cs index a3f0f66f137..dec0a0b1722 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DocumentGenerator/BackgroundDocumentGeneratorTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DocumentGenerator/BackgroundDocumentGeneratorTest.cs @@ -10,7 +10,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; using Microsoft.CodeAnalysis; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentManagerListenerTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentManagerListenerTest.cs index 5f957ca46be..1e0ba792c94 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentManagerListenerTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentManagerListenerTest.cs @@ -4,13 +4,12 @@ using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.Editor; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.Razor.ProjectSystem; using Microsoft.VisualStudio.Threading; using Moq; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentManagerTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentManagerTest.cs index 3eb8aec8aaf..b72c0a13510 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentManagerTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentManagerTest.cs @@ -3,11 +3,10 @@ using System.Collections.Generic; using System.Linq; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.Editor; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; -using Microsoft.CodeAnalysis.Razor; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.VisualStudio.Text; using Microsoft.VisualStudio.Threading; using Moq; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentTest.cs index cbbd8fe4283..459f02973c6 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Documents/EditorDocumentTest.cs @@ -1,11 +1,11 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.Editor; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; using Moq; using Xunit; diff --git a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/GeneratedDocumentTextLoaderTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DynamicFiles/GeneratedDocumentTextLoaderTest.cs similarity index 91% rename from src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/GeneratedDocumentTextLoaderTest.cs rename to src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DynamicFiles/GeneratedDocumentTextLoaderTest.cs index a26e25c66a1..5f04624a3be 100644 --- a/src/Razor/test/Microsoft.CodeAnalysis.Razor.Workspaces.Test/ProjectSystem/GeneratedDocumentTextLoaderTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DynamicFiles/GeneratedDocumentTextLoaderTest.cs @@ -5,10 +5,12 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Xunit; using Xunit.Abstractions; -namespace Microsoft.CodeAnalysis.Razor.ProjectSystem; +namespace Microsoft.VisualStudio.Razor.DynamicFiles; public class GeneratedDocumentTextLoaderTest(ITestOutputHelper testOutput) : WorkspaceTestBase(testOutput) { diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/DynamicFiles/RazorDocumentExcerptServiceTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DynamicFiles/RazorDocumentExcerptServiceTest.cs similarity index 99% rename from src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/DynamicFiles/RazorDocumentExcerptServiceTest.cs rename to src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DynamicFiles/RazorDocumentExcerptServiceTest.cs index c62258d839b..d4dd76c6dc3 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/DynamicFiles/RazorDocumentExcerptServiceTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DynamicFiles/RazorDocumentExcerptServiceTest.cs @@ -2,16 +2,15 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.Classification; using Microsoft.CodeAnalysis.ExternalAccess.Razor; -using Microsoft.VisualStudio.Razor.DynamicFiles; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Xunit; using Xunit.Abstractions; -namespace Microsoft.VisualStudio.Razor.LanguageClient.DynamicFiles; +namespace Microsoft.VisualStudio.Razor.DynamicFiles; public class RazorDocumentExcerptServiceTest(ITestOutputHelper testOutput) : DocumentExcerptServiceTestBase(testOutput) { diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/DynamicFiles/RazorMappingServiceTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DynamicFiles/RazorMappingServiceTest.cs similarity index 98% rename from src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/DynamicFiles/RazorMappingServiceTest.cs rename to src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DynamicFiles/RazorMappingServiceTest.cs index 51c7f669e68..23090156621 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/DynamicFiles/RazorMappingServiceTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/DynamicFiles/RazorMappingServiceTest.cs @@ -8,11 +8,10 @@ using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Text; -using Microsoft.VisualStudio.Razor.DynamicFiles; using Xunit; using Xunit.Abstractions; -namespace Microsoft.VisualStudio.Razor.LanguageClient.DynamicFiles; +namespace Microsoft.VisualStudio.Razor.DynamicFiles; public class RazorMappingServiceTest(ITestOutputHelper testOutput) : WorkspaceTestBase(testOutput) { diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/RazorBreakpointResolverTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/RazorBreakpointResolverTest.cs index 6a69c59564f..c80f798f61f 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/RazorBreakpointResolverTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/RazorBreakpointResolverTest.cs @@ -11,13 +11,11 @@ using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Debugging; using Microsoft.VisualStudio.Text; using Moq; using Xunit; using Xunit.Abstractions; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.VisualStudio.Razor.LanguageClient.Debugging; @@ -134,10 +132,10 @@ public async Task TryResolveBreakpointRangeAsync_MappableCSharpBreakpointLocatio { // Arrange var hostDocumentPosition = GetPosition(ValidBreakpointCSharp, _hostTextBuffer); - var hostBreakpointRange = VsLspFactory.CreateSingleLineRange(start: hostDocumentPosition, length: ValidBreakpointCSharp.Length); + var hostBreakpointRange = LspFactory.CreateSingleLineRange(start: hostDocumentPosition, length: ValidBreakpointCSharp.Length); var projectionProvider = new TestLSPBreakpointSpanProvider( _documentUri, - new Dictionary() + new Dictionary() { [hostDocumentPosition] = hostBreakpointRange }); @@ -187,6 +185,6 @@ private static Position GetPosition(string content, ITextBuffer textBuffer) } var line = textBuffer.CurrentSnapshot.GetLineFromPosition(index); - return VsLspFactory.CreatePosition(line.LineNumber, index - line.Start.Position); + return LspFactory.CreatePosition(line.LineNumber, index - line.Start.Position); } } diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/RazorProximityExpressionResolverTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/RazorProximityExpressionResolverTest.cs index 7c15ab02144..b3129ae4af9 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/RazorProximityExpressionResolverTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/RazorProximityExpressionResolverTest.cs @@ -13,7 +13,6 @@ using Microsoft.AspNetCore.Razor.Threading; using Microsoft.CodeAnalysis.Razor.Remote; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Debugging; using Microsoft.VisualStudio.Text; using Moq; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/TestLSPBreakpointSpanProvider.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/TestLSPBreakpointSpanProvider.cs index dc7e3527557..5b72eabae2e 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/TestLSPBreakpointSpanProvider.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/Debugging/TestLSPBreakpointSpanProvider.cs @@ -10,17 +10,15 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Threading; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.VisualStudio.Razor.LanguageClient.Debugging; internal class TestLSPBreakpointSpanProvider : ILSPBreakpointSpanProvider { private readonly Uri _documentUri; - private readonly IReadOnlyDictionary _mappings; + private readonly IReadOnlyDictionary _mappings; - public TestLSPBreakpointSpanProvider(Uri documentUri, IReadOnlyDictionary mappings) + public TestLSPBreakpointSpanProvider(Uri documentUri, IReadOnlyDictionary mappings) { if (documentUri is null) { @@ -36,11 +34,11 @@ public TestLSPBreakpointSpanProvider(Uri documentUri, IReadOnlyDictionary GetBreakpointSpanAsync(LSPDocumentSnapshot documentSnapshot, long hostDocumentSyncVersion, Position position, CancellationToken cancellationToken) + public Task GetBreakpointSpanAsync(LSPDocumentSnapshot documentSnapshot, long hostDocumentSyncVersion, Position position, CancellationToken cancellationToken) { if (documentSnapshot.Uri != _documentUri) { - return SpecializedTasks.Null(); + return SpecializedTasks.Null(); } foreach (var mapping in _mappings.OrderBy(d => d.Key)) @@ -52,6 +50,6 @@ public Task GetBreakpointSpanAsync(LSPDocumentSnapshot documentSnapshot, } } - return SpecializedTasks.Null(); + return SpecializedTasks.Null(); } } diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/DocumentMapping/LSPDocumentMappingProviderTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/DocumentMapping/LSPDocumentMappingProviderTest.cs index c13654a7879..bd942f66daa 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/DocumentMapping/LSPDocumentMappingProviderTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/DocumentMapping/LSPDocumentMappingProviderTest.cs @@ -11,7 +11,6 @@ using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.DocumentMapping; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Text; using Moq; using Xunit; @@ -47,7 +46,7 @@ public async Task RazorMapToDocumentRangeAsync_InvokesLanguageServer() var response = new RazorMapToDocumentRangesResponse() { - Ranges = [VsLspFactory.CreateRange(1, 1, 3, 3)], + Ranges = [LspFactory.CreateRange(1, 1, 3, 3)], HostDocumentVersion = 1 }; var requestInvoker = new Mock(MockBehavior.Strict); @@ -61,7 +60,7 @@ public async Task RazorMapToDocumentRangeAsync_InvokesLanguageServer() .ReturnsAsync(new ReinvocationResponse("TestLanguageClient", response)); var mappingProvider = new LSPDocumentMappingProvider(requestInvoker.Object, _documentManager); - var projectedRange = VsLspFactory.CreateRange(10, 10, 15, 15); + var projectedRange = LspFactory.CreateRange(10, 10, 15, 15); // Act var result = await mappingProvider.MapToDocumentRangesAsync(RazorLanguageKind.CSharp, uri, new[] { projectedRange }, DisposalToken); @@ -70,7 +69,7 @@ public async Task RazorMapToDocumentRangeAsync_InvokesLanguageServer() Assert.NotNull(result); Assert.Equal(1, result.HostDocumentVersion); var actualRange = result.Ranges[0]; - Assert.Equal(VsLspFactory.CreatePosition(1, 1), actualRange.Start); - Assert.Equal(VsLspFactory.CreatePosition(3, 3), actualRange.End); + Assert.Equal(LspFactory.CreatePosition(1, 1), actualRange.Start); + Assert.Equal(LspFactory.CreatePosition(3, 3), actualRange.End); } } diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/ProjectSystem/RazorProjectInfoDriverTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/ProjectSystem/RazorProjectInfoDriverTest.cs index 10b1118c501..06d312aa7ba 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/ProjectSystem/RazorProjectInfoDriverTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/ProjectSystem/RazorProjectInfoDriverTest.cs @@ -7,7 +7,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; using Microsoft.CodeAnalysis.Razor.ProjectSystem; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorCustomMessageTargetTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorCustomMessageTargetTest.cs index eb762065b14..61950ef06c5 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorCustomMessageTargetTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorCustomMessageTargetTest.cs @@ -7,19 +7,16 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.Editor; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Protocol; using Microsoft.CodeAnalysis.Razor.Protocol.CodeActions; -using Microsoft.CodeAnalysis.Razor.Workspaces; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Razor.Workspaces.Protocol.SemanticTokens; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; -using Microsoft.VisualStudio.Razor.LanguageClient.Cohost; using Microsoft.VisualStudio.Razor.Settings; using Microsoft.VisualStudio.Razor.Snippets; using Microsoft.VisualStudio.Text; @@ -42,7 +39,7 @@ public RazorCustomMessageTargetTest(ITestOutputHelper testOutput) _editorSettingsManager = new ClientSettingsManager(Array.Empty()); } - [Fact] + [UIFact] public async Task UpdateCSharpBuffer_CannotLookupDocument_NoopsGracefully() { // Arrange @@ -65,8 +62,6 @@ public async Task UpdateCSharpBuffer_CannotLookupDocument_NoopsGracefully() TestLanguageServerFeatureOptions.Instance, CreateProjectSnapshotManager(), new SnippetCompletionItemProvider(new SnippetCache()), - StrictMock.Of(), - StrictMock.Of(), LoggerFactory); var request = new UpdateBufferRequest() { @@ -78,10 +73,10 @@ public async Task UpdateCSharpBuffer_CannotLookupDocument_NoopsGracefully() }; // Act & Assert - await target.UpdateCSharpBufferCoreAsync(request, DisposalToken); + await target.UpdateCSharpBufferAsync(request, DisposalToken); } - [Fact] + [UIFact] public async Task UpdateCSharpBuffer_UpdatesDocument() { // Arrange @@ -110,8 +105,6 @@ public async Task UpdateCSharpBuffer_UpdatesDocument() TestLanguageServerFeatureOptions.Instance, CreateProjectSnapshotManager(), new SnippetCompletionItemProvider(new SnippetCache()), - StrictMock.Of(), - StrictMock.Of(), LoggerFactory); var request = new UpdateBufferRequest() { @@ -124,13 +117,13 @@ public async Task UpdateCSharpBuffer_UpdatesDocument() }; // Act - await target.UpdateCSharpBufferCoreAsync(request, DisposalToken); + await target.UpdateCSharpBufferAsync(request, DisposalToken); // Assert documentManager.VerifyAll(); } - [Fact] + [UIFact] public async Task UpdateCSharpBuffer_UpdatesCorrectDocument() { // Arrange @@ -142,8 +135,8 @@ public async Task UpdateCSharpBuffer_UpdatesCorrectDocument() var document = Mock.Of(d => d.VirtualDocuments == documents, MockBehavior.Strict); var documentManager = new Mock(MockBehavior.Strict); documentManager - .Setup(manager => manager.TryGetDocument(It.IsAny(), out document)) - .Returns(true); + .Setup(manager => manager.TryGetDocument(It.IsAny(), out document)) + .Returns(true); documentManager .Setup(manager => manager.UpdateVirtualDocument( It.IsAny(), @@ -166,8 +159,6 @@ public async Task UpdateCSharpBuffer_UpdatesCorrectDocument() new TestLanguageServerFeatureOptions(includeProjectKeyInGeneratedFilePath: true), CreateProjectSnapshotManager(), new SnippetCompletionItemProvider(new SnippetCache()), - StrictMock.Of(), - StrictMock.Of(), LoggerFactory); var request = new UpdateBufferRequest() { @@ -181,7 +172,7 @@ public async Task UpdateCSharpBuffer_UpdatesCorrectDocument() }; // Act - await target.UpdateCSharpBufferCoreAsync(request, DisposalToken); + await target.UpdateCSharpBufferAsync(request, DisposalToken); // Assert documentManager.VerifyAll(); @@ -210,8 +201,6 @@ public async Task ProvideCodeActionsAsync_CannotLookupDocument_ReturnsNullAsync( TestLanguageServerFeatureOptions.Instance, CreateProjectSnapshotManager(), new SnippetCompletionItemProvider(new SnippetCache()), - StrictMock.Of(), - StrictMock.Of(), LoggerFactory); var request = new DelegatedCodeActionParams() { @@ -223,7 +212,7 @@ public async Task ProvideCodeActionsAsync_CannotLookupDocument_ReturnsNullAsync( { Uri = new Uri("C:/path/to/file.razor") }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() } }; @@ -292,8 +281,6 @@ async IAsyncEnumerable> TestLanguageServerFeatureOptions.Instance, CreateProjectSnapshotManager(), new SnippetCompletionItemProvider(new SnippetCache()), - StrictMock.Of(), - StrictMock.Of(), LoggerFactory); var request = new DelegatedCodeActionParams() @@ -306,7 +293,7 @@ async IAsyncEnumerable> { Uri = testDocUri }, - Range = VsLspFactory.DefaultRange, + Range = LspFactory.DefaultRange, Context = new VSInternalCodeActionContext() } }; @@ -379,8 +366,6 @@ async IAsyncEnumerable> GetExpectedRe TestLanguageServerFeatureOptions.Instance, CreateProjectSnapshotManager(), new SnippetCompletionItemProvider(new SnippetCache()), - StrictMock.Of(), - StrictMock.Of(), LoggerFactory); var codeAction = new VSInternalCodeAction() @@ -421,8 +406,6 @@ public async Task ProvideSemanticTokensAsync_CannotLookupDocument_ReturnsNullAsy TestLanguageServerFeatureOptions.Instance, CreateProjectSnapshotManager(), new SnippetCompletionItemProvider(new SnippetCache()), - StrictMock.Of(), - StrictMock.Of(), LoggerFactory); var request = new ProvideSemanticTokensRangesParams( @@ -431,7 +414,7 @@ public async Task ProvideSemanticTokensAsync_CannotLookupDocument_ReturnsNullAsy Uri = new Uri("C:/path/to/file.razor") }, requiredHostDocumentVersion: 1, - ranges: [VsLspFactory.DefaultRange], + ranges: [LspFactory.DefaultRange], correlationId: Guid.Empty); // Act @@ -470,8 +453,6 @@ public async Task ProvideSemanticTokensAsync_CannotLookupVirtualDocument_Returns TestLanguageServerFeatureOptions.Instance, CreateProjectSnapshotManager(), new SnippetCompletionItemProvider(new SnippetCache()), - StrictMock.Of(), - StrictMock.Of(), LoggerFactory); var request = new ProvideSemanticTokensRangesParams( @@ -480,7 +461,7 @@ public async Task ProvideSemanticTokensAsync_CannotLookupVirtualDocument_Returns Uri = new Uri("C:/path/to/file.razor") }, requiredHostDocumentVersion: 0, - ranges: [VsLspFactory.DefaultRange], + ranges: [LspFactory.DefaultRange], correlationId: Guid.Empty); // Act @@ -515,11 +496,11 @@ public async Task ProvideSemanticTokensAsync_ContainsRange_ReturnsSemanticTokens var expectedCSharpResults = new SemanticTokens() { Data = new int[] { It.IsAny() } }; var requestInvoker = new Mock(MockBehavior.Strict); requestInvoker - .Setup(invoker => invoker.ReinvokeRequestOnServerAsync( + .Setup(invoker => invoker.ReinvokeRequestOnServerAsync( _textBuffer, It.IsAny(), RazorLSPConstants.RazorCSharpLanguageServerName, - It.IsAny(), + It.IsAny(), It.IsAny())) .ReturnsAsync(new ReinvocationResponse("languageClient", expectedCSharpResults)); @@ -552,8 +533,6 @@ public async Task ProvideSemanticTokensAsync_ContainsRange_ReturnsSemanticTokens TestLanguageServerFeatureOptions.Instance, CreateProjectSnapshotManager(), new SnippetCompletionItemProvider(new SnippetCache()), - StrictMock.Of(), - StrictMock.Of(), LoggerFactory); var request = new ProvideSemanticTokensRangesParams( @@ -562,7 +541,7 @@ public async Task ProvideSemanticTokensAsync_ContainsRange_ReturnsSemanticTokens Uri = new Uri("C:/path/to%20-%20project/file.razor") }, requiredHostDocumentVersion: 0, - ranges: [VsLspFactory.DefaultRange], + ranges: [LspFactory.DefaultRange], correlationId: Guid.Empty); // Act @@ -598,11 +577,11 @@ public async Task ProvideSemanticTokensAsync_EmptyRange_ReturnsNoSemanticTokens( var expectedCSharpResults = new SemanticTokens(); var requestInvoker = new Mock(MockBehavior.Strict); requestInvoker - .Setup(invoker => invoker.ReinvokeRequestOnServerAsync( + .Setup(invoker => invoker.ReinvokeRequestOnServerAsync( _textBuffer, It.IsAny(), RazorLSPConstants.RazorCSharpLanguageServerName, - It.IsAny(), + It.IsAny(), It.IsAny())) .ReturnsAsync(new ReinvocationResponse("languageClient", expectedCSharpResults)); @@ -635,8 +614,6 @@ public async Task ProvideSemanticTokensAsync_EmptyRange_ReturnsNoSemanticTokens( TestLanguageServerFeatureOptions.Instance, CreateProjectSnapshotManager(), new SnippetCompletionItemProvider(new SnippetCache()), - StrictMock.Of(), - StrictMock.Of(), LoggerFactory); var request = new ProvideSemanticTokensRangesParams( @@ -645,7 +622,7 @@ public async Task ProvideSemanticTokensAsync_EmptyRange_ReturnsNoSemanticTokens( Uri = new Uri("C:/path/to%20-%20project/file.razor") }, requiredHostDocumentVersion: 0, - ranges: [VsLspFactory.DefaultRange], + ranges: [LspFactory.DefaultRange], correlationId: Guid.Empty); var expectedResults = new ProvideSemanticTokensResponse(null, documentVersion); diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorDocumentOptionsServiceTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorDocumentOptionsServiceTest.cs index df65c78c417..56a58f92f5d 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorDocumentOptionsServiceTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorDocumentOptionsServiceTest.cs @@ -9,14 +9,15 @@ using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.Formatting; using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.CodeAnalysis.Razor.Settings; using Microsoft.CodeAnalysis.Text; +using Microsoft.VisualStudio.Razor.DynamicFiles; using Microsoft.VisualStudio.Razor.Settings; using Xunit; using Xunit.Abstractions; +using FormattingOptions = Microsoft.CodeAnalysis.Formatting.FormattingOptions; namespace Microsoft.VisualStudio.Razor.LanguageClient; @@ -93,7 +94,7 @@ private Document InitializeDocument(SourceText sourceText) var hostProject = new HostProject( Path.Combine(baseDirectory, "SomeProject", "SomeProject.csproj"), Path.Combine(baseDirectory, "SomeProject", "obj"), RazorConfiguration.Default, "SomeProject"); var hostDocument = new HostDocument( - Path.Combine(baseDirectory, "SomeProject", "File1.cshtml"), "File1.cshtml", FileKinds.Legacy); + Path.Combine(baseDirectory, "SomeProject", "File1.cshtml"), "File1.cshtml", RazorFileKind.Legacy); var project = new ProjectSnapshot(ProjectState .Create(hostProject, CompilerOptions, ProjectEngineFactoryProvider) diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorLSPMappingServiceTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorLSPMappingServiceTest.cs index f0f41ed74de..95ce87f8f18 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorLSPMappingServiceTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/RazorLSPMappingServiceTest.cs @@ -10,11 +10,9 @@ using Microsoft.CodeAnalysis.Razor.Protocol.DocumentMapping; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.LanguageClient.DocumentMapping; using Xunit; using Xunit.Abstractions; -using Range = Microsoft.VisualStudio.LanguageServer.Protocol.Range; namespace Microsoft.VisualStudio.Razor.LanguageClient; @@ -22,13 +20,13 @@ public class RazorLSPMappingServiceTest(ITestOutputHelper testOutput) : ToolingT { private readonly Uri _mockDocumentUri = new("C://project/path/document.razor"); - const string s_mockGeneratedContent = """ + private const string MockGeneratedContent = """ Hello This is the source text in the generated C# file. This is some more sample text for demo purposes. """; - const string s_mockRazorContent = """ + private const string MockRazorContent = """ Hello This is the source text @@ -36,8 +34,8 @@ in the generated C# file. This is some more sample text for demo purposes. """; - private static readonly SourceText _sourceTextGenerated = SourceText.From(s_mockGeneratedContent); - private static readonly SourceText _sourceTextRazor = SourceText.From(s_mockRazorContent); + private static readonly SourceText s_sourceTextGenerated = SourceText.From(MockGeneratedContent); + private static readonly SourceText s_sourceTextRazor = SourceText.From(MockRazorContent); [Fact] public async Task MapSpans_WithinRange_ReturnsMapping() @@ -48,12 +46,12 @@ public async Task MapSpans_WithinRange_ReturnsMapping() var documentSnapshot = new StrictMock(); documentSnapshot.SetupGet(doc => doc.Uri).Returns(_mockDocumentUri); - documentSnapshot.SetupGet(doc => doc.Snapshot).Returns(new StringTextSnapshot(_sourceTextRazor.ToString())); + documentSnapshot.SetupGet(doc => doc.Snapshot).Returns(new StringTextSnapshot(s_sourceTextRazor.ToString())); - var textSnapshot = new StringTextSnapshot(s_mockGeneratedContent, 1); + var textSnapshot = new StringTextSnapshot(MockGeneratedContent, 1); - var textSpanAsRange = _sourceTextGenerated.GetRange(textSpan); - var mappedRange = VsLspFactory.CreateSingleLineRange(2, character: 1, length: 10); + var textSpanAsRange = s_sourceTextGenerated.GetRange(textSpan); + var mappedRange = LspFactory.CreateSingleLineRange(2, character: 1, length: 10); var mappingResult = new RazorMapToDocumentRangesResponse() { @@ -76,13 +74,13 @@ public async Task MapSpans_WithinRange_ReturnsMapping() var service = new RazorLSPMappingService(documentMappingProvider, documentSnapshot.Object, textSnapshot); - var expectedSpan = _sourceTextRazor.GetTextSpan(mappedRange); - var expectedLinePosition = _sourceTextRazor.GetLinePositionSpan(expectedSpan); + var expectedSpan = s_sourceTextRazor.GetTextSpan(mappedRange); + var expectedLinePosition = s_sourceTextRazor.GetLinePositionSpan(expectedSpan); var expectedFilePath = _mockDocumentUri.LocalPath; var expectedResult = (expectedFilePath, expectedLinePosition, expectedSpan); // Act - var result = await service.GetTestAccessor().MapSpansAsync(spans, _sourceTextGenerated, _sourceTextRazor, DisposalToken); + var result = await service.GetTestAccessor().MapSpansAsync(spans, s_sourceTextGenerated, s_sourceTextRazor, DisposalToken); // Assert Assert.Single(result, expectedResult); @@ -97,11 +95,11 @@ public async Task MapSpans_OutsideRange_ReturnsEmpty() var documentSnapshot = new StrictMock(); documentSnapshot.SetupGet(doc => doc.Uri).Returns(_mockDocumentUri); - documentSnapshot.SetupGet(doc => doc.Snapshot).Returns(new StringTextSnapshot(_sourceTextRazor.ToString())); + documentSnapshot.SetupGet(doc => doc.Snapshot).Returns(new StringTextSnapshot(s_sourceTextRazor.ToString())); - var textSnapshot = new StringTextSnapshot(s_mockGeneratedContent, 1); + var textSnapshot = new StringTextSnapshot(MockGeneratedContent, 1); - var textSpanAsRange = _sourceTextGenerated.GetRange(textSpan); + var textSpanAsRange = s_sourceTextGenerated.GetRange(textSpan); var requestInvoker = new TestLSPRequestInvoker(new List<(string, object?)>() { @@ -121,7 +119,7 @@ public async Task MapSpans_OutsideRange_ReturnsEmpty() var service = new RazorLSPMappingService(documentMappingProvider, documentSnapshot.Object, textSnapshot); // Act - var result = await service.GetTestAccessor().MapSpansAsync(spans, _sourceTextGenerated, _sourceTextRazor, DisposalToken); + var result = await service.GetTestAccessor().MapSpansAsync(spans, s_sourceTextGenerated, s_sourceTextRazor, DisposalToken); // Assert Assert.Empty(result); @@ -132,7 +130,7 @@ public void MapSpans_GetMappedSpanResults_MappingErrorReturnsDefaultMappedSpan() { // Arrange var sourceTextRazor = SourceText.From(""); - var response = new RazorMapToDocumentRangesResponse { Ranges = new Range[] { VsLspFactory.UndefinedRange } }; + var response = new RazorMapToDocumentRangesResponse { Ranges = [LspFactory.UndefinedRange] }; // Act var results = RazorLSPMappingService.GetMappedSpanResults(_mockDocumentUri.LocalPath, sourceTextRazor, response); diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/TestDocumentManager.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/TestDocumentManager.cs index 9637feecd45..be2e140e388 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/TestDocumentManager.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/TestDocumentManager.cs @@ -6,12 +6,11 @@ using System; using System.Collections.Generic; using System.Linq; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common.Editor; using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Text; namespace Microsoft.VisualStudio.Razor.LanguageClient; @@ -73,7 +72,7 @@ private void UpdateCSharpServerDocument(IReadOnlyList changes, Virt var rangesAndTexts = changes.Select(c => { GetLinesAndOffsets(virtualSourceText, c.OldSpan, out var startLine, out var startCharacter, out var endLine, out var endCharacter); - var range = VsLspFactory.CreateRange(startLine, startCharacter, endLine, endCharacter); + var range = LspFactory.CreateRange(startLine, startCharacter, endLine, endCharacter); return (range, c.NewText); }).ToArray(); diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/TestFormattingOptionsProvider.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/TestFormattingOptionsProvider.cs index 8d125063368..853c2a48a8d 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/TestFormattingOptionsProvider.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LanguageClient/TestFormattingOptionsProvider.cs @@ -3,11 +3,11 @@ using System; using Microsoft.VisualStudio.LanguageServer.ContainedLanguage; -using Microsoft.VisualStudio.LanguageServer.Protocol; +using FormattingOptions = Microsoft.VisualStudio.LanguageServer.Protocol.FormattingOptions; namespace Microsoft.VisualStudio.Razor.LanguageClient; -internal class TestFormattingOptionsProvider : FormattingOptionsProvider +internal class TestFormattingOptionsProvider(FormattingOptions options) : FormattingOptionsProvider { public static readonly TestFormattingOptionsProvider Default = new( new FormattingOptions() @@ -15,12 +15,6 @@ internal class TestFormattingOptionsProvider : FormattingOptionsProvider InsertSpaces = true, TabSize = 4, }); - private readonly FormattingOptions _options; - public TestFormattingOptionsProvider(FormattingOptions options) - { - _options = options; - } - - public override FormattingOptions? GetOptions(Uri uri) => _options; + public override FormattingOptions? GetOptions(Uri uri) => options; } diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/Guest/ProjectSnapshotSynchronizationServiceTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/Guest/ProjectSnapshotSynchronizationServiceTest.cs index aafab35e942..d6ce5fbde22 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/Guest/ProjectSnapshotSynchronizationServiceTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/Guest/ProjectSnapshotSynchronizationServiceTest.cs @@ -5,7 +5,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/Host/ProjectSnapshotManagerProxyTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/Host/ProjectSnapshotManagerProxyTest.cs index 2e91fbe47bf..ffcf864188e 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/Host/ProjectSnapshotManagerProxyTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/Host/ProjectSnapshotManagerProxyTest.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.VisualStudio.Threading; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/SerializationTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/SerializationTest.cs index 79d2d2ca930..646fb9f2d2d 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/SerializationTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/LiveShare/SerializationTest.cs @@ -4,8 +4,8 @@ using System; using System.Collections.Immutable; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; +using Microsoft.CodeAnalysis.Razor.ProjectSystem; using Microsoft.VisualStudio.Razor.LiveShare.Serialization; using Newtonsoft.Json; using Xunit; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Microsoft.VisualStudio.LanguageServices.Razor.Test.csproj b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Microsoft.VisualStudio.LanguageServices.Razor.Test.csproj index ca641dc30fa..f1888706c06 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Microsoft.VisualStudio.LanguageServices.Razor.Test.csproj +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Microsoft.VisualStudio.LanguageServices.Razor.Test.csproj @@ -32,6 +32,7 @@ + diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/DefaultWindowsRazorProjectHostTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/DefaultWindowsRazorProjectHostTest.cs index 3d5db71f95c..0dd4506fbe0 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/DefaultWindowsRazorProjectHostTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/DefaultWindowsRazorProjectHostTest.cs @@ -733,14 +733,14 @@ public async Task OnProjectChanged_ReadsProperties_InitializesProject() var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Legacy, document.FileKind); + Assert.Equal(RazorFileKind.Legacy, document.FileKind); }, d => { var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Component, document.FileKind); + Assert.Equal(RazorFileKind.Component, document.FileKind); }); await Task.Run(async () => await host.DisposeAsync()); @@ -967,7 +967,7 @@ public async Task OnProjectChanged_UpdateProject_Succeeds() var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentImportFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentImportFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.ComponentImport, document.FileKind); + Assert.Equal(RazorFileKind.ComponentImport, document.FileKind); }, d => { @@ -980,7 +980,7 @@ public async Task OnProjectChanged_UpdateProject_Succeeds() var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Component, document.FileKind); + Assert.Equal(RazorFileKind.Component, document.FileKind); }); // Act - 2 @@ -1028,35 +1028,35 @@ public async Task OnProjectChanged_UpdateProject_Succeeds() var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.AnotherProjectNestedFile3.FilePath, document.FilePath); Assert.Equal(TestProjectData.AnotherProjectNestedFile3.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Legacy, document.FileKind); + Assert.Equal(RazorFileKind.Legacy, document.FileKind); }, d => { var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.AnotherProjectNestedComponentFile3.FilePath, document.FilePath); Assert.Equal(TestProjectData.AnotherProjectNestedComponentFile3.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Component, document.FileKind); + Assert.Equal(RazorFileKind.Component, document.FileKind); }, d => { var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentImportFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentImportFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.ComponentImport, document.FileKind); + Assert.Equal(RazorFileKind.ComponentImport, document.FileKind); }, d => { var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Legacy, document.FileKind); + Assert.Equal(RazorFileKind.Legacy, document.FileKind); }, d => { var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Component, document.FileKind); + Assert.Equal(RazorFileKind.Component, document.FileKind); }); await Task.Run(async () => await host.DisposeAsync()); @@ -1275,14 +1275,14 @@ public async Task OnProjectRenamed_RemovesHostProject_CopiesConfiguration() var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Legacy, document.FileKind); + Assert.Equal(RazorFileKind.Legacy, document.FileKind); }, d => { var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Component, document.FileKind); + Assert.Equal(RazorFileKind.Component, document.FileKind); }); // Act - 2 @@ -1301,14 +1301,14 @@ public async Task OnProjectRenamed_RemovesHostProject_CopiesConfiguration() var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Legacy, document.FileKind); + Assert.Equal(RazorFileKind.Legacy, document.FileKind); }, d => { var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Component, document.FileKind); + Assert.Equal(RazorFileKind.Component, document.FileKind); }); await Task.Run(async () => await host.DisposeAsync()); @@ -1379,7 +1379,7 @@ public async Task OnProjectChanged_ChangeIntermediateOutputPath_RemovesAndAddsPr var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentImportFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentImportFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.ComponentImport, document.FileKind); + Assert.Equal(RazorFileKind.ComponentImport, document.FileKind); }, d => { @@ -1392,7 +1392,7 @@ public async Task OnProjectChanged_ChangeIntermediateOutputPath_RemovesAndAddsPr var document = project.GetRequiredDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentFile1.TargetPath, document.TargetPath); - Assert.Equal(FileKinds.Component, document.FileKind); + Assert.Equal(RazorFileKind.Component, document.FileKind); }); // Act - 2 diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/FallbackProjectManagerTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/FallbackProjectManagerTest.cs index 29981dd7fc6..a661ebf3bc1 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/FallbackProjectManagerTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/FallbackProjectManagerTest.cs @@ -5,13 +5,13 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; -using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; +using Microsoft.CodeAnalysis.Razor.Utilities; using Xunit; using Xunit.Abstractions; using static Microsoft.AspNetCore.Razor.Test.Common.TestProjectData; diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/FallbackWindowsRazorProjectHostTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/FallbackWindowsRazorProjectHostTest.cs index 2f5f716a889..8872f9f9c67 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/FallbackWindowsRazorProjectHostTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/FallbackWindowsRazorProjectHostTest.cs @@ -293,7 +293,7 @@ public void TryGetRazorDocument_SetsLegacyFileKind() Assert.True(result); Assert.Equal(expectedFullPath, document.FilePath); Assert.Equal(expectedTargetPath, document.TargetPath); - Assert.Equal(FileKinds.Legacy, document.FileKind); + Assert.Equal(RazorFileKind.Legacy, document.FileKind); } [UIFact] diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/ProjectSnapshotManagerTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/ProjectSnapshotManagerTest.cs index 416f8ea1044..cf49d19532c 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/ProjectSnapshotManagerTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/ProjectSnapshotManagerTest.cs @@ -7,7 +7,6 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; @@ -130,7 +129,7 @@ await _projectManager.UpdateAsync(updater => Assert.Single( project.DocumentFilePaths, filePath => filePath == s_documents[0].FilePath && - project.GetRequiredDocument(filePath).FileKind == FileKinds.Legacy); + project.GetRequiredDocument(filePath).FileKind == RazorFileKind.Legacy); listener.AssertNotifications( x => x.DocumentAdded()); @@ -158,7 +157,7 @@ await _projectManager.UpdateAsync(updater => Assert.Single( project.DocumentFilePaths, filePath => filePath == s_documents[3].FilePath && - project.GetRequiredDocument(filePath).FileKind == FileKinds.Component); + project.GetRequiredDocument(filePath).FileKind == RazorFileKind.Component); listener.AssertNotifications( x => x.DocumentAdded()); diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/RazorDynamicFileInfoProviderTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/RazorDynamicFileInfoProviderTest.cs index 9a6514419cd..cb6c3719bbe 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/RazorDynamicFileInfoProviderTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/ProjectSystem/RazorDynamicFileInfoProviderTest.cs @@ -5,13 +5,13 @@ using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor.ProjectSystem; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.Razor.DynamicFiles; using Moq; using Xunit; @@ -44,8 +44,8 @@ protected override async Task InitializeAsync() _projectManager = CreateProjectSnapshotManager(); var hostProject = new HostProject(@"C:\project.csproj", @"C:\obj", RazorConfiguration.Default, rootNamespace: "TestNamespace"); - var hostDocument1 = new HostDocument(@"C:\document1.razor", "document1.razor", FileKinds.Component); - var hostDocument2 = new HostDocument(@"C:\document2.razor", "document2.razor", FileKinds.Component); + var hostDocument1 = new HostDocument(@"C:\document1.razor", "document1.razor", RazorFileKind.Component); + var hostDocument2 = new HostDocument(@"C:\document2.razor", "document2.razor", RazorFileKind.Component); await _projectManager.UpdateAsync(updater => { diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/RazorLanguageService_IVsLanguageDebugInfoTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/RazorLanguageService_IVsLanguageDebugInfoTest.cs index b4509b4df5f..47c5b81fd03 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/RazorLanguageService_IVsLanguageDebugInfoTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/RazorLanguageService_IVsLanguageDebugInfoTest.cs @@ -9,7 +9,6 @@ using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.Editor; using Microsoft.VisualStudio.Editor; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Razor.Debugging; using Microsoft.VisualStudio.Text; using Microsoft.VisualStudio.TextManager.Interop; @@ -69,7 +68,7 @@ public void ValidateBreakpointLocation_NullBreakpointRange_ReturnsEFail() public void ValidateBreakpointLocation_ValidBreakpointRange_ReturnsSOK() { // Arrange - var breakpointRange = VsLspFactory.CreateRange(2, 4, 3, 5); + var breakpointRange = LspFactory.CreateRange(2, 4, 3, 5); var breakpointResolver = Mock.Of(resolver => resolver.TryResolveBreakpointRangeAsync(It.IsAny(), 0, 0, It.IsAny()) == System.Threading.Tasks.Task.FromResult(breakpointRange), MockBehavior.Strict); var languageService = CreateLanguageServiceWith(breakpointResolver); diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Telemetry/TelemetryReporterTests.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Telemetry/TelemetryReporterTests.cs index f16381fe46a..3b8336ae9d8 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Telemetry/TelemetryReporterTests.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Telemetry/TelemetryReporterTests.cs @@ -7,11 +7,10 @@ using System.Runtime.CompilerServices; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor; -using Microsoft.AspNetCore.Razor.Telemetry; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.CodeAnalysis.LanguageServer; +using Microsoft.CodeAnalysis.Razor.Telemetry; using Microsoft.VisualStudio.Editor.Razor.Test.Shared; -using Microsoft.VisualStudio.LanguageServer.Protocol; using Microsoft.VisualStudio.Telemetry; using Microsoft.VisualStudio.Telemetry.Metrics; using StreamJsonRpc; @@ -363,42 +362,42 @@ public void ReportHistogram() WellKnownLspServerKinds.RazorLspServer.GetContractName(), TimeSpan.FromMilliseconds(100), TimeSpan.FromMilliseconds(100), - AspNetCore.Razor.Telemetry.TelemetryResult.Succeeded); + CodeAnalysis.Razor.Telemetry.TelemetryResult.Succeeded); reporter.ReportRequestTiming( Methods.TextDocumentCodeActionName, WellKnownLspServerKinds.RazorLspServer.GetContractName(), TimeSpan.FromMilliseconds(200), TimeSpan.FromMilliseconds(200), - AspNetCore.Razor.Telemetry.TelemetryResult.Cancelled); + CodeAnalysis.Razor.Telemetry.TelemetryResult.Cancelled); reporter.ReportRequestTiming( Methods.TextDocumentCodeActionName, WellKnownLspServerKinds.RazorLspServer.GetContractName(), TimeSpan.FromMilliseconds(300), TimeSpan.FromMilliseconds(300), - AspNetCore.Razor.Telemetry.TelemetryResult.Failed); + CodeAnalysis.Razor.Telemetry.TelemetryResult.Failed); reporter.ReportRequestTiming( Methods.TextDocumentCompletionName, WellKnownLspServerKinds.RazorLspServer.GetContractName(), TimeSpan.FromMilliseconds(100), TimeSpan.FromMilliseconds(100), - AspNetCore.Razor.Telemetry.TelemetryResult.Succeeded); + CodeAnalysis.Razor.Telemetry.TelemetryResult.Succeeded); reporter.ReportRequestTiming( Methods.TextDocumentCompletionName, WellKnownLspServerKinds.RazorLspServer.GetContractName(), TimeSpan.FromMilliseconds(200), TimeSpan.FromMilliseconds(200), - AspNetCore.Razor.Telemetry.TelemetryResult.Cancelled); + CodeAnalysis.Razor.Telemetry.TelemetryResult.Cancelled); reporter.ReportRequestTiming( Methods.TextDocumentCompletionName, WellKnownLspServerKinds.RazorLspServer.GetContractName(), TimeSpan.FromMilliseconds(300), TimeSpan.FromMilliseconds(300), - AspNetCore.Razor.Telemetry.TelemetryResult.Failed); + CodeAnalysis.Razor.Telemetry.TelemetryResult.Failed); reporter.Dispose(); diff --git a/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/Parsing/VisualStudioRazorParserIntegrationTest.cs b/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/Parsing/VisualStudioRazorParserIntegrationTest.cs index df9d1e4c8c9..29a7aeb0fd8 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/Parsing/VisualStudioRazorParserIntegrationTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/Parsing/VisualStudioRazorParserIntegrationTest.cs @@ -9,11 +9,11 @@ using Microsoft.AspNetCore.Mvc.Razor.Extensions; using Microsoft.AspNetCore.Razor.Language; using Microsoft.AspNetCore.Razor.Language.Syntax; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.Editor; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem.Legacy; using Microsoft.VisualStudio.Language.Intellisense; @@ -62,7 +62,7 @@ public async Task NoDocumentSnapshotParsesComponentFileCorrectly() var codeDocument = await manager.InnerParser.GetLatestCodeDocumentAsync(snapshot); Assert.NotNull(codeDocument); - Assert.Equal(FileKinds.Component, codeDocument.FileKind); + Assert.Equal(RazorFileKind.Component, codeDocument.FileKind); // @code is only applicable in component files so we're verifying that `@code` was treated as a directive. var directiveNodes = manager.CurrentSyntaxTree!.Root.DescendantNodes().Where(child => child.Kind == SyntaxKind.RazorDirective); @@ -548,7 +548,7 @@ private void VerifyPartialParseTree(TestParserManager manager, string content, s if (expectedCode != null) { // Verify if the syntax tree represents the expected input. - var syntaxTreeContent = manager.PartialParsingSyntaxTreeRoot.ToFullString(); + var syntaxTreeContent = manager.PartialParsingSyntaxTreeRoot.ToString(); Assert.Contains(expectedCode, syntaxTreeContent, StringComparison.Ordinal); } diff --git a/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/Parsing/VisualStudioRazorParserTest.cs b/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/Parsing/VisualStudioRazorParserTest.cs index cd85882f370..43ee25b829d 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/Parsing/VisualStudioRazorParserTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/Parsing/VisualStudioRazorParserTest.cs @@ -5,11 +5,11 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Language; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.Editor; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; using Microsoft.AspNetCore.Razor.Test.Common.Workspaces; +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.CodeAnalysis.Razor.ProjectSystem.Legacy; using Microsoft.VisualStudio.Language.Intellisense; diff --git a/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/RazorDocumentManagerTest.cs b/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/RazorDocumentManagerTest.cs index a6dc04f0aa4..8ceb8795195 100644 --- a/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/RazorDocumentManagerTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.LegacyEditor.Razor.Test/RazorDocumentManagerTest.cs @@ -2,11 +2,10 @@ // Licensed under the MIT license. See License.txt in the project root for license information. using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common; using Microsoft.AspNetCore.Razor.Test.Common.ProjectSystem; using Microsoft.AspNetCore.Razor.Test.Common.VisualStudio; - +using Microsoft.CodeAnalysis.Razor.ProjectEngineHost; using Microsoft.VisualStudio.LegacyEditor.Razor.Settings; using Microsoft.VisualStudio.Razor.Settings; using Microsoft.VisualStudio.Text; diff --git a/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/AbstractRazorEditorTest.cs b/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/AbstractRazorEditorTest.cs index 157d6f375d5..e8ac5689253 100644 --- a/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/AbstractRazorEditorTest.cs +++ b/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/AbstractRazorEditorTest.cs @@ -141,6 +141,9 @@ private static string CreateTemporaryPath() public override async Task DisposeAsync() { + // TODO: Would be good to have this as a last ditch check, but need to improve the detection and reporting here to be more robust + //await TestServices.Editor.ValidateNoDiscoColorsAsync(HangMitigatingCancellationToken); + _testLogger!.LogInformation($"#### Razor integration test dispose."); TestServices.Output.ClearIntegrationTestLogger(); diff --git a/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/CompletionIntegrationTests.cs b/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/CompletionIntegrationTests.cs index 23cd73aeb66..9d92641f528 100644 --- a/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/CompletionIntegrationTests.cs +++ b/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/CompletionIntegrationTests.cs @@ -294,33 +294,6 @@ protected override void OnAfterRender(bool firstRender) commitChar: '\t'); } - private async Task VerifyTypeAndCommitCompletionAsync(string input, string output, string search, string[] stringsToType, char? commitChar = null, string? expectedSelectedItemLabel = null) - { - await TestServices.SolutionExplorer.AddFileAsync( - RazorProjectConstants.BlazorProjectName, - "Test.razor", - input, - open: true, - ControlledHangMitigatingCancellationToken); - - await TestServices.Editor.WaitForComponentClassificationAsync(ControlledHangMitigatingCancellationToken); - - await TestServices.Editor.PlaceCaretAsync(search, charsOffset: 1, ControlledHangMitigatingCancellationToken); - foreach (var stringToType in stringsToType) - { - TestServices.Input.Send(stringToType); - } - - if (expectedSelectedItemLabel is not null) - { - await CommitCompletionAndVerifyAsync(output, expectedSelectedItemLabel, commitChar); - } - else - { - await CommitCompletionAndVerifyAsync(output, commitChar); - } - } - [IdeFact] public async Task SnippetCompletion_DoesntCommitOnSpace() { @@ -477,6 +450,78 @@ public enum MyEnum """); } + [IdeFact, WorkItem("https://github.com/dotnet/razor/issues/11385")] + public async Task ProvisionalCompletion_DoesntBreakSemanticTokens() + { + await TestServices.SolutionExplorer.AddFileAsync( + RazorProjectConstants.BlazorProjectName, + "Test.razor", + """ + @page "/counter" + + Counter + +

Counter

+ +

Current count: @currentCount

+ + @DateTime + + + + @code { + private int currentCount = 0; + + public void IncrementCount() + { + currentCount++; + } + } + """, + open: true, + ControlledHangMitigatingCancellationToken); + + await TestServices.Editor.WaitForComponentClassificationAsync(ControlledHangMitigatingCancellationToken); + + await TestServices.Editor.PlaceCaretAsync("@DateTime", charsOffset: 1, ControlledHangMitigatingCancellationToken); + + await Task.Delay(500, HangMitigatingCancellationToken); + + TestServices.Input.Send("."); + TestServices.Input.Send("n"); + + await Task.Delay(500, HangMitigatingCancellationToken); + + await TestServices.Editor.ValidateNoDiscoColorsAsync(HangMitigatingCancellationToken); + } + + private async Task VerifyTypeAndCommitCompletionAsync(string input, string output, string search, string[] stringsToType, char? commitChar = null, string? expectedSelectedItemLabel = null) + { + await TestServices.SolutionExplorer.AddFileAsync( + RazorProjectConstants.BlazorProjectName, + "Test.razor", + input, + open: true, + ControlledHangMitigatingCancellationToken); + + await TestServices.Editor.WaitForComponentClassificationAsync(ControlledHangMitigatingCancellationToken); + + await TestServices.Editor.PlaceCaretAsync(search, charsOffset: 1, ControlledHangMitigatingCancellationToken); + foreach (var stringToType in stringsToType) + { + TestServices.Input.Send(stringToType); + } + + if (expectedSelectedItemLabel is not null) + { + await CommitCompletionAndVerifyAsync(output, expectedSelectedItemLabel, commitChar); + } + else + { + await CommitCompletionAndVerifyAsync(output, commitChar); + } + } + private async Task CommitCompletionAndVerifyAsync(string expected, char? commitChar = null) { var session = await TestServices.Editor.WaitForCompletionSessionAsync(HangMitigatingCancellationToken); diff --git a/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/InProcess/EditorInProcess_Classification.cs b/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/InProcess/EditorInProcess_Classification.cs index 2ec7e310e94..caaa5fd7012 100644 --- a/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/InProcess/EditorInProcess_Classification.cs +++ b/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/InProcess/EditorInProcess_Classification.cs @@ -123,19 +123,54 @@ public async Task VerifyGetClassificationsAsync(IEnumerable Assert.Equal(expectedArray.Length, actualArray.Length); } - public async Task> GetClassificationsAsync(CancellationToken cancellationToken) + public async Task> GetClassificationsAsync(CancellationToken cancellationToken) { var textView = await GetActiveTextViewAsync(cancellationToken); var classifier = await GetClassifierAsync(textView, cancellationToken); return GetClassifications(classifier, textView); } - private static IEnumerable GetClassifications(IClassifier classifier, ITextView textView) + private static IList GetClassifications(IClassifier classifier, ITextView textView) { var selectionSpan = new SnapshotSpan(textView.TextSnapshot, new Span(0, textView.TextSnapshot.Length)); - var classifiedSpans = classifier.GetClassificationSpans(selectionSpan); - return classifiedSpans; + return classifier.GetClassificationSpans(selectionSpan); + } + + /// + /// Validates that we aren't seeing disco colors in the editor + /// + /// + /// This actually just calls because we always check for disco colors + /// when getting classifications, but this makes for a more discoverable API. + /// + public async Task ValidateNoDiscoColorsAsync(CancellationToken cancellationToken) + { + var classifiedSpans = await GetClassificationsAsync(cancellationToken); + + ValidateNoDiscoColors(classifiedSpans); + } + + private static void ValidateNoDiscoColors(IList classifiedSpans) + { + // We never expect a word to have a classification change in the middle of it, so we can check for disco colors + // by making sure that each span either doesn't start with a letter or digit, or comes after something that isn't + // a letter or digit. + SnapshotSpan? previousSpan = null; + foreach (var span in classifiedSpans) + { + if (span.Span.IsEmpty) + { + continue; + } + + if (previousSpan is { } previous) + { + Assert.False(previous.End.Position == span.Span.Start.Position && char.IsLetterOrDigit(span.Span.Start.GetChar()) && char.IsLetterOrDigit((previous.End - 1).GetChar()), $"Disco colors detected: {previous.GetText()}{span.Span.GetText()} has classification {span.ClassificationType.Classification} starting at character {previous.Length}"); + } + + previousSpan = span.Span; + } } private async Task GetClassifierAsync(IWpfTextView textView, CancellationToken cancellationToken) diff --git a/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/StressTests/StressTests.cs b/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/StressTests/StressTests.cs index dcf91f27ad4..6d6b7767b74 100644 --- a/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/StressTests/StressTests.cs +++ b/src/Razor/test/Microsoft.VisualStudio.Razor.IntegrationTests/StressTests/StressTests.cs @@ -1,7 +1,6 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT license. See License.txt in the project root for license information. -using System; using System.IO; using System.Threading; using System.Threading.Tasks; @@ -25,7 +24,7 @@ public async Task AddAndRemoveComponent() async Task RunIterationAsync(int index, CancellationToken cancellationToken) { - await TestServices.Editor.InsertTextAsync($"

Iteration {index}

{Environment.NewLine}", cancellationToken); + await TestServices.Editor.InsertTextAsync($"

Iteration {index}

{{ENTER}}", cancellationToken); await TestServices.Editor.PlaceCaretAsync("h1", charsOffset: -1, cancellationToken); @@ -56,4 +55,52 @@ async Task RunIterationAsync(int index, CancellationToken cancellationToken) await TestServices.Editor.InvokeDeleteLineAsync(cancellationToken); } } + + [ManualRunOnlyIdeFact] + public async Task RenameComponentAttribute() + { + await TestServices.SolutionExplorer.OpenFileAsync(RazorProjectConstants.BlazorProjectName, RazorProjectConstants.IndexRazorFile, ControlledHangMitigatingCancellationToken); + + var attributeName = "Title"; + + await TestServices.Editor.PlaceCaretAsync($"{attributeName}=", charsOffset: -1, ControlledHangMitigatingCancellationToken); + + await TestServices.Editor.WaitForComponentClassificationAsync(ControlledHangMitigatingCancellationToken); + // Make sure the test file is still what we expect, with one attribute + await TestServices.Editor.WaitForSemanticClassificationAsync("RazorComponentAttribute", ControlledHangMitigatingCancellationToken, count: 1, exact: true); + + await RunStressTestAsync(RunIterationAsync); + + async Task RunIterationAsync(int index, CancellationToken cancellationToken) + { + attributeName = $"RenamedTitle{index}"; + + await Task.Delay(500); + + await TestServices.Editor.InvokeRenameAsync(cancellationToken); + TestServices.Input.Send($"{attributeName}{{ENTER}}"); + + // The rename operation causes SurveyPrompt.razor to be opened + await TestServices.Editor.WaitForActiveWindowByFileAsync("SurveyPrompt.razor", cancellationToken); + await TestServices.Editor.VerifyTextContainsAsync($"public string? {attributeName} {{ get; set; }}", cancellationToken); + await TestServices.Editor.VerifyTextContainsAsync($"@{attributeName}", cancellationToken); + + await TestServices.Editor.ValidateNoDiscoColorsAsync(cancellationToken); + + await TestServices.Editor.CloseCurrentlyFocusedWindowAsync(HangMitigatingCancellationToken, save: true); + + await TestServices.Editor.WaitForActiveWindowByFileAsync("Index.razor", cancellationToken); + await TestServices.Editor.VerifyTextContainsAsync($" d.Type == DebugDirectoryEntryType.EmbeddedPortablePdb); + var debugReader = peReader.ReadEmbeddedPortablePdbDebugDirectoryData(debugDirectory).GetMetadataReader(); + + var builder = new StringBuilder(); + foreach (var methodHandle in debugReader.MethodDebugInformation) + { + var methodDebugInfo = debugReader.GetMethodDebugInformation(methodHandle); + var sequencePoints = methodDebugInfo.GetSequencePoints(); + if (!sequencePoints.Any()) + continue; + + var methodDefinition = metadataReader.GetMethodDefinition(methodHandle.ToDefinitionHandle()); + builder.AppendLine($"{metadataReader.GetString(methodDefinition.Name)}: "); + + foreach (var sequencePoint in sequencePoints) + { + if (!sequencePoint.IsHidden) + { + var documentName = debugReader.GetString(debugReader.GetDocument(sequencePoint.Document).Name); + builder.AppendLine($"\tIL_{sequencePoint.Offset:x4}: ({sequencePoint.StartLine},{sequencePoint.StartColumn})-({sequencePoint.EndLine},{sequencePoint.EndColumn}) \"{documentName}\""); + } + } + } + var actualSequencePoints = builder.ToString().ReplaceLineEndings(); + + var baselineFilePath = GetBaselineFilePath(codeDocument, ".sp.txt", testName); + if (GenerateBaselines.ShouldGenerate) + { + var baselineFullPath = Path.Combine(TestProjectRoot, baselineFilePath); + Directory.CreateDirectory(Path.GetDirectoryName(baselineFullPath)); + WriteBaseline(actualSequencePoints, baselineFullPath); + } + else + { + var baselineSequencePoints = string.Empty; + var spFile = TestFile.Create(baselineFilePath, GetType().Assembly); + if (spFile.Exists()) + { + baselineSequencePoints = spFile.ReadAllText().ReplaceLineEndings(); + } + + AssertEx.Equal(baselineSequencePoints, actualSequencePoints); + } + } + private string GetBaselineFilePath(RazorCodeDocument codeDocument, string extension, string testName) { if (codeDocument == null) diff --git a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/IntegrationTests/RazorIntegrationTestBase.cs b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/IntegrationTests/RazorIntegrationTestBase.cs index c5f810e6a62..0a240e833f0 100644 --- a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/IntegrationTests/RazorIntegrationTestBase.cs +++ b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/IntegrationTests/RazorIntegrationTestBase.cs @@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Razor.Utilities; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.Emit; using Microsoft.CodeAnalysis.Razor; using Microsoft.CodeAnalysis.Test.Utilities; using Microsoft.CodeAnalysis.Text; @@ -81,7 +82,7 @@ public RazorIntegrationTestBase() /// Gets a hardcoded document kind to be added to each code document that's created. This can /// be used to generate components. /// - internal virtual string? FileKind { get; } + internal virtual RazorFileKind? FileKind { get; } internal virtual VirtualRazorProjectFileSystem FileSystem { get; } @@ -146,7 +147,11 @@ private RazorProjectEngine CreateProjectEngine(RazorConfiguration configuration, }); } - internal RazorProjectItem CreateProjectItem(string cshtmlRelativePath, string cshtmlContent, string? fileKind = null, string? cssScope = null) + internal RazorProjectItem CreateProjectItem( + string cshtmlRelativePath, + string cshtmlContent, + RazorFileKind? fileKind = null, + string? cssScope = null) { var fullPath = WorkingDirectory + PathSeparator + cshtmlRelativePath; @@ -207,7 +212,7 @@ protected CompileToCSharpResult CompileToCSharp( protected CompileToCSharpResult CompileToCSharp( string cshtmlRelativePath, string cshtmlContent, - string? fileKind = null, + RazorFileKind? fileKind = null, string? cssScope = null, bool supportLocalizedComponentNames = false, bool nullableEnable = false, @@ -335,12 +340,12 @@ protected CompileToAssemblyResult CompileToAssembly(string cshtmlRelativePath, s return CompileToAssembly(cSharpResult); } - protected CompileToAssemblyResult CompileToAssembly(CompileToCSharpResult cSharpResult, params DiagnosticDescription[] expectedDiagnostics) + protected static CompileToAssemblyResult CompileToAssembly(CompileToCSharpResult cSharpResult, params DiagnosticDescription[] expectedDiagnostics) { return CompileToAssembly(cSharpResult, diagnostics => diagnostics.Verify(expectedDiagnostics)); } - protected CompileToAssemblyResult CompileToAssembly(CompileToCSharpResult cSharpResult, Action> verifyDiagnostics) + protected static CompileToAssemblyResult CompileToAssembly(CompileToCSharpResult cSharpResult, Action> verifyDiagnostics) { var syntaxTrees = new[] { @@ -355,29 +360,27 @@ protected CompileToAssemblyResult CompileToAssembly(CompileToCSharpResult cSharp verifyDiagnostics(diagnostics); - if (diagnostics.Any()) - { - return new CompileToAssemblyResult - { - Compilation = compilation, - CSharpDiagnostics = diagnostics, - }; - } + var peStream = !diagnostics.Any() ? EmitCompilation(compilation) : null; - using (var peStream = new MemoryStream()) + return new CompileToAssemblyResult { - var emitResult = compilation.Emit(peStream); - if (!emitResult.Success) - { - throw new CompilationFailedException(compilation, emitResult.Diagnostics); - } + Compilation = compilation, + CSharpDiagnostics = diagnostics, + ExecutableStream = peStream + }; + } - return new CompileToAssemblyResult - { - Compilation = compilation, - CSharpDiagnostics = diagnostics, - }; + private static MemoryStream EmitCompilation(Compilation compilation) + { + var peStream = new MemoryStream(); + var options = new EmitOptions(debugInformationFormat: DebugInformationFormat.Embedded); + var emitResult = compilation.Emit(peStream, options: options); + if (!emitResult.Success) + { + throw new CompilationFailedException(compilation, emitResult.Diagnostics); } + peStream.Position = 0; + return peStream; } protected INamedTypeSymbol CompileToComponent(string cshtmlSource) @@ -442,6 +445,7 @@ protected class CompileToAssemblyResult public required Compilation Compilation { get; set; } public string? VerboseLog { get; set; } public required IEnumerable CSharpDiagnostics { get; set; } + public required MemoryStream? ExecutableStream { get; set; } } private class CompilationFailedException : XunitException diff --git a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs index 6279b204e5e..c03759feeca 100644 --- a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs +++ b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs @@ -193,7 +193,7 @@ internal RazorSyntaxTree ParseDocument( string document, bool designTime = false, IEnumerable directives = null, - string fileKind = null, + RazorFileKind? fileKind = null, CSharpParseOptions csharpParseOptions = null, Action configureParserOptions = null) { @@ -205,7 +205,7 @@ internal virtual RazorSyntaxTree ParseDocument( string document, IEnumerable directives, bool designTime = false, - string fileKind = null, + RazorFileKind? fileKind = null, CSharpParseOptions csharpParseOptions = null, Action configureParserOptions = null) { @@ -237,22 +237,22 @@ internal virtual RazorSyntaxTree ParseDocument( internal virtual void ParseDocumentTest(string document) { - ParseDocumentTest(document, null, false); + ParseDocumentTest(document, directives: null, designTime: false); } - internal virtual void ParseDocumentTest(string document, string fileKind) + internal virtual void ParseDocumentTest(string document, RazorFileKind fileKind) { - ParseDocumentTest(document, null, false, fileKind); + ParseDocumentTest(document, directives: null, designTime: false, fileKind); } internal virtual void ParseDocumentTest(string document, IEnumerable directives) { - ParseDocumentTest(document, directives, false); + ParseDocumentTest(document, directives, designTime: false); } internal virtual void ParseDocumentTest(string document, bool designTime) { - ParseDocumentTest(document, null, designTime); + ParseDocumentTest(document, directives: null, designTime); } internal void ParseDocumentTest(string document, CSharpParseOptions options) @@ -264,7 +264,7 @@ internal virtual void ParseDocumentTest( string document, IEnumerable directives, bool designTime, - string fileKind = null, + RazorFileKind? fileKind = null, CSharpParseOptions csharpParseOptions = null) { ParseDocumentTest(RazorLanguageVersion.Latest, document, directives, designTime, fileKind, csharpParseOptions); @@ -275,7 +275,7 @@ internal virtual void ParseDocumentTest( string document, IEnumerable directives, bool designTime, - string fileKind = null, + RazorFileKind? fileKind = null, CSharpParseOptions csharpParseOptions = null) { var result = ParseDocument(version, document, directives, designTime, fileKind: fileKind, csharpParseOptions: csharpParseOptions); @@ -285,15 +285,13 @@ internal virtual void ParseDocumentTest( private RazorParserOptions CreateParserOptions( RazorLanguageVersion version, - string fileKind, + RazorFileKind? fileKind, bool designTime, IEnumerable directives, CSharpParseOptions csharpParseOptions, Action configureParserOptions = null) { - fileKind ??= FileKinds.Legacy; - - var builder = new RazorParserOptions.Builder(version, fileKind) + var builder = new RazorParserOptions.Builder(version, fileKind ?? RazorFileKind.Legacy) { DesignTime = designTime, Directives = [.. directives], diff --git a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxNodeSerializer.cs b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxNodeSerializer.cs index fc81a58c2b2..d84bedddae0 100644 --- a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxNodeSerializer.cs +++ b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxNodeSerializer.cs @@ -49,7 +49,7 @@ public override SyntaxNode Visit(SyntaxNode node) _visitor.Visit(node); _writer.WriteLine(); - if (!node.IsToken && !node.IsTrivia) + if (!node.IsToken) { _visitor.Depth++; node = base.DefaultVisit(node); diff --git a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxNodeWriter.cs b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxNodeWriter.cs index b08e0d9e1d4..39f05f158e4 100644 --- a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxNodeWriter.cs +++ b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxNodeWriter.cs @@ -3,7 +3,6 @@ #nullable disable -using System; using System.IO; using System.Linq; using Microsoft.AspNetCore.Razor.Language.Legacy; @@ -35,18 +34,12 @@ public override SyntaxNode VisitToken(SyntaxToken token) return base.VisitToken(token); } - public override SyntaxNode VisitTrivia(SyntaxTrivia trivia) - { - WriteTrivia(trivia); - return base.VisitTrivia(trivia); - } - private void WriteNode(SyntaxNode node) { WriteIndent(); Write(node.Kind); WriteSeparator(); - Write($"[{node.Position}..{node.EndPosition})::{node.FullWidth}"); + Write($"[{node.Position}..{node.EndPosition})::{node.Width}"); if (node is RazorDirectiveSyntax razorDirective) { @@ -105,7 +98,7 @@ private void WriteNode(SyntaxNode node) if (!_visitedRoot) { WriteSeparator(); - Write($"[{node.ToFullString()}]"); + Write($"[{node}]"); _visitedRoot = true; } } @@ -173,11 +166,6 @@ private void WriteToken(SyntaxToken token) Write(tokenString); } - private void WriteTrivia(SyntaxTrivia trivia) - { - throw new NotImplementedException(); - } - private void WriteChunkGenerator(SyntaxNode node) { var generator = node.GetChunkGenerator(); diff --git a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/RazorProjectEngineExtensions.cs b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/RazorProjectEngineExtensions.cs index aeaaee8f261..53c41e2de17 100644 --- a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/RazorProjectEngineExtensions.cs +++ b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/RazorProjectEngineExtensions.cs @@ -11,12 +11,12 @@ namespace Microsoft.AspNetCore.Razor.Language; public static class RazorProjectEngineExtensions { - private static string DefaultFileKind => FileKinds.Legacy; + private static RazorFileKind DefaultFileKind => RazorFileKind.Legacy; public static RazorCodeDocument CreateEmptyCodeDocument(this RazorProjectEngine projectEngine) => projectEngine.CreateEmptyCodeDocumentCore(); - public static RazorCodeDocument CreateEmptyCodeDocument(this RazorProjectEngine projectEngine, string fileKind) + public static RazorCodeDocument CreateEmptyCodeDocument(this RazorProjectEngine projectEngine, RazorFileKind fileKind) => projectEngine.CreateEmptyCodeDocumentCore(fileKind); public static RazorCodeDocument CreateEmptyCodeDocument( @@ -26,7 +26,7 @@ public static RazorCodeDocument CreateEmptyCodeDocument( public static RazorCodeDocument CreateEmptyCodeDocument( this RazorProjectEngine projectEngine, - string fileKind, + RazorFileKind fileKind, ImmutableArray importSources) => projectEngine.CreateEmptyCodeDocumentCore(fileKind, importSources); @@ -37,7 +37,7 @@ public static RazorCodeDocument CreateEmptyCodeDocument( public static RazorCodeDocument CreateEmptyCodeDocument( this RazorProjectEngine projectEngine, - string fileKind, + RazorFileKind fileKind, IReadOnlyList tagHelpers) => projectEngine.CreateEmptyCodeDocumentCore(fileKind, tagHelpers: tagHelpers); @@ -49,14 +49,14 @@ public static RazorCodeDocument CreateEmptyCodeDocument( public static RazorCodeDocument CreateEmptyCodeDocument( this RazorProjectEngine projectEngine, - string fileKind, + RazorFileKind fileKind, ImmutableArray importSources, IReadOnlyList tagHelpers) => projectEngine.CreateEmptyCodeDocumentCore(fileKind, importSources, tagHelpers); private static RazorCodeDocument CreateEmptyCodeDocumentCore( this RazorProjectEngine projectEngine, - string? fileKind = null, + RazorFileKind? fileKind = null, ImmutableArray importSources = default, IReadOnlyList? tagHelpers = null) => projectEngine.CreateCodeDocumentCore(string.Empty, fileKind, importSources, tagHelpers); @@ -64,7 +64,7 @@ private static RazorCodeDocument CreateEmptyCodeDocumentCore( public static RazorCodeDocument CreateEmptyDesignTimeCodeDocument(this RazorProjectEngine projectEngine) => projectEngine.CreateEmptyDesignTimeCodeDocumentCore(); - public static RazorCodeDocument CreateEmptyDesignTimeCodeDocument(this RazorProjectEngine projectEngine, string fileKind) + public static RazorCodeDocument CreateEmptyDesignTimeCodeDocument(this RazorProjectEngine projectEngine, RazorFileKind fileKind) => projectEngine.CreateEmptyDesignTimeCodeDocumentCore(fileKind); public static RazorCodeDocument CreateEmptyDesignTimeCodeDocument( @@ -74,7 +74,7 @@ public static RazorCodeDocument CreateEmptyDesignTimeCodeDocument( public static RazorCodeDocument CreateEmptyDesignTimeCodeDocument( this RazorProjectEngine projectEngine, - string fileKind, + RazorFileKind fileKind, ImmutableArray importSources) => projectEngine.CreateEmptyDesignTimeCodeDocumentCore(fileKind, importSources); @@ -85,7 +85,7 @@ public static RazorCodeDocument CreateEmptyDesignTimeCodeDocument( public static RazorCodeDocument CreateEmptyDesignTimeCodeDocument( this RazorProjectEngine projectEngine, - string fileKind, + RazorFileKind fileKind, IReadOnlyList tagHelpers) => projectEngine.CreateEmptyDesignTimeCodeDocumentCore(fileKind, tagHelpers: tagHelpers); @@ -97,14 +97,14 @@ public static RazorCodeDocument CreateEmptyDesignTimeCodeDocument( public static RazorCodeDocument CreateEmptyDesignTimeCodeDocument( this RazorProjectEngine projectEngine, - string fileKind, + RazorFileKind fileKind, ImmutableArray importSources, IReadOnlyList tagHelpers) => projectEngine.CreateEmptyDesignTimeCodeDocumentCore(fileKind, importSources, tagHelpers); private static RazorCodeDocument CreateEmptyDesignTimeCodeDocumentCore( this RazorProjectEngine projectEngine, - string? fileKind = null, + RazorFileKind? fileKind = null, ImmutableArray importSources = default, IReadOnlyList? tagHelpers = null) => projectEngine.CreateDesignTimeCodeDocumentCore(string.Empty, fileKind, importSources, tagHelpers); @@ -112,7 +112,7 @@ private static RazorCodeDocument CreateEmptyDesignTimeCodeDocumentCore( public static RazorCodeDocument CreateCodeDocument(this RazorProjectEngine projectEngine, string content) => projectEngine.CreateCodeDocumentCore(content); - public static RazorCodeDocument CreateCodeDocument(this RazorProjectEngine projectEngine, string content, string fileKind) + public static RazorCodeDocument CreateCodeDocument(this RazorProjectEngine projectEngine, string content, RazorFileKind fileKind) => projectEngine.CreateCodeDocumentCore(content, fileKind); public static RazorCodeDocument CreateCodeDocument( @@ -124,7 +124,7 @@ public static RazorCodeDocument CreateCodeDocument( public static RazorCodeDocument CreateCodeDocument( this RazorProjectEngine projectEngine, string content, - string fileKind, + RazorFileKind fileKind, ImmutableArray importSources) => projectEngine.CreateCodeDocumentCore(content, fileKind, importSources); @@ -137,7 +137,7 @@ public static RazorCodeDocument CreateCodeDocument( public static RazorCodeDocument CreateCodeDocument( this RazorProjectEngine projectEngine, string content, - string fileKind, + RazorFileKind fileKind, IReadOnlyList tagHelpers) => projectEngine.CreateCodeDocumentCore(content, fileKind, tagHelpers: tagHelpers); @@ -151,7 +151,7 @@ public static RazorCodeDocument CreateCodeDocument( public static RazorCodeDocument CreateCodeDocument( this RazorProjectEngine projectEngine, string content, - string fileKind, + RazorFileKind fileKind, ImmutableArray importSources, IReadOnlyList tagHelpers) => projectEngine.CreateCodeDocumentCore(content, fileKind, importSources, tagHelpers); @@ -159,14 +159,13 @@ public static RazorCodeDocument CreateCodeDocument( private static RazorCodeDocument CreateCodeDocumentCore( this RazorProjectEngine projectEngine, string content, - string? fileKind = null, + RazorFileKind? fileKind = null, ImmutableArray importSources = default, IReadOnlyList? tagHelpers = null) { var source = TestRazorSourceDocument.Create(content); - fileKind ??= DefaultFileKind; - return projectEngine.CreateCodeDocument(source, fileKind, importSources, tagHelpers, cssScope: null); + return projectEngine.CreateCodeDocument(source, fileKind ?? DefaultFileKind, importSources, tagHelpers, cssScope: null); } public static RazorCodeDocument CreateDesignTimeCodeDocument(this RazorProjectEngine projectEngine, string content) @@ -178,13 +177,13 @@ public static RazorCodeDocument CreateDesignTimeCodeDocument( IReadOnlyList? tagHelpers) => projectEngine.CreateDesignTimeCodeDocumentCore(content, tagHelpers: tagHelpers); - public static RazorCodeDocument CreateDesignTimeCodeDocument(this RazorProjectEngine projectEngine, string content, string fileKind) + public static RazorCodeDocument CreateDesignTimeCodeDocument(this RazorProjectEngine projectEngine, string content, RazorFileKind fileKind) => projectEngine.CreateDesignTimeCodeDocumentCore(content, fileKind); public static RazorCodeDocument CreateDesignTimeCodeDocument( this RazorProjectEngine projectEngine, string content, - string fileKind, + RazorFileKind fileKind, IReadOnlyList? tagHelpers) => projectEngine.CreateDesignTimeCodeDocumentCore(content, fileKind, tagHelpers: tagHelpers); @@ -204,14 +203,14 @@ public static RazorCodeDocument CreateDesignTimeCodeDocument( public static RazorCodeDocument CreateDesignTimeCodeDocument( this RazorProjectEngine projectEngine, string content, - string fileKind, + RazorFileKind fileKind, ImmutableArray importSources) => projectEngine.CreateDesignTimeCodeDocumentCore(content, fileKind, importSources); public static RazorCodeDocument CreateDesignTimeCodeDocument( this RazorProjectEngine projectEngine, string content, - string fileKind, + RazorFileKind fileKind, ImmutableArray importSources, IReadOnlyList tagHelpers) => projectEngine.CreateDesignTimeCodeDocumentCore(content, fileKind, importSources, tagHelpers); @@ -219,14 +218,13 @@ public static RazorCodeDocument CreateDesignTimeCodeDocument( private static RazorCodeDocument CreateDesignTimeCodeDocumentCore( this RazorProjectEngine projectEngine, string content, - string? fileKind = null, + RazorFileKind? fileKind = null, ImmutableArray importSources = default, IReadOnlyList? tagHelpers = null) { var source = TestRazorSourceDocument.Create(content); - fileKind ??= DefaultFileKind; - return projectEngine.CreateDesignTimeCodeDocument(source, fileKind, importSources, tagHelpers); + return projectEngine.CreateDesignTimeCodeDocument(source, fileKind ?? DefaultFileKind, importSources, tagHelpers); } public static void ExecutePhasesThrough( diff --git a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/SyntaxTreeVerifier.cs b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/SyntaxTreeVerifier.cs index 9018cbbf016..43ef44d48e0 100644 --- a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/SyntaxTreeVerifier.cs +++ b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/SyntaxTreeVerifier.cs @@ -23,7 +23,7 @@ public static void Verify(RazorSyntaxTree syntaxTree, bool ensureFullFidelity = if (ensureFullFidelity) { - var syntaxTreeString = syntaxTree.Root.ToFullString(); + var syntaxTreeString = syntaxTree.Root.ToString(); var sourceText = syntaxTree.Source.Text; var builder = new StringBuilder(sourceText.Length); for (var i = 0; i < sourceText.Length; i++) diff --git a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProjectFileSystem.cs b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProjectFileSystem.cs index a0c33cb77c2..1207f088b0a 100644 --- a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProjectFileSystem.cs +++ b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProjectFileSystem.cs @@ -16,7 +16,7 @@ internal sealed class TestRazorProjectFileSystem(params IEnumerable EnumerateItems(string basePath) => throw new NotImplementedException(); - public override RazorProjectItem GetItem(string path, string? fileKind) + public override RazorProjectItem GetItem(string path, RazorFileKind? fileKind) => _lookup.TryGetValue(path, out var value) ? value : new NotFoundProjectItem(path, fileKind); diff --git a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProjectItem.cs b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProjectItem.cs index bbe4dd68e02..50e259e7616 100644 --- a/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProjectItem.cs +++ b/src/Shared/Microsoft.AspNetCore.Razor.Test.Common/Language/TestRazorProjectItem.cs @@ -12,14 +12,14 @@ public class TestRazorProjectItem( string? physicalPath = null, string? relativePhysicalPath = null, string? basePath = "/", - string? fileKind = null, + RazorFileKind? fileKind = null, string? cssScope = null, Func? onRead = null) : RazorProjectItem { - private readonly string _fileKind = fileKind!; + private readonly RazorFileKind? _fileKind = fileKind; public override string BasePath => basePath!; - public override string FileKind => _fileKind ?? base.FileKind; + public override RazorFileKind FileKind => _fileKind ?? base.FileKind; public override string FilePath => filePath; public override string PhysicalPath => physicalPath!; public override string RelativePhysicalPath => relativePhysicalPath!; diff --git a/src/Shared/files/Tooling/Telerik/Kendo.Mvc.Examples.project.razor.json b/src/Shared/files/Tooling/Telerik/Kendo.Mvc.Examples.project.razor.json index d6ed0e6167e..b2ffec7d153 100644 --- a/src/Shared/files/Tooling/Telerik/Kendo.Mvc.Examples.project.razor.json +++ b/src/Shared/files/Tooling/Telerik/Kendo.Mvc.Examples.project.razor.json @@ -1,5 +1,5 @@ { - "__Version": 7, + "__Version": 8, "ProjectKey": "C:/Users/admin/location/Kendo.Mvc.Examples/obj/Debug/net7.0/", "FilePath": "C:\\Users\\admin\\location\\Kendo.Mvc.Examples\\Kendo.Mvc.Examples.csproj", "Configuration": { @@ -158209,10517 +158209,10517 @@ { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Linear_Gauge\\Scale_Options.cshtml", "TargetPath": "Views\\Linear_Gauge\\Scale_Options.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\colorgradient.cshtml", "TargetPath": "Views\\Accessibility\\colorgradient.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPalette\\Api_TagHelper.cshtml", "TargetPath": "Views\\ColorPalette\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pie_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Pie_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Sticky_Columns.cshtml", "TargetPath": "Views\\Grid\\Sticky_Columns.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\editing_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\editing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Multiple_Axes.cshtml", "TargetPath": "Views\\Bar_Charts\\Multiple_Axes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Popover\\Index_TagHelper.cshtml", "TargetPath": "Views\\Popover\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PivotGridV2\\Local_Flat_Data_Binding.cshtml", "TargetPath": "Views\\PivotGridV2\\Local_Flat_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Templates_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\DatePicker\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Appearance.cshtml", "TargetPath": "Views\\MaskedTextBox\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Globalization_TagHelper.cshtml", "TargetPath": "Views\\TimePicker\\Globalization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Snippets_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Snippets_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Modelbinding_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Modelbinding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Template_TagHelper.cshtml", "TargetPath": "Views\\Tooltip\\Template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Templates.cshtml", "TargetPath": "Views\\Timeline\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\index_TagHelper.cshtml", "TargetPath": "Views\\Breadcrumb\\index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pie_Charts\\Pie_Labels.cshtml", "TargetPath": "Views\\Pie_Charts\\Pie_Labels.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Loader\\Color_Variations.cshtml", "TargetPath": "Views\\Loader\\Color_Variations.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\tag_helper.cshtml", "TargetPath": "Views\\Breadcrumb\\tag_helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\ExpansionPanel\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Index.cshtml", "TargetPath": "Views\\Rating\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Grid\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Grouping.cshtml", "TargetPath": "Views\\MultiSelect\\Grouping.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\column_menu_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\column_menu_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Colors.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Colors.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Api.cshtml", "TargetPath": "Views\\MaskedTextBox\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Ajax_TagHelper.cshtml", "TargetPath": "Views\\Splitter\\Ajax_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Button\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Events_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Tag_Helper.cshtml", "TargetPath": "Views\\DateInput\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Checkbox\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\Checkbox\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Tag_Helper.cshtml", "TargetPath": "Views\\TreeView\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\TimePicker\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Events_TagHelper.cshtml", "TargetPath": "Views\\TaskBoard\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\filemanager.cshtml", "TargetPath": "Views\\Accessibility\\filemanager.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Tag_Helper.cshtml", "TargetPath": "Views\\Stepper\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\Number.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\Number.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\api_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Inline_Editing.cshtml", "TargetPath": "Views\\Editor\\Inline_Editing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Smooth_Area_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Smooth_Area_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Editing.cshtml", "TargetPath": "Views\\ListView\\Editing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\TextArea\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Vertical.cshtml", "TargetPath": "Views\\ProgressBar\\Vertical.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Scatter_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Icons_TagHelper.cshtml", "TargetPath": "Views\\Stepper\\Icons_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Animation_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Animation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\grid-multicolumnheaders.cshtml", "TargetPath": "Views\\Accessibility\\grid-multicolumnheaders.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Home\\Search.cshtml", "TargetPath": "Views\\Home\\Search.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Export_Image.cshtml", "TargetPath": "Views\\Signature\\Export_Image.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Events_TagHelper.cshtml", "TargetPath": "Views\\ButtonGroup\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ImageEditor\\Index.cshtml", "TargetPath": "Views\\ImageEditor\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Responsive_Columns_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Responsive_Columns_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Events_TagHelper.cshtml", "TargetPath": "Views\\SplitButton\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Custom_DataSource_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Custom_DataSource_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Direction_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Direction_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Date_Range.cshtml", "TargetPath": "Views\\DateRangePicker\\Date_Range.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Layout.cshtml", "TargetPath": "Views\\RadioGroup\\Layout.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Animation.cshtml", "TargetPath": "Views\\PanelBar\\Animation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\grouping_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\grouping_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\api.cshtml", "TargetPath": "Views\\dialog\\api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Integration_Grid.cshtml", "TargetPath": "Views\\Sortable\\Integration_Grid.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Constrain_Movement_TagHelper.cshtml", "TargetPath": "Views\\Window\\Constrain_Movement_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Paging.cshtml", "TargetPath": "Views\\Grid\\Paging.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\ServerFiltering.cshtml", "TargetPath": "Views\\DropDownList\\ServerFiltering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Arc_Gauge\\Index_TagHelper.cshtml", "TargetPath": "Views\\Arc_Gauge\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Donut_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Donut_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Plotbands_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Plotbands_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Tag_Helper.cshtml", "TargetPath": "Views\\TextBox\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\serverfiltering.cshtml", "TargetPath": "Views\\AutoComplete\\serverfiltering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Events_TagHelper.cshtml", "TargetPath": "Views\\Map\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\DateRangePicker\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Stepper\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Events.cshtml", "TargetPath": "Views\\ToolBar\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\TileLayout\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Excel_Export.cshtml", "TargetPath": "Views\\Grid\\Excel_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\MultiSelect\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Events_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Spreadsheet\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Index.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Customajaxbinding.cshtml", "TargetPath": "Views\\Grid\\Customajaxbinding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Index.cshtml", "TargetPath": "Views\\NumericTextBox\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\checkboxgroup.cshtml", "TargetPath": "Views\\Accessibility\\checkboxgroup.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Events_TagHelper.cshtml", "TargetPath": "Views\\ProgressBar\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AppBar\\Position_TagHelper.cshtml", "TargetPath": "Views\\AppBar\\Position_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Api_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\RadioGroup\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\SplitButton\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Toolbar_Template_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Toolbar_Template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Hierarchy_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Hierarchy_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Component_Type.cshtml", "TargetPath": "Views\\Calendar\\Component_Type.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Events.cshtml", "TargetPath": "Views\\RadioGroup\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\api.cshtml", "TargetPath": "Views\\MultiViewCalendar\\api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\remote_data_binding.cshtml", "TargetPath": "Views\\Menu\\remote_data_binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Box_Plot_Charts\\Index.cshtml", "TargetPath": "Views\\Box_Plot_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Index_TagHelper.cshtml", "TargetPath": "Views\\ToolBar\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\index.cshtml", "TargetPath": "Views\\AutoComplete\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Hidden_Fields.cshtml", "TargetPath": "Views\\Form\\Hidden_Fields.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Serverfiltering_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\Serverfiltering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Validation_TagHelper.cshtml", "TargetPath": "Views\\Form\\Validation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeMap\\Events_TagHelper.cshtml", "TargetPath": "Views\\TreeMap\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\NumericTextBox\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Context_Menu_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Context_Menu_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Logarithmic_Axis_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Logarithmic_Axis_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\DropDownButton\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Index_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Events.cshtml", "TargetPath": "Views\\TaskBoard\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Smooth_Line.cshtml", "TargetPath": "Views\\Line_Charts\\Smooth_Line.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Template.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\api.cshtml", "TargetPath": "Views\\ComboBox\\api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Move_Resize_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Move_Resize_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\aggregates.cshtml", "TargetPath": "Views\\TreeList\\aggregates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Globalization.cshtml", "TargetPath": "Views\\DateInput\\Globalization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Area_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Range_Area_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Disable_Dates.cshtml", "TargetPath": "Views\\DateTimePicker\\Disable_Dates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\MaskedTextBox\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\AsyncUpload.cshtml", "TargetPath": "Views\\Upload\\AsyncUpload.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Tag_Helper.cshtml", "TargetPath": "Views\\ToolBar\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Tag_Helper.cshtml", "TargetPath": "Views\\ColorPicker\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\CheckboxGroup\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Events_TagHelper.cshtml", "TargetPath": "Views\\TimePicker\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Templates_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Arc_Gauge\\Colors.cshtml", "TargetPath": "Views\\Arc_Gauge\\Colors.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\ForeignkeycolumnBinding.cshtml", "TargetPath": "Views\\Grid\\ForeignkeycolumnBinding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Index_TagHelper.cshtml", "TargetPath": "Views\\Rating\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Scatter_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Index.cshtml", "TargetPath": "Views\\ListView\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Basic_Usage_TagHelper.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Basic_Usage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Api.cshtml", "TargetPath": "Views\\ListBox\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Tag_Helper.cshtml", "TargetPath": "Views\\Radar_Charts\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Grouping_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Grouping_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Column_Reordering.cshtml", "TargetPath": "Views\\Grid\\Column_Reordering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Geojson_TagHelper.cshtml", "TargetPath": "Views\\Map\\Geojson_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sparklines\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Sparklines\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Pdf_Export.cshtml", "TargetPath": "Views\\Editor\\Pdf_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\DataSource.cshtml", "TargetPath": "Views\\Spreadsheet\\DataSource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\right_to_left_support.cshtml", "TargetPath": "Views\\dialog\\right_to_left_support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Events.cshtml", "TargetPath": "Views\\DateTimePicker\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chat\\Index_TagHelper.cshtml", "TargetPath": "Views\\Chat\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Local_Flat_Data_Binding.cshtml", "TargetPath": "Views\\Pivotgrid\\Local_Flat_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Import_Export.cshtml", "TargetPath": "Views\\Editor\\Import_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Events.cshtml", "TargetPath": "Views\\TreeView\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Items.cshtml", "TargetPath": "Views\\DropDownButton\\Items.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Index_TagHelper.cshtml", "TargetPath": "Views\\DropDownButton\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Financial\\Index.cshtml", "TargetPath": "Views\\Financial\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DataSource\\Index_TagHelper.cshtml", "TargetPath": "Views\\DataSource\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Columns_TagHelper.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Columns_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\appearance.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Api.cshtml", "TargetPath": "Views\\ColorPicker\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Radar_Area.cshtml", "TargetPath": "Views\\Radar_Charts\\Radar_Area.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Items_TagHelper.cshtml", "TargetPath": "Views\\SplitButton\\Items_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Index_TagHelper.cshtml", "TargetPath": "Views\\TabStrip\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Grouping_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Grouping_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Adaptive_Rendering.cshtml", "TargetPath": "Views\\Grid\\Adaptive_Rendering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Api.cshtml", "TargetPath": "Views\\Window\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Floating_Label.cshtml", "TargetPath": "Views\\NumericTextBox\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Step_Area.cshtml", "TargetPath": "Views\\Area_Charts\\Step_Area.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\GridLayout\\Index.cshtml", "TargetPath": "Views\\GridLayout\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pie_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Pie_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Events_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\TagHelper.cshtml", "TargetPath": "Views\\FloatingActionButton\\TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Index_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Globalization.cshtml", "TargetPath": "Views\\NumericTextBox\\Globalization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Api.cshtml", "TargetPath": "Views\\Menu\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Disabled_Cells.cshtml", "TargetPath": "Views\\Spreadsheet\\Disabled_Cells.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Events_TagHelper.cshtml", "TargetPath": "Views\\DateRangePicker\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Api_TagHelper.cshtml", "TargetPath": "Views\\TabStrip\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\SplitButton\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Avatar\\Index_TagHelper.cshtml", "TargetPath": "Views\\Avatar\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Scatter_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Stacked_Area.cshtml", "TargetPath": "Views\\Area_Charts\\Stacked_Area.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Index_TagHelper.cshtml", "TargetPath": "Views\\ListBox\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Styles_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Styles_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Linear_Gauge\\Tag_Helper.cshtml", "TargetPath": "Views\\Linear_Gauge\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\SourceCodeTabs.cshtml", "TargetPath": "Views\\Shared\\SourceCodeTabs.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Tag_Helper.cshtml", "TargetPath": "Views\\Circular_Gauge\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Index.cshtml", "TargetPath": "Views\\ListBox\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Index_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Contrast_Tool_TagHelper.cshtml", "TargetPath": "Views\\ColorPicker\\Contrast_Tool_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Basic_Usage.cshtml", "TargetPath": "Views\\Editor\\Basic_Usage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\column_menu.cshtml", "TargetPath": "Views\\TreeList\\column_menu.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Linear_Gauge\\Export.cshtml", "TargetPath": "Views\\Linear_Gauge\\Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Index.cshtml", "TargetPath": "Views\\Scatter_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Financial\\Index_TagHelper.cshtml", "TargetPath": "Views\\Financial\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Scheduler\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Planned_Vs_Actual.cshtml", "TargetPath": "Views\\Gantt\\Planned_Vs_Actual.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Events_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Polar_Area.cshtml", "TargetPath": "Views\\Polar_Charts\\Polar_Area.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\chat.cshtml", "TargetPath": "Views\\Accessibility\\chat.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radial_Gauge\\Multiple_Pointers.cshtml", "TargetPath": "Views\\Radial_Gauge\\Multiple_Pointers.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Persist_State.cshtml", "TargetPath": "Views\\TreeList\\Persist_State.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\ToolBar\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\grouping_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\grouping_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Api_TagHelper.cshtml", "TargetPath": "Views\\ColorGradient\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\events_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PDFViewer\\Api_TagHelper.cshtml", "TargetPath": "Views\\PDFViewer\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Views.cshtml", "TargetPath": "Views\\ColorPicker\\Views.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Filter\\Custom_Editors_TagHelper.cshtml", "TargetPath": "Views\\Filter\\Custom_Editors_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Menu\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\ServerFiltering_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\ServerFiltering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ActionSheet\\Tag_Helper.cshtml", "TargetPath": "Views\\ActionSheet\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\keyboard_navigation.cshtml", "TargetPath": "Views\\Breadcrumb\\keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Api.cshtml", "TargetPath": "Views\\DropDownButton\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Items.cshtml", "TargetPath": "Views\\SplitButton\\Items.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Tag_Helper.cshtml", "TargetPath": "Views\\Splitter\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Index_TagHelper.cshtml", "TargetPath": "Views\\ColorPicker\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Index_TagHelper.cshtml", "TargetPath": "Views\\Form\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Api_TagHelper.cshtml", "TargetPath": "Views\\Splitter\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\layout_TagHelper.cshtml", "TargetPath": "Views\\Diagram\\layout_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Popover\\Templates.cshtml", "TargetPath": "Views\\Popover\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Multiple_Axes.cshtml", "TargetPath": "Views\\Line_Charts\\Multiple_Axes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Adaptive_Rendering.cshtml", "TargetPath": "Views\\Scheduler\\Adaptive_Rendering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Images.cshtml", "TargetPath": "Views\\TabStrip\\Images.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Icons_TagHelper.cshtml", "TargetPath": "Views\\DropDownButton\\Icons_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Notification\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Index_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Radar_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Move_Resize.cshtml", "TargetPath": "Views\\Scheduler\\Move_Resize.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\MaskedTextBox\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PivotGridV2\\index_TagHelper.cshtml", "TargetPath": "Views\\PivotGridV2\\index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pdf_Export\\Index.cshtml", "TargetPath": "Views\\Pdf_Export\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Date_Axis_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Date_Axis_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Events.cshtml", "TargetPath": "Views\\Notification\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Position_Stacking_TagHelper.cshtml", "TargetPath": "Views\\Notification\\Position_Stacking_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Events.cshtml", "TargetPath": "Views\\ListBox\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Smooth_Radar_Line_TagHelper.cshtml", "TargetPath": "Views\\Radar_Charts\\Smooth_Radar_Line_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\TextArea\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\BottomNavigation\\Keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\api_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ChipList\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\ChipList\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MediaPlayer\\Playlist.cshtml", "TargetPath": "Views\\MediaPlayer\\Playlist.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\datetimepicker.cshtml", "TargetPath": "Views\\Accessibility\\datetimepicker.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\export.cshtml", "TargetPath": "Views\\Diagram\\export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Scale_Options_TagHelper.cshtml", "TargetPath": "Views\\Circular_Gauge\\Scale_Options_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Checkbox\\Index.cshtml", "TargetPath": "Views\\Checkbox\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Badge\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\Badge\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\right_to_left_support.cshtml", "TargetPath": "Views\\AutoComplete\\right_to_left_support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\index.cshtml", "TargetPath": "Views\\MultiViewCalendar\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Kpi_TagHelper.cshtml", "TargetPath": "Views\\Pivotgrid\\Kpi_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\ClientFiltering_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\ClientFiltering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Column_Virtualization.cshtml", "TargetPath": "Views\\Grid\\Column_Virtualization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PDFViewer\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\PDFViewer\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\column_resizing.cshtml", "TargetPath": "Views\\TreeList\\column_resizing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Auto_Event_Height_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Auto_Event_Height_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\wordsprocessing\\replace.cshtml", "TargetPath": "Views\\wordsprocessing\\replace.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\ChunkUpload.cshtml", "TargetPath": "Views\\Upload\\ChunkUpload.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Step_Line.cshtml", "TargetPath": "Views\\Line_Charts\\Step_Line.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Window\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\Timeline\\keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Dragdrop.cshtml", "TargetPath": "Views\\TreeView\\Dragdrop.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Endless_Scrolling_Remote.cshtml", "TargetPath": "Views\\Grid\\Endless_Scrolling_Remote.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Ajax_TagHelper.cshtml", "TargetPath": "Views\\Tooltip\\Ajax_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\Date.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\Date.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chat\\Index.cshtml", "TargetPath": "Views\\Chat\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Templates_TagHelper.cshtml", "TargetPath": "Views\\Pivotgrid\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\OData.cshtml", "TargetPath": "Views\\TreeList\\OData.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Area_Charts\\Index.cshtml", "TargetPath": "Views\\Range_Area_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Chunk.cshtml", "TargetPath": "Views\\ProgressBar\\Chunk.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Columns.cshtml", "TargetPath": "Views\\Gantt\\Columns.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Import_Export_Ical.cshtml", "TargetPath": "Views\\Scheduler\\Import_Export_Ical.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\editor.cshtml", "TargetPath": "Views\\Accessibility\\editor.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Selection_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Api_TagHelper.cshtml", "TargetPath": "Views\\Notification\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\Index_TagHelper.cshtml", "TargetPath": "Views\\ScrollView\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Sign_Pdf_Document.cshtml", "TargetPath": "Views\\Signature\\Sign_Pdf_Document.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Events_TagHelper.cshtml", "TargetPath": "Views\\Wizard\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Alignment.cshtml", "TargetPath": "Views\\FloatingActionButton\\Alignment.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Pdf_Export_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\Pdf_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Popover\\Api_TagHelper.cshtml", "TargetPath": "Views\\Popover\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Rgb_Hex_TagHelper.cshtml", "TargetPath": "Views\\ColorPicker\\Rgb_Hex_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Smooth_Scatter_Line.cshtml", "TargetPath": "Views\\Scatter_Charts\\Smooth_Scatter_Line.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\ListBox\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Filter_Menu_Customization.cshtml", "TargetPath": "Views\\Grid\\Filter_Menu_Customization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bullet_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Bullet_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Events.cshtml", "TargetPath": "Views\\MultiSelect\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\virtualization.cshtml", "TargetPath": "Views\\AutoComplete\\virtualization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\disabled_dates.cshtml", "TargetPath": "Views\\MultiViewCalendar\\disabled_dates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\CascadingMultiColumnComboBox_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\CascadingMultiColumnComboBox_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Import_Export_Ical_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Import_Export_Ical_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Filter_Multi_Checkboxes_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Filter_Multi_Checkboxes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Api.cshtml", "TargetPath": "Views\\SplitButton\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Week_Column_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Week_Column_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Api_TagHelper.cshtml", "TargetPath": "Views\\Timeline\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Animation.cshtml", "TargetPath": "Views\\Window\\Animation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\OData_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\OData_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Api.cshtml", "TargetPath": "Views\\Button\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sparklines\\Index_TagHelper.cshtml", "TargetPath": "Views\\Sparklines\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PivotGridV2\\pdf_export.cshtml", "TargetPath": "Views\\PivotGridV2\\pdf_export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Excel_Export_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Excel_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Tag_Helper.cshtml", "TargetPath": "Views\\Sortable\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Images_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Images_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Index.cshtml", "TargetPath": "Views\\Menu\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Timeline.cshtml", "TargetPath": "Views\\Scheduler\\Timeline.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Events_TagHelper.cshtml", "TargetPath": "Views\\Slider\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Keyboard_Navigation_Taghelper.cshtml", "TargetPath": "Views\\ButtonGroup\\Keyboard_Navigation_Taghelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Bing.cshtml", "TargetPath": "Views\\Map\\Bing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Export_TagHelper.cshtml", "TargetPath": "Views\\Circular_Gauge\\Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Rangeselection_TagHelper.cshtml", "TargetPath": "Views\\TimePicker\\Rangeselection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Selection.cshtml", "TargetPath": "Views\\Calendar\\Selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\checkbox_selection.cshtml", "TargetPath": "Views\\TreeList\\checkbox_selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Date_Grouping.cshtml", "TargetPath": "Views\\Scheduler\\Date_Grouping.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Templates_TagHelper.cshtml", "TargetPath": "Views\\TaskBoard\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\column_resizing_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\column_resizing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Captcha\\Tag_Helper.cshtml", "TargetPath": "Views\\Captcha\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Adaptive_Rendering_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Adaptive_Rendering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Arc_Gauge\\Export_TagHelper.cshtml", "TargetPath": "Views\\Arc_Gauge\\Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\keyboard_navigation.cshtml", "TargetPath": "Views\\Drawer\\keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Index.cshtml", "TargetPath": "Views\\Polar_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Index_TagHelper.cshtml", "TargetPath": "Views\\FloatingActionButton\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Templates.cshtml", "TargetPath": "Views\\DropDownTree\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Selection_Export_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Selection_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Template_TagHelper.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Events.cshtml", "TargetPath": "Views\\Button\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Index.cshtml", "TargetPath": "Views\\MaskedTextBox\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Events.cshtml", "TargetPath": "Views\\ExpansionPanel\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pie_Charts\\Pie_Labels_TagHelper.cshtml", "TargetPath": "Views\\Pie_Charts\\Pie_Labels_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Template.cshtml", "TargetPath": "Views\\DateTimePicker\\Template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\keyboard_navigation.cshtml", "TargetPath": "Views\\ScrollView\\keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\editing_popup.cshtml", "TargetPath": "Views\\TreeList\\editing_popup.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SkeletonContainer\\Index_TagHelper.cshtml", "TargetPath": "Views\\SkeletonContainer\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Persist_State_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\Persist_State_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Graphql_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Graphql_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Financial\\Pdf_Export_TagHelper.cshtml", "TargetPath": "Views\\Financial\\Pdf_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\Api.cshtml", "TargetPath": "Views\\ScrollView\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\ServerFiltering.cshtml", "TargetPath": "Views\\MultiSelect\\ServerFiltering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\editing.cshtml", "TargetPath": "Views\\Breadcrumb\\editing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Integration_TagHelper.cshtml", "TargetPath": "Views\\ToolBar\\Integration_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Avatar\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\Avatar\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Form_Integration.cshtml", "TargetPath": "Views\\Signature\\Form_Integration.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Position_Stacking.cshtml", "TargetPath": "Views\\Notification\\Position_Stacking.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\DateInput\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Frozen_Columns.cshtml", "TargetPath": "Views\\Grid\\Frozen_Columns.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\tooltip.cshtml", "TargetPath": "Views\\Accessibility\\tooltip.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Resources_Grouping_Vertical.cshtml", "TargetPath": "Views\\Scheduler\\Resources_Grouping_Vertical.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Basic_Usage_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Basic_Usage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\api_TagHelper.cshtml", "TargetPath": "Views\\Breadcrumb\\api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Templates_TagHelper.cshtml", "TargetPath": "Views\\Rating\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radial_Gauge\\Index.cshtml", "TargetPath": "Views\\Radial_Gauge\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\template_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Form_TagHelper.cshtml", "TargetPath": "Views\\Wizard\\Form_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Templates.cshtml", "TargetPath": "Views\\Scheduler\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Api.cshtml", "TargetPath": "Views\\DateInput\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\index.cshtml", "TargetPath": "Views\\Drawer\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Index_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\PanelBar\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Events_TagHelper.cshtml", "TargetPath": "Views\\ColorPicker\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Tag_Mode.cshtml", "TargetPath": "Views\\MultiSelect\\Tag_Mode.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Drag_and_Drop.cshtml", "TargetPath": "Views\\ListBox\\Drag_and_Drop.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Shared_DataSource.cshtml", "TargetPath": "Views\\Timeline\\Shared_DataSource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\Export_TagHelper.cshtml", "TargetPath": "Views\\Chart_Api\\Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Index_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\events_TagHelper.cshtml", "TargetPath": "Views\\Breadcrumb\\events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\DirectoryUpload.cshtml", "TargetPath": "Views\\Upload\\DirectoryUpload.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\change_working_days.cshtml", "TargetPath": "Views\\Scheduler\\change_working_days.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Events.cshtml", "TargetPath": "Views\\TextBox\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pager\\Index.cshtml", "TargetPath": "Views\\Pager\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PivotGridV2\\pdf_export_TagHelper.cshtml", "TargetPath": "Views\\PivotGridV2\\pdf_export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Tag_Helper.cshtml", "TargetPath": "Views\\Editor\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\MultipleAxes_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\MultipleAxes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Tooltip_TagHelper.cshtml", "TargetPath": "Views\\Rating\\Tooltip_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\ClientFiltering.cshtml", "TargetPath": "Views\\MultiSelect\\ClientFiltering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\DemoRunner.cshtml", "TargetPath": "Views\\Shared\\DemoRunner.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Stacked_Area_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Stacked_Area_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Index.cshtml", "TargetPath": "Views\\FlatColorPicker\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Globalization_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Globalization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Radar_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Waterfall_Charts\\Index.cshtml", "TargetPath": "Views\\Waterfall_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Api.cshtml", "TargetPath": "Views\\Form\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Barcode\\Api.cshtml", "TargetPath": "Views\\Barcode\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\AppearanceNotification.cshtml", "TargetPath": "Views\\Shared\\AppearanceNotification.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\events_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\events.cshtml", "TargetPath": "Views\\Diagram\\events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Floating_Label.cshtml", "TargetPath": "Views\\DateInput\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PdfProcessing\\merge_split_add_content.cshtml", "TargetPath": "Views\\PdfProcessing\\merge_split_add_content.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Selection_TagHelper.cshtml", "TargetPath": "Views\\ListView\\Selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Visuals.cshtml", "TargetPath": "Views\\Line_Charts\\Visuals.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Views_TagHelper.cshtml", "TargetPath": "Views\\ColorPicker\\Views_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Resize_TagHelper.cshtml", "TargetPath": "Views\\Spreadsheet\\Resize_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Animation_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Animation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Tag_Helper.cshtml", "TargetPath": "Views\\DateTimePicker\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\All_Tools_TagHelper.cshtml", "TargetPath": "Views\\Editor\\All_Tools_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\ComboBox\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\virtualization_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\virtualization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Index.cshtml", "TargetPath": "Views\\Timeline\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Api.cshtml", "TargetPath": "Views\\DatePicker\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Index.cshtml", "TargetPath": "Views\\Gantt\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\events_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\Events.cshtml", "TargetPath": "Views\\ScrollView\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\keyboard_navigation.cshtml", "TargetPath": "Views\\Scheduler\\keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\TreeList\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Events_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Index_TagHelper.cshtml", "TargetPath": "Views\\TileLayout\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Bing_TagHelper.cshtml", "TargetPath": "Views\\Map\\Bing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Template.cshtml", "TargetPath": "Views\\DropDownList\\Template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\index_TagHelper.cshtml", "TargetPath": "Views\\dialog\\index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\SplitButton\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Tag_Helper.cshtml", "TargetPath": "Views\\TimePicker\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\ContextMenu_Tag_Helper.cshtml", "TargetPath": "Views\\Menu\\ContextMenu_Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Api.cshtml", "TargetPath": "Views\\DropDownList\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\_Layout.cshtml", "TargetPath": "Views\\Shared\\_Layout.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\ServerBinding_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\ServerBinding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Barcode\\Tag_Helper.cshtml", "TargetPath": "Views\\Barcode\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Bar_Charts\\Tag_Helper.cshtml", "TargetPath": "Views\\Range_Bar_Charts\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Funnel_Charts\\Funnel_Labels.cshtml", "TargetPath": "Views\\Funnel_Charts\\Funnel_Labels.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Tag_Helper.cshtml", "TargetPath": "Views\\TabStrip\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Column_Resizing_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Column_Resizing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Index_TagHelper.cshtml", "TargetPath": "Views\\ColorGradient\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Icons.cshtml", "TargetPath": "Views\\ButtonGroup\\Icons.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Items.cshtml", "TargetPath": "Views\\BottomNavigation\\Items.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Badge\\Index.cshtml", "TargetPath": "Views\\Badge\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\menu.cshtml", "TargetPath": "Views\\Accessibility\\menu.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Stacked100_Line_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Stacked100_Line_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radiobutton\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\Radiobutton\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Format_Painter_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Format_Painter_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Local_Data_Binding.cshtml", "TargetPath": "Views\\TreeView\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Planned_Vs_Actual_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Planned_Vs_Actual_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Events_TagHelper.cshtml", "TargetPath": "Views\\NumericTextBox\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Polar_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Logarithmic_Axis_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Logarithmic_Axis_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\SplitButton\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\dateinput.cshtml", "TargetPath": "Views\\Accessibility\\dateinput.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\ExampleLayout.cshtml", "TargetPath": "Views\\Shared\\ExampleLayout.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Server_Side_Import_Export.cshtml", "TargetPath": "Views\\Spreadsheet\\Server_Side_Import_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Index_TagHelper.cshtml", "TargetPath": "Views\\RadioGroup\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Index_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Index_TagHelper.cshtml", "TargetPath": "Views\\ExpansionPanel\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Basic_Usage.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Basic_Usage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\ProgressBar\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Drag_and_Drop_TagHelper.cshtml", "TargetPath": "Views\\ListBox\\Drag_and_Drop_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Basic_Usage.cshtml", "TargetPath": "Views\\Form\\Basic_Usage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pie_Charts\\Tag_Helper.cshtml", "TargetPath": "Views\\Pie_Charts\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Index_TagHelper.cshtml", "TargetPath": "Views\\SplitButton\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\ProgressBar\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\dragdrop_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\dragdrop_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Events_TagHelper.cshtml", "TargetPath": "Views\\Switch\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Box_Plot_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Box_Plot_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Index.cshtml", "TargetPath": "Views\\Switch\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Api.cshtml", "TargetPath": "Views\\DateTimePicker\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Basic_Usage_TagHelper.cshtml", "TargetPath": "Views\\Signature\\Basic_Usage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Slider\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Qrcode\\Tag_Helper.cshtml", "TargetPath": "Views\\Qrcode\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\ClientCategoryEditor.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\ClientCategoryEditor.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ZipLibrary\\compress_stream.cshtml", "TargetPath": "Views\\ZipLibrary\\compress_stream.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Aggregates.cshtml", "TargetPath": "Views\\Grid\\Aggregates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Handlers_TagHelper.cshtml", "TargetPath": "Views\\Sortable\\Handlers_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Export.cshtml", "TargetPath": "Views\\Circular_Gauge\\Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\multicombobox.cshtml", "TargetPath": "Views\\Accessibility\\multicombobox.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Pan_And_Zoom_TagHelper.cshtml", "TargetPath": "Views\\Scatter_Charts\\Pan_And_Zoom_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Funnel_Charts\\Index.cshtml", "TargetPath": "Views\\Funnel_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Area_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Range_Area_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Ajax.cshtml", "TargetPath": "Views\\PanelBar\\Ajax.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Filter\\Persist_State_TagHelper.cshtml", "TargetPath": "Views\\Filter\\Persist_State_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\SubNavigation.cshtml", "TargetPath": "Views\\Shared\\SubNavigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chip\\Index.cshtml", "TargetPath": "Views\\Chip\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\DropDownButton\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Sign_Pdf_Document_TagHelper.cshtml", "TargetPath": "Views\\Signature\\Sign_Pdf_Document_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Grouped_Stacked_Bar_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Grouped_Stacked_Bar_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\circularprogressbar.cshtml", "TargetPath": "Views\\Accessibility\\circularprogressbar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\grouping.cshtml", "TargetPath": "Views\\OrgChart\\grouping.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\_ViewStart.cshtml", "TargetPath": "Views\\_ViewStart.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\index_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\customdropzone_TagHelper.cshtml", "TargetPath": "Views\\Upload\\customdropzone_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\api_TagHelper.cshtml", "TargetPath": "Views\\dialog\\api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Appearance.cshtml", "TargetPath": "Views\\Switch\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Events_TagHelper.cshtml", "TargetPath": "Views\\TextBox\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\DropDownList\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Index.cshtml", "TargetPath": "Views\\TimePicker\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Aggregates_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Aggregates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Component_Type.cshtml", "TargetPath": "Views\\DateTimePicker\\Component_Type.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Index.cshtml", "TargetPath": "Views\\DateRangePicker\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Index_TagHelper.cshtml", "TargetPath": "Views\\Timeline\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Selection_TagHelper.cshtml", "TargetPath": "Views\\Rating\\Selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\SearchForm.cshtml", "TargetPath": "Views\\Shared\\SearchForm.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Layout_TagHelper.cshtml", "TargetPath": "Views\\Form\\Layout_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\local_data_binding_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\local_data_binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Tag_Helper.cshtml", "TargetPath": "Views\\ExpansionPanel\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radial_Gauge\\Tag_Helper.cshtml", "TargetPath": "Views\\Radial_Gauge\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Grouped_Data_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Grouped_Data_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bullet_Charts\\Index.cshtml", "TargetPath": "Views\\Bullet_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Logarithmic_Axis.cshtml", "TargetPath": "Views\\Bar_Charts\\Logarithmic_Axis.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\qrcode.cshtml", "TargetPath": "Views\\Accessibility\\qrcode.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\NumericTextBox\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\api_TagHelper.cshtml", "TargetPath": "Views\\MultiViewCalendar\\api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pager\\Index_TagHelper.cshtml", "TargetPath": "Views\\Pager\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Editing_Custom.cshtml", "TargetPath": "Views\\Grid\\Editing_Custom.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\HeatMap\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\virtualization.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\virtualization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Appearance.cshtml", "TargetPath": "Views\\BottomNavigation\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\api.cshtml", "TargetPath": "Views\\Diagram\\api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Import_Export_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Import_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Index_TagHelper.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\timepicker.cshtml", "TargetPath": "Views\\Accessibility\\timepicker.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Api.cshtml", "TargetPath": "Views\\Switch\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\TaskBoard\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SkeletonContainer\\Grid_Integration_TagHelper.cshtml", "TargetPath": "Views\\SkeletonContainer\\Grid_Integration_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Templates_TagHelper.cshtml", "TargetPath": "Views\\Notification\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Badge\\Index_TagHelper.cshtml", "TargetPath": "Views\\Badge\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Appearance.cshtml", "TargetPath": "Views\\TreeView\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\GridLayout\\Adaptive_TagHelper.cshtml", "TargetPath": "Views\\GridLayout\\Adaptive_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Index_TagHelper.cshtml", "TargetPath": "Views\\TaskBoard\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Api.cshtml", "TargetPath": "Views\\NumericTextBox\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\dropdownbutton.cshtml", "TargetPath": "Views\\Accessibility\\dropdownbutton.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Qrcode\\Api_TagHelper.cshtml", "TargetPath": "Views\\Qrcode\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Events_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Template_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\ServerBinding.cshtml", "TargetPath": "Views\\Gantt\\ServerBinding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Api_TagHelper.cshtml", "TargetPath": "Views\\Form\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\numerictextbox.cshtml", "TargetPath": "Views\\Accessibility\\numerictextbox.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Events_TagHelper.cshtml", "TargetPath": "Views\\ListBox\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Editing_TagHelper.cshtml", "TargetPath": "Views\\TaskBoard\\Editing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Orientation_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Orientation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Globalization_TagHelper.cshtml", "TargetPath": "Views\\MaskedTextBox\\Globalization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Events.cshtml", "TargetPath": "Views\\Signature\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Events.cshtml", "TargetPath": "Views\\TimePicker\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Radar_Column.cshtml", "TargetPath": "Views\\Radar_Charts\\Radar_Column.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Error_Bars_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Error_Bars_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Events_TagHelper.cshtml", "TargetPath": "Views\\FloatingActionButton\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Resources_Grouping_Vertical_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Resources_Grouping_Vertical_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Api.cshtml", "TargetPath": "Views\\TimePicker\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Frozen_Columns_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\Frozen_Columns_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\ListBox\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\column_reordering_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\column_reordering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\wordsprocessing\\index.cshtml", "TargetPath": "Views\\wordsprocessing\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Yearview_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Yearview_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Appearance.cshtml", "TargetPath": "Views\\Button\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Event_Selection.cshtml", "TargetPath": "Views\\Scheduler\\Event_Selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Captcha\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Captcha\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Index.cshtml", "TargetPath": "Views\\DateTimePicker\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Virtualization_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Virtualization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\progressbar.cshtml", "TargetPath": "Views\\Accessibility\\progressbar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\DateRangePicker\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Index_TagHelper.cshtml", "TargetPath": "Views\\Spreadsheet\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Index_TagHelper.cshtml", "TargetPath": "Views\\Switch\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Events.cshtml", "TargetPath": "Views\\FileManager\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Switch\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Arc_Gauge\\Index.cshtml", "TargetPath": "Views\\Arc_Gauge\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Events_TagHelper.cshtml", "TargetPath": "Views\\TextArea\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Api_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Api.cshtml", "TargetPath": "Views\\DropDownTree\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Selection_Export.cshtml", "TargetPath": "Views\\Grid\\Selection_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ImageEditor\\Events_TagHelper.cshtml", "TargetPath": "Views\\ImageEditor\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Tag_Helper.cshtml", "TargetPath": "Views\\Calendar\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPalette\\Events_TagHelper.cshtml", "TargetPath": "Views\\ColorPalette\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Switch\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Grouping_TagHelper.cshtml", "TargetPath": "Views\\ListView\\Grouping_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\editing.cshtml", "TargetPath": "Views\\TreeList\\editing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\api.cshtml", "TargetPath": "Views\\Drawer\\api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\ChunkUpload_TagHelper.cshtml", "TargetPath": "Views\\Upload\\ChunkUpload_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Filter\\Custom_Editors.cshtml", "TargetPath": "Views\\Filter\\Custom_Editors.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Custom_Tools_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Custom_Tools_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\index_TagHelper.cshtml", "TargetPath": "Views\\Drawer\\index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Columns_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Columns_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Api.cshtml", "TargetPath": "Views\\Slider\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Cards\\Action_Buttons.cshtml", "TargetPath": "Views\\Cards\\Action_Buttons.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\Index.cshtml", "TargetPath": "Views\\Chart_Api\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\TimePicker\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\upload.cshtml", "TargetPath": "Views\\Accessibility\\upload.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Api.cshtml", "TargetPath": "Views\\Map\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Events_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Images.cshtml", "TargetPath": "Views\\TreeView\\Images.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\TextBox\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Api_TagHelper.cshtml", "TargetPath": "Views\\SplitButton\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\TaskBoard\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\_ViewImports.cshtml", "TargetPath": "Views\\_ViewImports.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Index.cshtml", "TargetPath": "Views\\DropDownTree\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\dialog.cshtml", "TargetPath": "Views\\Accessibility\\dialog.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Loader\\Index.cshtml", "TargetPath": "Views\\Loader\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Bar_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Range_Bar_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Area_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Ajax.cshtml", "TargetPath": "Views\\Tooltip\\Ajax.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Line_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Index.cshtml", "TargetPath": "Views\\DateInput\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Qrcode\\Api.cshtml", "TargetPath": "Views\\Qrcode\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Index.cshtml", "TargetPath": "Views\\TextArea\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Remote_Markers_TagHelper.cshtml", "TargetPath": "Views\\Map\\Remote_Markers_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\form.cshtml", "TargetPath": "Views\\Accessibility\\form.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pager\\Integration.cshtml", "TargetPath": "Views\\Pager\\Integration.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Pdf_Export.cshtml", "TargetPath": "Views\\TreeList\\Pdf_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Customlabel_TagHelper.cshtml", "TargetPath": "Views\\ProgressBar\\Customlabel_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\TabStrip\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Globalization.cshtml", "TargetPath": "Views\\Calendar\\Globalization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Api.cshtml", "TargetPath": "Views\\Splitter\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Result.cshtml", "TargetPath": "Views\\Upload\\Result.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Api_TagHelper.cshtml", "TargetPath": "Views\\Circular_Gauge\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Custom_DataSource.cshtml", "TargetPath": "Views\\DropDownList\\Custom_DataSource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Checkbox\\Appearance.cshtml", "TargetPath": "Views\\Checkbox\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\CountryRegion.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\CountryRegion.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Appearance.cshtml", "TargetPath": "Views\\DropDownTree\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Index.cshtml", "TargetPath": "Views\\BottomNavigation\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPalette\\Index_TagHelper.cshtml", "TargetPath": "Views\\ColorPalette\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Funnel_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Funnel_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radiobutton\\Index_TagHelper.cshtml", "TargetPath": "Views\\Radiobutton\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\BasicUsage_TagHelper.cshtml", "TargetPath": "Views\\Window\\BasicUsage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Resizing.cshtml", "TargetPath": "Views\\TileLayout\\Resizing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Button\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Barcode\\Index.cshtml", "TargetPath": "Views\\Barcode\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Qrcode\\Swiss.cshtml", "TargetPath": "Views\\Qrcode\\Swiss.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Filter_Disable.cshtml", "TargetPath": "Views\\Sortable\\Filter_Disable.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bubble_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Bubble_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\week_column_TagHelper.cshtml", "TargetPath": "Views\\MultiViewCalendar\\week_column_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\view_selection.cshtml", "TargetPath": "Views\\MultiViewCalendar\\view_selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Multicolumnheaders.cshtml", "TargetPath": "Views\\Grid\\Multicolumnheaders.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Linkedlists_TagHelper.cshtml", "TargetPath": "Views\\Sortable\\Linkedlists_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Scatter_Line_TagHelper.cshtml", "TargetPath": "Views\\Scatter_Charts\\Scatter_Line_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ActionSheet\\Events_TagHelper.cshtml", "TargetPath": "Views\\ActionSheet\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Client_Filtering_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Client_Filtering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Rangeselection_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Rangeselection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Api_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Index.cshtml", "TargetPath": "Views\\Signature\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Kinvey_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Kinvey_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ActionSheet\\Index_TagHelper.cshtml", "TargetPath": "Views\\ActionSheet\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\badge.cshtml", "TargetPath": "Views\\Accessibility\\badge.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Grouped_Stacked100_Bar.cshtml", "TargetPath": "Views\\Bar_Charts\\Grouped_Stacked100_Bar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Contrast_Tool_TagHelper.cshtml", "TargetPath": "Views\\ColorGradient\\Contrast_Tool_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\ServerFiltering.cshtml", "TargetPath": "Views\\ComboBox\\ServerFiltering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Validation.cshtml", "TargetPath": "Views\\TaskBoard\\Validation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Floating_Label.cshtml", "TargetPath": "Views\\DateTimePicker\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Api.cshtml", "TargetPath": "Views\\DateRangePicker\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\TabStrip\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radial_Gauge\\Export.cshtml", "TargetPath": "Views\\Radial_Gauge\\Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Component_Type.cshtml", "TargetPath": "Views\\DatePicker\\Component_Type.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Index_TagHelper.cshtml", "TargetPath": "Views\\Pivotgrid\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Vertical_TagHelper.cshtml", "TargetPath": "Views\\ProgressBar\\Vertical_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPalette\\Index.cshtml", "TargetPath": "Views\\ColorPalette\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Error_Bars_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Error_Bars_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\ServerFiltering.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\ServerFiltering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\mini.cshtml", "TargetPath": "Views\\Drawer\\mini.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Index.cshtml", "TargetPath": "Views\\Notification\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Index_TagHelper.cshtml", "TargetPath": "Views\\DateRangePicker\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Tag_Helper.cshtml", "TargetPath": "Views\\Menu\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\ColorPicker\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\editing_incell.cshtml", "TargetPath": "Views\\TreeList\\editing_incell.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PDFViewer\\index_TagHelper.cshtml", "TargetPath": "Views\\PDFViewer\\index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Index.cshtml", "TargetPath": "Views\\DropDownList\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Wizard\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Avatar\\Appearance.cshtml", "TargetPath": "Views\\Avatar\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Date_Axis.cshtml", "TargetPath": "Views\\Area_Charts\\Date_Axis.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\events.cshtml", "TargetPath": "Views\\CheckboxGroup\\events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Date_Grouping_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Date_Grouping_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\DropDownButton\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\Grouping.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\Grouping.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Operation_Modes_TagHelper.cshtml", "TargetPath": "Views\\Stepper\\Operation_Modes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPalette\\Events.cshtml", "TargetPath": "Views\\ColorPalette\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\radiogroup.cshtml", "TargetPath": "Views\\Accessibility\\radiogroup.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Resources_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Resources_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Bar_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Scrollable.cshtml", "TargetPath": "Views\\Menu\\Scrollable.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\remote_data_binding_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\remote_data_binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\TabStrip\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Excel_Export.cshtml", "TargetPath": "Views\\Pivotgrid\\Excel_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\Export.cshtml", "TargetPath": "Views\\Chart_Api\\Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Responsive_Panel\\Index_TagHelper.cshtml", "TargetPath": "Views\\Responsive_Panel\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\autocomplete.cshtml", "TargetPath": "Views\\Accessibility\\autocomplete.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Editing_Popup_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Editing_Popup_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\filter.cshtml", "TargetPath": "Views\\Accessibility\\filter.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AppBar\\Index_TagHelper.cshtml", "TargetPath": "Views\\AppBar\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Badges.cshtml", "TargetPath": "Views\\ButtonGroup\\Badges.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\listview.cshtml", "TargetPath": "Views\\Accessibility\\listview.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Api_TagHelper.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Funnel_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Funnel_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\combobox.cshtml", "TargetPath": "Views\\Accessibility\\combobox.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Column.cshtml", "TargetPath": "Views\\Bar_Charts\\Column.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Box_Plot_Charts\\Vertical.cshtml", "TargetPath": "Views\\Box_Plot_Charts\\Vertical.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Tag_Helper.cshtml", "TargetPath": "Views\\Gantt\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Adaptive_Slot_Height_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Adaptive_Slot_Height_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\Layout_TagHelper.cshtml", "TargetPath": "Views\\CheckboxGroup\\Layout_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Index_TagHelper.cshtml", "TargetPath": "Views\\Splitter\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Floating_Label.cshtml", "TargetPath": "Views\\TextBox\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ActionSheet\\Events.cshtml", "TargetPath": "Views\\ActionSheet\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Tag_Helper.cshtml", "TargetPath": "Views\\Grid\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\icon.cshtml", "TargetPath": "Views\\Accessibility\\icon.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AppBar\\Tag_Helper.cshtml", "TargetPath": "Views\\AppBar\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Odata.cshtml", "TargetPath": "Views\\Grid\\Odata.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Events_TagHelper.cshtml", "TargetPath": "Views\\Notification\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Donut_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Donut_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Index_TagHelper.cshtml", "TargetPath": "Views\\ListView\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\CascadingDropDownList_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\CascadingDropDownList_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\virtualization_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\virtualization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Appearance.cshtml", "TargetPath": "Views\\DropDownButton\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Editing.cshtml", "TargetPath": "Views\\Grid\\Editing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Api.cshtml", "TargetPath": "Views\\Calendar\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Events_TagHelper.cshtml", "TargetPath": "Views\\Tooltip\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Grouping.cshtml", "TargetPath": "Views\\DropDownList\\Grouping.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\pager.cshtml", "TargetPath": "Views\\Accessibility\\pager.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DataSource\\Shared_DataSource_TagHelper.cshtml", "TargetPath": "Views\\DataSource\\Shared_DataSource_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Pager_Functionality_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Pager_Functionality_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\listview-selectable.cshtml", "TargetPath": "Views\\Accessibility\\listview-selectable.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Component_Type_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Component_Type_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Rating\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\DatePicker\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Captcha\\Api_TagHelper.cshtml", "TargetPath": "Views\\Captcha\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bubble_Charts\\Index.cshtml", "TargetPath": "Views\\Bubble_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Ajaxcontent.cshtml", "TargetPath": "Views\\Window\\Ajaxcontent.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\right_to_left_support_TagHelper.cshtml", "TargetPath": "Views\\dialog\\right_to_left_support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bullet_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Bullet_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Events_TagHelper.cshtml", "TargetPath": "Views\\TileLayout\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Avatar\\GridIntegration.cshtml", "TargetPath": "Views\\Avatar\\GridIntegration.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Grouped_Data.cshtml", "TargetPath": "Views\\Bar_Charts\\Grouped_Data.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PivotGridV2\\index.cshtml", "TargetPath": "Views\\PivotGridV2\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Popover\\Templates_TagHelper.cshtml", "TargetPath": "Views\\Popover\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\TaskBoard\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Pan_And_Zoom.cshtml", "TargetPath": "Views\\Bar_Charts\\Pan_And_Zoom.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\grid.cshtml", "TargetPath": "Views\\Accessibility\\grid.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Events.cshtml", "TargetPath": "Views\\Wizard\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Api.cshtml", "TargetPath": "Views\\ExpansionPanel\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Success.cshtml", "TargetPath": "Views\\Form\\Success.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Index_TagHelper.cshtml", "TargetPath": "Views\\Circular_Gauge\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Tag_Helper.cshtml", "TargetPath": "Views\\Spreadsheet\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Server_Side_PDF_Export.cshtml", "TargetPath": "Views\\Spreadsheet\\Server_Side_PDF_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Resources.cshtml", "TargetPath": "Views\\Gantt\\Resources.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\GridLayout\\Adaptive.cshtml", "TargetPath": "Views\\GridLayout\\Adaptive.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\listbox.cshtml", "TargetPath": "Views\\Accessibility\\listbox.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Globalization_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Globalization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Actions.cshtml", "TargetPath": "Views\\Window\\Actions.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Pan_And_Zoom_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Pan_And_Zoom_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Events.cshtml", "TargetPath": "Views\\DropDownButton\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Copy_To_Excel.cshtml", "TargetPath": "Views\\Grid\\Copy_To_Excel.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\DateTimePicker\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Index_TagHelper.cshtml", "TargetPath": "Views\\Upload\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\avatar.cshtml", "TargetPath": "Views\\Accessibility\\avatar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Api_TagHelper.cshtml", "TargetPath": "Views\\Upload\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Images.cshtml", "TargetPath": "Views\\Button\\Images.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Smooth_Polar_Line.cshtml", "TargetPath": "Views\\Polar_Charts\\Smooth_Polar_Line.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\change_working_days_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\change_working_days_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Cell_Alignment_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Cell_Alignment_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Tag_Helper.cshtml", "TargetPath": "Views\\Timeline\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\api_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Tag_Helper.cshtml", "TargetPath": "Views\\Slider\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Events_TagHelper.cshtml", "TargetPath": "Views\\Button\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\DataBinding_TagHelper.cshtml", "TargetPath": "Views\\ScrollView\\DataBinding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Tag_Helper.cshtml", "TargetPath": "Views\\ComboBox\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Pan_And_Zoom.cshtml", "TargetPath": "Views\\Scatter_Charts\\Pan_And_Zoom.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MediaPlayer\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\MediaPlayer\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Filter_Row_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\Filter_Row_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Funnel_Charts\\Funnel_Labels_TagHelper.cshtml", "TargetPath": "Views\\Funnel_Charts\\Funnel_Labels_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PivotGridV2\\templates_TagHelper.cshtml", "TargetPath": "Views\\PivotGridV2\\templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Precision.cshtml", "TargetPath": "Views\\Rating\\Precision.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\FloatingActionButton\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\Index.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Api.cshtml", "TargetPath": "Views\\TaskBoard\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Radar_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Colors_TagHelper.cshtml", "TargetPath": "Views\\Circular_Gauge\\Colors_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Checkbox_Selection_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Checkbox_Selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Editing_Popup.cshtml", "TargetPath": "Views\\Grid\\Editing_Popup.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pie_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Pie_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Tag_Helper.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\textarea.cshtml", "TargetPath": "Views\\Accessibility\\textarea.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Pdf_Export_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Pdf_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Api_TagHelper.cshtml", "TargetPath": "Views\\ToolBar\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Index.cshtml", "TargetPath": "Views\\RadioGroup\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Content_position_TagHelper.cshtml", "TargetPath": "Views\\Wizard\\Content_position_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Excel_Export.cshtml", "TargetPath": "Views\\TreeList\\Excel_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Validation_TagHelper.cshtml", "TargetPath": "Views\\TaskBoard\\Validation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\ExpansionPanel\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Rating\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Actions_TagHelper.cshtml", "TargetPath": "Views\\Window\\Actions_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\Index.cshtml", "TargetPath": "Views\\CheckboxGroup\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Events.cshtml", "TargetPath": "Views\\FlatColorPicker\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Checkboxes_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Checkboxes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Api.cshtml", "TargetPath": "Views\\FlatColorPicker\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\Header.cshtml", "TargetPath": "Views\\Shared\\Header.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Events.cshtml", "TargetPath": "Views\\Upload\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Box_Plot_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Box_Plot_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\Drawer\\keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\NumericTextBox\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Validator\\Index.cshtml", "TargetPath": "Views\\Validator\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Smooth_Polar_Line_TagHelper.cshtml", "TargetPath": "Views\\Polar_Charts\\Smooth_Polar_Line_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\load_on_demand_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\load_on_demand_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\LoadAjaxContent.cshtml", "TargetPath": "Views\\Window\\LoadAjaxContent.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\appearance_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Constrain_Movement.cshtml", "TargetPath": "Views\\Window\\Constrain_Movement.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Globalization_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Globalization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Events.cshtml", "TargetPath": "Views\\DatePicker\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\daterangepicker.cshtml", "TargetPath": "Views\\Accessibility\\daterangepicker.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Appearance.cshtml", "TargetPath": "Views\\TextArea\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Avatar\\Index.cshtml", "TargetPath": "Views\\Avatar\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Rowtemplate_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Rowtemplate_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Chunk_TagHelper.cshtml", "TargetPath": "Views\\ProgressBar\\Chunk_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ImageEditor\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\ImageEditor\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Popover\\Api.cshtml", "TargetPath": "Views\\Popover\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\tabstrip.cshtml", "TargetPath": "Views\\Accessibility\\tabstrip.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chip\\Events.cshtml", "TargetPath": "Views\\Chip\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\GridForeignKey.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\GridForeignKey.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Groups.cshtml", "TargetPath": "Views\\Form\\Groups.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\window.cshtml", "TargetPath": "Views\\Accessibility\\window.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\breadcrumb.cshtml", "TargetPath": "Views\\Accessibility\\breadcrumb.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\TextArea\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\ScrollView\\keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Basic_Usage_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Basic_Usage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\chiplist.cshtml", "TargetPath": "Views\\Accessibility\\chiplist.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Template.cshtml", "TargetPath": "Views\\Tooltip\\Template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Index.cshtml", "TargetPath": "Views\\Scheduler\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Index_TagHelper.cshtml", "TargetPath": "Views\\HeatMap\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Globalization_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Globalization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Events_TagHelper.cshtml", "TargetPath": "Views\\DropDownButton\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Checkboxes.cshtml", "TargetPath": "Views\\DropDownTree\\Checkboxes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\RadioGroup\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\load_on_demand.cshtml", "TargetPath": "Views\\OrgChart\\load_on_demand.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\ExpansionPanel\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\dragdrop.cshtml", "TargetPath": "Views\\TreeList\\dragdrop.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SkeletonContainer\\Tag_Helper.cshtml", "TargetPath": "Views\\SkeletonContainer\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\TextBox\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Index.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Slider\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Globalization.cshtml", "TargetPath": "Views\\TimePicker\\Globalization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\Events_TagHelper.cshtml", "TargetPath": "Views\\Chart_Api\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\index.cshtml", "TargetPath": "Views\\OrgChart\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\Index_TagHelper.cshtml", "TargetPath": "Views\\CheckboxGroup\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Captcha\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Captcha\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bullet_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Bullet_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Hiding_Grouped_Columns.cshtml", "TargetPath": "Views\\Grid\\Hiding_Grouped_Columns.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\String.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\String.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PDFViewer\\Api.cshtml", "TargetPath": "Views\\PDFViewer\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Resizing_TagHelper.cshtml", "TargetPath": "Views\\TileLayout\\Resizing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Basic_Usage_TagHelper.cshtml", "TargetPath": "Views\\FloatingActionButton\\Basic_Usage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Auto_Event_Height.cshtml", "TargetPath": "Views\\Scheduler\\Auto_Event_Height.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Integration_Grid_TagHelper.cshtml", "TargetPath": "Views\\Sortable\\Integration_Grid_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Index_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Api.cshtml", "TargetPath": "Views\\Circular_Gauge\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Date_Range_TagHelper.cshtml", "TargetPath": "Views\\DateRangePicker\\Date_Range_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Globalization.cshtml", "TargetPath": "Views\\Editor\\Globalization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Editor\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Layout_TagHelper.cshtml", "TargetPath": "Views\\RadioGroup\\Layout_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Resources_Grouping_Hierarchical_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Resources_Grouping_Hierarchical_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\templates.cshtml", "TargetPath": "Views\\OrgChart\\templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MediaPlayer\\Index_TagHelper.cshtml", "TargetPath": "Views\\MediaPlayer\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Resizing.cshtml", "TargetPath": "Views\\ToolBar\\Resizing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\functionality_TagHelper.cshtml", "TargetPath": "Views\\Drawer\\functionality_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Api_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\timeline-vertical.cshtml", "TargetPath": "Views\\Accessibility\\timeline-vertical.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\OdataV4_TagHelper.cshtml", "TargetPath": "Views\\Grid\\OdataV4_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\GridLayout\\Index_TagHelper.cshtml", "TargetPath": "Views\\GridLayout\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MediaPlayer\\Events.cshtml", "TargetPath": "Views\\MediaPlayer\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\diagram.cshtml", "TargetPath": "Views\\Accessibility\\diagram.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\MaskedTextBox\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AppBar\\Position.cshtml", "TargetPath": "Views\\AppBar\\Position.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Date_Axis_TagHelper.cshtml", "TargetPath": "Views\\Scatter_Charts\\Date_Axis_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chat\\Toolbar.cshtml", "TargetPath": "Views\\Chat\\Toolbar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Api.cshtml", "TargetPath": "Views\\Timeline\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\ServerFiltering_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\ServerFiltering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadstreamprocessing\\index.cshtml", "TargetPath": "Views\\Spreadstreamprocessing\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Api.cshtml", "TargetPath": "Views\\FloatingActionButton\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\Events.cshtml", "TargetPath": "Views\\Chart_Api\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Globalization.cshtml", "TargetPath": "Views\\Scheduler\\Globalization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radial_Gauge\\Index_TagHelper.cshtml", "TargetPath": "Views\\Radial_Gauge\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\datepicker.cshtml", "TargetPath": "Views\\Accessibility\\datepicker.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Grouped_Data_TagHelper.cshtml", "TargetPath": "Views\\Radar_Charts\\Grouped_Data_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Grouping.cshtml", "TargetPath": "Views\\ComboBox\\Grouping.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Index_TagHelper.cshtml", "TargetPath": "Views\\BottomNavigation\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Tag_Helper.cshtml", "TargetPath": "Views\\Scheduler\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Api_TagHelper.cshtml", "TargetPath": "Views\\BottomNavigation\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Images.cshtml", "TargetPath": "Views\\DropDownTree\\Images.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\functionality.cshtml", "TargetPath": "Views\\Drawer\\functionality.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\grouping.cshtml", "TargetPath": "Views\\AutoComplete\\grouping.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\CommonDescription.cshtml", "TargetPath": "Views\\Shared\\CommonDescription.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Editing_Custom_Validation_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Editing_Custom_Validation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\pdfviewer.cshtml", "TargetPath": "Views\\Accessibility\\pdfviewer.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Constraints_TagHelper.cshtml", "TargetPath": "Views\\Sortable\\Constraints_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Orientation.cshtml", "TargetPath": "Views\\Form\\Orientation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Index.cshtml", "TargetPath": "Views\\TreeView\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\notification.cshtml", "TargetPath": "Views\\Accessibility\\notification.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Stepper\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radiobutton\\Index.cshtml", "TargetPath": "Views\\Radiobutton\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\bottomnavigation.cshtml", "TargetPath": "Views\\Accessibility\\bottomnavigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Palette_TagHelper.cshtml", "TargetPath": "Views\\ColorPicker\\Palette_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Financial\\Virtualization.cshtml", "TargetPath": "Views\\Financial\\Virtualization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Format_Painter.cshtml", "TargetPath": "Views\\Editor\\Format_Painter.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Timeline_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Timeline_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\FloatingActionButton\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\CascadingCombobox.cshtml", "TargetPath": "Views\\ComboBox\\CascadingCombobox.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Api_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Api.cshtml", "TargetPath": "Views\\ButtonGroup\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Hiding_Grouped_Columns_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Hiding_Grouped_Columns_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Direction.cshtml", "TargetPath": "Views\\Menu\\Direction.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Inline_Editing_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Inline_Editing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\hierarchy_TagHelper.cshtml", "TargetPath": "Views\\Drawer\\hierarchy_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Index.cshtml", "TargetPath": "Views\\Upload\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Api.cshtml", "TargetPath": "Views\\MultiSelect\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Filter\\Tag_Helper.cshtml", "TargetPath": "Views\\Filter\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Captcha\\Events.cshtml", "TargetPath": "Views\\Captcha\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\scrollview.cshtml", "TargetPath": "Views\\Accessibility\\scrollview.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\BottomNavigation\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Template.cshtml", "TargetPath": "Views\\Calendar\\Template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Appearance.cshtml", "TargetPath": "Views\\ColorPicker\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Smooth_Area.cshtml", "TargetPath": "Views\\Area_Charts\\Smooth_Area.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\BottomNavigation\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Waterfall_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Waterfall_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Events.cshtml", "TargetPath": "Views\\DropDownTree\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Index.cshtml", "TargetPath": "Views\\TextBox\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Financial\\stock_history_TagHelper.cshtml", "TargetPath": "Views\\Financial\\stock_history_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Event_Selection_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Event_Selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Tag_Helper.cshtml", "TargetPath": "Views\\Tooltip\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Tag_Helper.cshtml", "TargetPath": "Views\\BottomNavigation\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Tag_Helper.cshtml", "TargetPath": "Views\\NumericTextBox\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Add_Remove.cshtml", "TargetPath": "Views\\TileLayout\\Add_Remove.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Events.cshtml", "TargetPath": "Views\\TabStrip\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Ajax_TagHelper.cshtml", "TargetPath": "Views\\TabStrip\\Ajax_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\TimePicker\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\TimePicker\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Scrollable_Tabs_TagHelper.cshtml", "TargetPath": "Views\\TabStrip\\Scrollable_Tabs_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\virtualization.cshtml", "TargetPath": "Views\\ComboBox\\virtualization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Label.cshtml", "TargetPath": "Views\\Rating\\Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\button.cshtml", "TargetPath": "Views\\Accessibility\\button.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Events.cshtml", "TargetPath": "Views\\ButtonGroup\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPalette\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\ColorPalette\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Basic_Usage_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Basic_Usage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Stacked_Line.cshtml", "TargetPath": "Views\\Line_Charts\\Stacked_Line.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\keyboard_navigation.cshtml", "TargetPath": "Views\\Timeline\\keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Menu\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Layout.cshtml", "TargetPath": "Views\\Stepper\\Layout.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\actionsheet.cshtml", "TargetPath": "Views\\Accessibility\\actionsheet.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Charts\\Index.cshtml", "TargetPath": "Views\\Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Horizontal_TagHelper.cshtml", "TargetPath": "Views\\Timeline\\Horizontal_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Pan_And_Zoom.cshtml", "TargetPath": "Views\\HeatMap\\Pan_And_Zoom.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Polar_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radial_Gauge\\Export_TagHelper.cshtml", "TargetPath": "Views\\Radial_Gauge\\Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\index_TagHelper.cshtml", "TargetPath": "Views\\MultiViewCalendar\\index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\Selection.cshtml", "TargetPath": "Views\\Chart_Api\\Selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\captcha.cshtml", "TargetPath": "Views\\Accessibility\\captcha.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Horizontal.cshtml", "TargetPath": "Views\\Timeline\\Horizontal.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Search_Events.cshtml", "TargetPath": "Views\\Scheduler\\Search_Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Tab_Position_TagHelper.cshtml", "TargetPath": "Views\\TabStrip\\Tab_Position_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Precision_TagHelper.cshtml", "TargetPath": "Views\\Rating\\Precision_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Api_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Step_Area_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Step_Area_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\menu_bind_attributes_TagHelper.cshtml", "TargetPath": "Views\\Menu\\menu_bind_attributes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Copy_To_Excel_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Copy_To_Excel_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\index_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Linear_Gauge\\Export_TagHelper.cshtml", "TargetPath": "Views\\Linear_Gauge\\Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Modelbinding.cshtml", "TargetPath": "Views\\Menu\\Modelbinding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Smooth_Line_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Smooth_Line_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Visuals_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Visuals_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Items_TagHelper.cshtml", "TargetPath": "Views\\Form\\Items_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\Switch\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Events_TagHelper.cshtml", "TargetPath": "Views\\Spreadsheet\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PDFViewer\\Events_TagHelper.cshtml", "TargetPath": "Views\\PDFViewer\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Badges_TagHelper.cshtml", "TargetPath": "Views\\ButtonGroup\\Badges_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Detailtemplate.cshtml", "TargetPath": "Views\\Grid\\Detailtemplate.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Resources_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Resources_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\_ViewStart.cshtml", "TargetPath": "Views\\Accessibility\\_ViewStart.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Multicolumnheaders.cshtml", "TargetPath": "Views\\TreeList\\Multicolumnheaders.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Reordering_TagHelper.cshtml", "TargetPath": "Views\\TileLayout\\Reordering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Columns.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Columns.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Events.cshtml", "TargetPath": "Views\\Sortable\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Appearance.cshtml", "TargetPath": "Views\\DateTimePicker\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Ajax.cshtml", "TargetPath": "Views\\Wizard\\Ajax.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\togglebutton.cshtml", "TargetPath": "Views\\Accessibility\\togglebutton.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Tag_Helper.cshtml", "TargetPath": "Views\\TextArea\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeMap\\Index_TagHelper.cshtml", "TargetPath": "Views\\TreeMap\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\template_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Column_Menu_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Column_Menu_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Qrcode\\Swiss_TagHelper.cshtml", "TargetPath": "Views\\Qrcode\\Swiss_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Api.cshtml", "TargetPath": "Views\\TextBox\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Editing_Custom_Validation.cshtml", "TargetPath": "Views\\Grid\\Editing_Custom_Validation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Grouping_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\Grouping_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Orientation_TagHelper.cshtml", "TargetPath": "Views\\Form\\Orientation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadprocessing\\generate_documents.cshtml", "TargetPath": "Views\\Spreadprocessing\\generate_documents.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Events_TagHelper.cshtml", "TargetPath": "Views\\FileManager\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\Api_TagHelper.cshtml", "TargetPath": "Views\\CheckboxGroup\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Donut_Charts\\Donut_Labels.cshtml", "TargetPath": "Views\\Donut_Charts\\Donut_Labels.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chat\\Healthcare.cshtml", "TargetPath": "Views\\Chat\\Healthcare.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Api_TagHelper.cshtml", "TargetPath": "Views\\DateRangePicker\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Filter\\Operators_TagHelper.cshtml", "TargetPath": "Views\\Filter\\Operators_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Rating\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Sorting_Filtering_TagHelper.cshtml", "TargetPath": "Views\\Spreadsheet\\Sorting_Filtering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Animation_TagHelper.cshtml", "TargetPath": "Views\\TabStrip\\Animation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\api.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Index.cshtml", "TargetPath": "Views\\TileLayout\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Content_position.cshtml", "TargetPath": "Views\\Wizard\\Content_position.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Grouped_Data_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Grouped_Data_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\Selection_TagHelper.cshtml", "TargetPath": "Views\\Chart_Api\\Selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Index_TagHelper.cshtml", "TargetPath": "Views\\DateInput\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Api.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\pdf_export_TagHelper.cshtml", "TargetPath": "Views\\Diagram\\pdf_export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Funnel_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Funnel_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Arc_Gauge\\Circular.cshtml", "TargetPath": "Views\\Arc_Gauge\\Circular.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Markers_TagHelper.cshtml", "TargetPath": "Views\\HeatMap\\Markers_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Waterfall_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Waterfall_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Validation.cshtml", "TargetPath": "Views\\Spreadsheet\\Validation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\menu_bind_attributes.cshtml", "TargetPath": "Views\\Menu\\menu_bind_attributes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Area_Charts\\Tag_Helper.cshtml", "TargetPath": "Views\\Range_Area_Charts\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Qrcode\\Index_TagHelper.cshtml", "TargetPath": "Views\\Qrcode\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Polar_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Events.cshtml", "TargetPath": "Views\\TextArea\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\validation.cshtml", "TargetPath": "Views\\Upload\\validation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Responsive_Columns.cshtml", "TargetPath": "Views\\Grid\\Responsive_Columns.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Qrcode\\Image_TagHelper.cshtml", "TargetPath": "Views\\Qrcode\\Image_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Api.cshtml", "TargetPath": "Views\\TreeView\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Api_TagHelper.cshtml", "TargetPath": "Views\\FlatColorPicker\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\CascadingCombobox_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\CascadingCombobox_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Events.cshtml", "TargetPath": "Views\\Menu\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\TileLayout\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Custom_Datasource.cshtml", "TargetPath": "Views\\Scheduler\\Custom_Datasource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Bar_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\view_selection_TagHelper.cshtml", "TargetPath": "Views\\MultiViewCalendar\\view_selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\maskedtextbox.cshtml", "TargetPath": "Views\\Accessibility\\maskedtextbox.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bubble_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Bubble_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Paging_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Paging_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Validation.cshtml", "TargetPath": "Views\\MaskedTextBox\\Validation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Rangeselection.cshtml", "TargetPath": "Views\\DatePicker\\Rangeselection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Tag_Helper.cshtml", "TargetPath": "Views\\Pivotgrid\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Radar_Area_TagHelper.cshtml", "TargetPath": "Views\\Radar_Charts\\Radar_Area_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chip\\Events_TagHelper.cshtml", "TargetPath": "Views\\Chip\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Rgb_Hex.cshtml", "TargetPath": "Views\\FlatColorPicker\\Rgb_Hex.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\api.cshtml", "TargetPath": "Views\\AutoComplete\\api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ImageEditor\\Index_TagHelper.cshtml", "TargetPath": "Views\\ImageEditor\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Logarithmic_Axis.cshtml", "TargetPath": "Views\\Line_Charts\\Logarithmic_Axis.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ActionSheet\\Api.cshtml", "TargetPath": "Views\\ActionSheet\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Palette_Presets.cshtml", "TargetPath": "Views\\ColorPicker\\Palette_Presets.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Grouped_Stacked100_Bar_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Grouped_Stacked100_Bar_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Groups_TagHelper.cshtml", "TargetPath": "Views\\Form\\Groups_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Badges_TagHelper.cshtml", "TargetPath": "Views\\Button\\Badges_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\loader.cshtml", "TargetPath": "Views\\Accessibility\\loader.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\wordsprocessing\\pdf_export.cshtml", "TargetPath": "Views\\wordsprocessing\\pdf_export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Tag_Helper.cshtml", "TargetPath": "Views\\MultiSelect\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ActionSheet\\Index.cshtml", "TargetPath": "Views\\ActionSheet\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\radialgauge.cshtml", "TargetPath": "Views\\Accessibility\\radialgauge.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\StackLayout\\Index_TagHelper.cshtml", "TargetPath": "Views\\StackLayout\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Badge\\Templates.cshtml", "TargetPath": "Views\\Badge\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\right_to_left_support_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\right_to_left_support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Images.cshtml", "TargetPath": "Views\\Spreadsheet\\Images.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Avatar\\GridIntegration_TagHelper.cshtml", "TargetPath": "Views\\Avatar\\GridIntegration_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AppBar\\Index.cshtml", "TargetPath": "Views\\AppBar\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Api.cshtml", "TargetPath": "Views\\Editor\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Api_TagHelper.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Funnel_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Funnel_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Box_Plot_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Box_Plot_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\FlatColorPicker\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Window\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Templates.cshtml", "TargetPath": "Views\\TreeView\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\DropDownList\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Grouped_Data.cshtml", "TargetPath": "Views\\Radar_Charts\\Grouped_Data.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Template_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Basic_Usage.cshtml", "TargetPath": "Views\\Signature\\Basic_Usage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\CheckboxGroup\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\DateTimePicker\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\_Layout.cshtml", "TargetPath": "Views\\Accessibility\\_Layout.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Events.cshtml", "TargetPath": "Views\\Slider\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Events.cshtml", "TargetPath": "Views\\Timeline\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Animation.cshtml", "TargetPath": "Views\\Menu\\Animation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Templates_TagHelper.cshtml", "TargetPath": "Views\\ListBox\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Pdf_Export_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Pdf_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\TreeView\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Notes_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Notes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Captcha\\Events_TagHelper.cshtml", "TargetPath": "Views\\Captcha\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bubble_Charts\\Grouped_Data_TagHelper.cshtml", "TargetPath": "Views\\Bubble_Charts\\Grouped_Data_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SkeletonContainer\\Grid_Integration.cshtml", "TargetPath": "Views\\SkeletonContainer\\Grid_Integration.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\editing_popup_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\editing_popup_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Events.cshtml", "TargetPath": "Views\\Gantt\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Grouped_Data.cshtml", "TargetPath": "Views\\Area_Charts\\Grouped_Data.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Virtualization_Remote_Data.cshtml", "TargetPath": "Views\\Grid\\Virtualization_Remote_Data.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Cell_Alignment.cshtml", "TargetPath": "Views\\Grid\\Cell_Alignment.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Endless_Scrolling_TagHelper.cshtml", "TargetPath": "Views\\ListView\\Endless_Scrolling_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Pdf_Export.cshtml", "TargetPath": "Views\\Grid\\Pdf_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Appearance.cshtml", "TargetPath": "Views\\ComboBox\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Yearview.cshtml", "TargetPath": "Views\\Scheduler\\Yearview.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Events.cshtml", "TargetPath": "Views\\ProgressBar\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\StackLayout\\Index.cshtml", "TargetPath": "Views\\StackLayout\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Loader\\Integration.cshtml", "TargetPath": "Views\\Loader\\Integration.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Checkbox_Selection.cshtml", "TargetPath": "Views\\Grid\\Checkbox_Selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Filter_Disable_TagHelper.cshtml", "TargetPath": "Views\\Sortable\\Filter_Disable_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Scatter_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\ListView\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Api.cshtml", "TargetPath": "Views\\ProgressBar\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Templates.cshtml", "TargetPath": "Views\\Notification\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\Pdf_Export.cshtml", "TargetPath": "Views\\Chart_Api\\Pdf_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Foreignkeycolumn_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Foreignkeycolumn_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Sortable_Panels_TagHelper.cshtml", "TargetPath": "Views\\Sortable\\Sortable_Panels_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Index.cshtml", "TargetPath": "Views\\Pivotgrid\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Bar_Charts\\Index.cshtml", "TargetPath": "Views\\Range_Bar_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\DateInput\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Badge\\Templates_TagHelper.cshtml", "TargetPath": "Views\\Badge\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Multiple_Axes_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Multiple_Axes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Excel_Export_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\Excel_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Endless_Scrolling.cshtml", "TargetPath": "Views\\ListView\\Endless_Scrolling.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Pdf_Export.cshtml", "TargetPath": "Views\\Gantt\\Pdf_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Images_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Images_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\BasicUsage.cshtml", "TargetPath": "Views\\Upload\\BasicUsage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Editing_Custom_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Editing_Custom_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\MultiViewCalendar\\keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\panelbar.cshtml", "TargetPath": "Views\\Accessibility\\panelbar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Popover\\Tag_Helper.cshtml", "TargetPath": "Views\\Popover\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Items.cshtml", "TargetPath": "Views\\Form\\Items.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Color_Scheme_TagHelper.cshtml", "TargetPath": "Views\\HeatMap\\Color_Scheme_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\toolbar.cshtml", "TargetPath": "Views\\Accessibility\\toolbar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Financial\\Pdf_Export.cshtml", "TargetPath": "Views\\Financial\\Pdf_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Polar_Scatter_TagHelper.cshtml", "TargetPath": "Views\\Polar_Charts\\Polar_Scatter_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Sorting_Filtering.cshtml", "TargetPath": "Views\\Spreadsheet\\Sorting_Filtering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Rangeselection.cshtml", "TargetPath": "Views\\TimePicker\\Rangeselection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Checkboxes_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Checkboxes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\All_Tools.cshtml", "TargetPath": "Views\\Editor\\All_Tools.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\DataBinding.cshtml", "TargetPath": "Views\\ScrollView\\DataBinding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Events.cshtml", "TargetPath": "Views\\DateRangePicker\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\DeferredDemoButton.cshtml", "TargetPath": "Views\\Shared\\DeferredDemoButton.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Templates_TagHelper.cshtml", "TargetPath": "Views\\FloatingActionButton\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Index_TagHelper.cshtml", "TargetPath": "Views\\Notification\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Drag_Drop_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Drag_Drop_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Frozen_Columns.cshtml", "TargetPath": "Views\\TreeList\\Frozen_Columns.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Index.cshtml", "TargetPath": "Views\\Window\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Editing_TagHelper.cshtml", "TargetPath": "Views\\ListView\\Editing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PdfProcessing\\index.cshtml", "TargetPath": "Views\\PdfProcessing\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\FileManager\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Stacked100_Area_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Stacked100_Area_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\TaskBoard\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chat\\Healthcare_TagHelper.cshtml", "TargetPath": "Views\\Chat\\Healthcare_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Add_Remove_TagHelper.cshtml", "TargetPath": "Views\\TileLayout\\Add_Remove_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Contrast_Tool.cshtml", "TargetPath": "Views\\ColorPicker\\Contrast_Tool.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Sorting.cshtml", "TargetPath": "Views\\Grid\\Sorting.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\Index_TagHelper.cshtml", "TargetPath": "Views\\Diagram\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Server_GroupPaging_Virtualization_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Server_GroupPaging_Virtualization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\ToolBar\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\templates_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Crosshairs_TagHelper.cshtml", "TargetPath": "Views\\HeatMap\\Crosshairs_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Radar_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Waterfall_Charts\\Horizontal.cshtml", "TargetPath": "Views\\Waterfall_Charts\\Horizontal.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Events_TagHelper.cshtml", "TargetPath": "Views\\Upload\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Templates_TagHelper.cshtml", "TargetPath": "Views\\Upload\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Templates_TagHelper.cshtml", "TargetPath": "Views\\FileManager\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Globalization.cshtml", "TargetPath": "Views\\DatePicker\\Globalization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Index.cshtml", "TargetPath": "Views\\MultiSelect\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Globalization.cshtml", "TargetPath": "Views\\MaskedTextBox\\Globalization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\layout.cshtml", "TargetPath": "Views\\Diagram\\layout.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Events_TagHelper.cshtml", "TargetPath": "Views\\Stepper\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Waterfall_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Waterfall_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Webapi.cshtml", "TargetPath": "Views\\Grid\\Webapi.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Colors_TagHelper.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Colors_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\BottomNavigation\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Export_TagHelper.cshtml", "TargetPath": "Views\\Map\\Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\textbox.cshtml", "TargetPath": "Views\\Accessibility\\textbox.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\buttongroup.cshtml", "TargetPath": "Views\\Accessibility\\buttongroup.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Rangeselection.cshtml", "TargetPath": "Views\\DateTimePicker\\Rangeselection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Multiple_Axes_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Multiple_Axes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Upload\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\RadioGroup\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\GoogleTagManager.cshtml", "TargetPath": "Views\\Shared\\GoogleTagManager.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Index_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\Index_TagHelper.cshtml", "TargetPath": "Views\\Chart_Api\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Window\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Date_Axis_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Date_Axis_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Cards\\Types.cshtml", "TargetPath": "Views\\Cards\\Types.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\custom_datasource_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\custom_datasource_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\ImageBrowser.cshtml", "TargetPath": "Views\\Editor\\ImageBrowser.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Responsive_Panel\\Tag_Helper.cshtml", "TargetPath": "Views\\Responsive_Panel\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Bubble_Layer_TagHelper.cshtml", "TargetPath": "Views\\Map\\Bubble_Layer_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\icons.cshtml", "TargetPath": "Views\\Breadcrumb\\icons.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bullet_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Bullet_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\FileManager\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Hidden_Fields_TagHelper.cshtml", "TargetPath": "Views\\Form\\Hidden_Fields_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Templates_TagHelper.cshtml", "TargetPath": "Views\\Timeline\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radial_Gauge\\Scale_Options.cshtml", "TargetPath": "Views\\Radial_Gauge\\Scale_Options.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Resources_Grouping_Vertical_Virtual_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Resources_Grouping_Vertical_Virtual_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\TextBox\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\TextArea\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Floating_Label.cshtml", "TargetPath": "Views\\DropDownList\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\DateTime.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\DateTime.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\navigation_TagHelper.cshtml", "TargetPath": "Views\\Breadcrumb\\navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Rgb_Hex.cshtml", "TargetPath": "Views\\ColorPicker\\Rgb_Hex.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Visuals.cshtml", "TargetPath": "Views\\Bar_Charts\\Visuals.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Popover\\Events_TagHelper.cshtml", "TargetPath": "Views\\Popover\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Multiple_Axes.cshtml", "TargetPath": "Views\\Scatter_Charts\\Multiple_Axes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPalette\\Palette_Presets_TagHelper.cshtml", "TargetPath": "Views\\ColorPalette\\Palette_Presets_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Polar_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Button\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Templates.cshtml", "TargetPath": "Views\\TaskBoard\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Events_TagHelper.cshtml", "TargetPath": "Views\\TabStrip\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Arc_Gauge\\Colors_TagHelper.cshtml", "TargetPath": "Views\\Arc_Gauge\\Colors_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Api_TagHelper.cshtml", "TargetPath": "Views\\Rating\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Resources_Grouping_Hierarchical.cshtml", "TargetPath": "Views\\Scheduler\\Resources_Grouping_Hierarchical.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Frozen_Columns_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Frozen_Columns_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\right_to_left_support.cshtml", "TargetPath": "Views\\Breadcrumb\\right_to_left_support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Events.cshtml", "TargetPath": "Views\\Grid\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\Index.cshtml", "TargetPath": "Views\\Accessibility\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\editing_TagHelper.cshtml", "TargetPath": "Views\\Diagram\\editing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Scatter_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\RemoteDataSource_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\RemoteDataSource_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Index_TagHelper.cshtml", "TargetPath": "Views\\Wizard\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Appearance.cshtml", "TargetPath": "Views\\SplitButton\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Box_Plot_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Box_Plot_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Template_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PivotGridV2\\Local_Flat_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\PivotGridV2\\Local_Flat_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ImageEditor\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\ImageEditor\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Custom_Command.cshtml", "TargetPath": "Views\\Grid\\Custom_Command.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Area_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Waterfall_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Waterfall_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Appearance.cshtml", "TargetPath": "Views\\Signature\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Tag_Helper.cshtml", "TargetPath": "Views\\Window\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Right_To_Left_TagHelper.cshtml", "TargetPath": "Views\\TaskBoard\\Right_To_Left_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\WebSearchScript.cshtml", "TargetPath": "Views\\Shared\\WebSearchScript.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Globalization_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Globalization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\GroupPaging_TagHelper.cshtml", "TargetPath": "Views\\Grid\\GroupPaging_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Index.cshtml", "TargetPath": "Views\\Editor\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chip\\Api.cshtml", "TargetPath": "Views\\Chip\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Basic_Usage.cshtml", "TargetPath": "Views\\Scheduler\\Basic_Usage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Notification\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Error_Bars.cshtml", "TargetPath": "Views\\Area_Charts\\Error_Bars.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Index_TagHelper.cshtml", "TargetPath": "Views\\ProgressBar\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Custom_Datasource.cshtml", "TargetPath": "Views\\Grid\\Custom_Datasource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Server_Export_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Server_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Notification\\Api.cshtml", "TargetPath": "Views\\Notification\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Events.cshtml", "TargetPath": "Views\\NumericTextBox\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Api.cshtml", "TargetPath": "Views\\Rating\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\ProductViewModel.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\ProductViewModel.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Pdf_Export_TagHelper.cshtml", "TargetPath": "Views\\Pivotgrid\\Pdf_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\editing.cshtml", "TargetPath": "Views\\OrgChart\\editing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\template_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Sticky_Columns_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Sticky_Columns_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Constraints.cshtml", "TargetPath": "Views\\Sortable\\Constraints.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Waterfall_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Waterfall_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Validation_TagHelper.cshtml", "TargetPath": "Views\\MaskedTextBox\\Validation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Remote_Flat_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Pivotgrid\\Remote_Flat_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Api.cshtml", "TargetPath": "Views\\ToolBar\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\ColorGradient\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Appearance.cshtml", "TargetPath": "Views\\DateInput\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Dragdrop_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Dragdrop_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Component_Type.cshtml", "TargetPath": "Views\\TimePicker\\Component_Type.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Events_TagHelper.cshtml", "TargetPath": "Views\\Window\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Drag_Drop.cshtml", "TargetPath": "Views\\Grid\\Drag_Drop.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\ListBox\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Pdf_Export.cshtml", "TargetPath": "Views\\Scheduler\\Pdf_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Events_TagHelper.cshtml", "TargetPath": "Views\\RadioGroup\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Api_TagHelper.cshtml", "TargetPath": "Views\\TextBox\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Api_TagHelper.cshtml", "TargetPath": "Views\\Stepper\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Column_Virtualization_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Column_Virtualization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Selection.cshtml", "TargetPath": "Views\\ListView\\Selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Index.cshtml", "TargetPath": "Views\\ButtonGroup\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Images.cshtml", "TargetPath": "Views\\Menu\\Images.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Resources.cshtml", "TargetPath": "Views\\Scheduler\\Resources.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Smooth_Radar_Line.cshtml", "TargetPath": "Views\\Radar_Charts\\Smooth_Radar_Line.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Events.cshtml", "TargetPath": "Views\\Window\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Index.cshtml", "TargetPath": "Views\\TreeList\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ImageEditor\\Api_TagHelper.cshtml", "TargetPath": "Views\\ImageEditor\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Appearance.cshtml", "TargetPath": "Views\\DatePicker\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Templates.cshtml", "TargetPath": "Views\\FileManager\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Index_TagHelper.cshtml", "TargetPath": "Views\\TimePicker\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\CheckboxGroup\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Events_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Geojson.cshtml", "TargetPath": "Views\\Map\\Geojson.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Detailtemplate_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Detailtemplate_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Arc_Gauge\\Tag_Helper.cshtml", "TargetPath": "Views\\Arc_Gauge\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeMap\\Index.cshtml", "TargetPath": "Views\\TreeMap\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Tag_Helper.cshtml", "TargetPath": "Views\\TaskBoard\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Home\\HubSearch.cshtml", "TargetPath": "Views\\Home\\HubSearch.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Donut_Charts\\Donut_Labels_TagHelper.cshtml", "TargetPath": "Views\\Donut_Charts\\Donut_Labels_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Index_TagHelper.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pager\\Integration_TagHelper.cshtml", "TargetPath": "Views\\Pager\\Integration_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Events.cshtml", "TargetPath": "Views\\Spreadsheet\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Api.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bullet_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Bullet_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Logarithmic_Axis_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Logarithmic_Axis_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PDFViewer\\Events.cshtml", "TargetPath": "Views\\PDFViewer\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Index_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\Grouping_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\Grouping_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\right_to_left_support_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\right_to_left_support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Api_TagHelper.cshtml", "TargetPath": "Views\\MaskedTextBox\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\ListView\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\DropDownTree\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\CascadingMultiColumnComboBox.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\CascadingMultiColumnComboBox.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Tag_Helper.cshtml", "TargetPath": "Views\\ProgressBar\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ImageEditor\\Api.cshtml", "TargetPath": "Views\\ImageEditor\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MediaPlayer\\API.cshtml", "TargetPath": "Views\\MediaPlayer\\API.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\ImageBrowser_TagHelper.cshtml", "TargetPath": "Views\\Editor\\ImageBrowser_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Index.cshtml", "TargetPath": "Views\\ToolBar\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bubble_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Bubble_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Webapi_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Webapi_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ChipList\\Index_TagHelper.cshtml", "TargetPath": "Views\\ChipList\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MediaPlayer\\Events_TagHelper.cshtml", "TargetPath": "Views\\MediaPlayer\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Bubble_Layer.cshtml", "TargetPath": "Views\\Map\\Bubble_Layer.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Api_TagHelper.cshtml", "TargetPath": "Views\\ButtonGroup\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Filter_Row.cshtml", "TargetPath": "Views\\Grid\\Filter_Row.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Handlers.cshtml", "TargetPath": "Views\\Sortable\\Handlers.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\ColorPicker\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\Events_TagHelper.cshtml", "TargetPath": "Views\\ScrollView\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Api_TagHelper.cshtml", "TargetPath": "Views\\Slider\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\TimePicker\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Right_To_Left_TagHelper.cshtml", "TargetPath": "Views\\NumericTextBox\\Right_To_Left_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\events_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\right_to_left_support.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\right_to_left_support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Index.cshtml", "TargetPath": "Views\\Area_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\pdf_export.cshtml", "TargetPath": "Views\\Diagram\\pdf_export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Index.cshtml", "TargetPath": "Views\\Circular_Gauge\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Immutable_Elements_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Immutable_Elements_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Grouping.cshtml", "TargetPath": "Views\\ListView\\Grouping.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Api.cshtml", "TargetPath": "Views\\RadioGroup\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\Api_TagHelper.cshtml", "TargetPath": "Views\\ScrollView\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Grid\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Views_TagHelper.cshtml", "TargetPath": "Views\\FlatColorPicker\\Views_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radiobutton\\Appearance.cshtml", "TargetPath": "Views\\Radiobutton\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Basic_Usage_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Basic_Usage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\keyboard_navigation.cshtml", "TargetPath": "Views\\AutoComplete\\keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Signalr.cshtml", "TargetPath": "Views\\Grid\\Signalr.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\lineargauge.cshtml", "TargetPath": "Views\\Accessibility\\lineargauge.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Multicolumnheaders_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\Multicolumnheaders_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\FileManager\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Api.cshtml", "TargetPath": "Views\\Grid\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Checkbox\\Index_TagHelper.cshtml", "TargetPath": "Views\\Checkbox\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\splitbutton.cshtml", "TargetPath": "Views\\Accessibility\\splitbutton.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Editing_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Editing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Selection.cshtml", "TargetPath": "Views\\Rating\\Selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DataSource\\Tag_Helper.cshtml", "TargetPath": "Views\\DataSource\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Orientation_TagHelper.cshtml", "TargetPath": "Views\\Stepper\\Orientation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Events_TagHelper.cshtml", "TargetPath": "Views\\ExpansionPanel\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\FileManager\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Editing.cshtml", "TargetPath": "Views\\TaskBoard\\Editing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Component_Type_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Component_Type_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\ListView\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\ColorGradient\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Index.cshtml", "TargetPath": "Views\\Radar_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Contrast_Tool.cshtml", "TargetPath": "Views\\ColorGradient\\Contrast_Tool.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Arc_Gauge\\Export.cshtml", "TargetPath": "Views\\Arc_Gauge\\Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bubble_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Bubble_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\chip.cshtml", "TargetPath": "Views\\Accessibility\\chip.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Stacked_Bar.cshtml", "TargetPath": "Views\\Bar_Charts\\Stacked_Bar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Icons_TagHelper.cshtml", "TargetPath": "Views\\SplitButton\\Icons_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\MultiSelect\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Component_Type_TagHelper.cshtml", "TargetPath": "Views\\TimePicker\\Component_Type_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Search_Panel_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Search_Panel_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Api_TagHelper.cshtml", "TargetPath": "Views\\FileManager\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Index_TagHelper.cshtml", "TargetPath": "Views\\ButtonGroup\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Events_TagHelper.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Tag_Helper.cshtml", "TargetPath": "Views\\DatePicker\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Index_TagHelper.cshtml", "TargetPath": "Views\\Button\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\TimePicker\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Templates.cshtml", "TargetPath": "Views\\Pivotgrid\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Events.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Index.cshtml", "TargetPath": "Views\\Button\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Sizing_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Sizing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\BasicUsage_TagHelper.cshtml", "TargetPath": "Views\\Upload\\BasicUsage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Appearance.cshtml", "TargetPath": "Views\\DateRangePicker\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Barcode\\Api_TagHelper.cshtml", "TargetPath": "Views\\Barcode\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\RadioGroup\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditDropdown.cshtml", "TargetPath": "Views\\Shared\\EditDropdown.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Week_Column.cshtml", "TargetPath": "Views\\Calendar\\Week_Column.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Gap_Spacing_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Gap_Spacing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\spreadsheet.cshtml", "TargetPath": "Views\\Accessibility\\spreadsheet.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Templates_TagHelper.cshtml", "TargetPath": "Views\\BottomNavigation\\Templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ActionSheet\\Api_TagHelper.cshtml", "TargetPath": "Views\\ActionSheet\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pie_Charts\\Index.cshtml", "TargetPath": "Views\\Pie_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Index.cshtml", "TargetPath": "Views\\DatePicker\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\events.cshtml", "TargetPath": "Views\\AutoComplete\\events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Table_Editing.cshtml", "TargetPath": "Views\\Editor\\Table_Editing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Palette_Presets_TagHelper.cshtml", "TargetPath": "Views\\ColorPicker\\Palette_Presets_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Multiple_Axes.cshtml", "TargetPath": "Views\\Area_Charts\\Multiple_Axes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Adaptive_Rendering_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Adaptive_Rendering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Globalization_TagHelper.cshtml", "TargetPath": "Views\\NumericTextBox\\Globalization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\dropdownlist.cshtml", "TargetPath": "Views\\Accessibility\\dropdownlist.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ImageEditor\\Tag_Helper.cshtml", "TargetPath": "Views\\ImageEditor\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Api.cshtml", "TargetPath": "Views\\Stepper\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Remote_Flat_Data_Binding.cshtml", "TargetPath": "Views\\Pivotgrid\\Remote_Flat_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Events.cshtml", "TargetPath": "Views\\SplitButton\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\Api.cshtml", "TargetPath": "Views\\CheckboxGroup\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Scatter_Line.cshtml", "TargetPath": "Views\\Scatter_Charts\\Scatter_Line.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Alignment_TagHelper.cshtml", "TargetPath": "Views\\FloatingActionButton\\Alignment_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\index.cshtml", "TargetPath": "Views\\dialog\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Index.cshtml", "TargetPath": "Views\\Grid\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Images_TagHelper.cshtml", "TargetPath": "Views\\TabStrip\\Images_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Column_Menu.cshtml", "TargetPath": "Views\\Grid\\Column_Menu.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Persist_State.cshtml", "TargetPath": "Views\\Grid\\Persist_State.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\ThemeChooser.cshtml", "TargetPath": "Views\\Shared\\ThemeChooser.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Api_TagHelper.cshtml", "TargetPath": "Views\\RadioGroup\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Pan_And_Zoom_TagHelper.cshtml", "TargetPath": "Views\\HeatMap\\Pan_And_Zoom_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Pdf_Export_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Pdf_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\index.cshtml", "TargetPath": "Views\\Stepper\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\colorpicker.cshtml", "TargetPath": "Views\\Accessibility\\colorpicker.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Custom_Datasource_TagHelper.cshtml", "TargetPath": "Views\\ListView\\Custom_Datasource_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Column_Reordering_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Column_Reordering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Toolbar_Template.cshtml", "TargetPath": "Views\\Grid\\Toolbar_Template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\Index.cshtml", "TargetPath": "Views\\Diagram\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Donut_Charts\\Tag_Helper.cshtml", "TargetPath": "Views\\Donut_Charts\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Items_TagHelper.cshtml", "TargetPath": "Views\\DropDownButton\\Items_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\disabled_dates_TagHelper.cshtml", "TargetPath": "Views\\MultiViewCalendar\\disabled_dates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Icons.cshtml", "TargetPath": "Views\\Stepper\\Icons.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Images.cshtml", "TargetPath": "Views\\PanelBar\\Images.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Endless_Scrolling_Remote_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Endless_Scrolling_Remote_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Index.cshtml", "TargetPath": "Views\\FloatingActionButton\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Ajax.cshtml", "TargetPath": "Views\\TabStrip\\Ajax.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Grouped_Stacked_Bar.cshtml", "TargetPath": "Views\\Bar_Charts\\Grouped_Stacked_Bar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Floating_Label.cshtml", "TargetPath": "Views\\ComboBox\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Filter\\Operators.cshtml", "TargetPath": "Views\\Filter\\Operators.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\ButtonGroup\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Bar_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Range_Bar_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Date_Axis.cshtml", "TargetPath": "Views\\Line_Charts\\Date_Axis.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Api.cshtml", "TargetPath": "Views\\TabStrip\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\Breadcrumb\\keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Events_TagHelper.cshtml", "TargetPath": "Views\\DateInput\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Kinvey_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Kinvey_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Week_Column.cshtml", "TargetPath": "Views\\DatePicker\\Week_Column.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Events.cshtml", "TargetPath": "Views\\Calendar\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Index_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Template.cshtml", "TargetPath": "Views\\DatePicker\\Template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Index.cshtml", "TargetPath": "Views\\Tooltip\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Floating_Label.cshtml", "TargetPath": "Views\\DatePicker\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Index_TagHelper.cshtml", "TargetPath": "Views\\NumericTextBox\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\TagHelper.cshtml", "TargetPath": "Views\\TileLayout\\TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\ListView\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\Button\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Stacked100_Area.cshtml", "TargetPath": "Views\\Area_Charts\\Stacked100_Area.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Events_TagHelper.cshtml", "TargetPath": "Views\\ToolBar\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Events.cshtml", "TargetPath": "Views\\BottomNavigation\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Area_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Range_Area_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PDFViewer\\index.cshtml", "TargetPath": "Views\\PDFViewer\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\clientfiltering_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\clientfiltering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Appearance.cshtml", "TargetPath": "Views\\NumericTextBox\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\Tag_Helper.cshtml", "TargetPath": "Views\\AutoComplete\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\events_TagHelper.cshtml", "TargetPath": "Views\\Diagram\\events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\ThemeColors.cshtml", "TargetPath": "Views\\Shared\\ThemeColors.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Templates.cshtml", "TargetPath": "Views\\ListBox\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\Floating_Label.cshtml", "TargetPath": "Views\\AutoComplete\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\checkbox_selection_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\checkbox_selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Financial\\Panes.cshtml", "TargetPath": "Views\\Financial\\Panes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ZipLibrary\\index.cshtml", "TargetPath": "Views\\ZipLibrary\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\remote_data_binding_TagHelper.cshtml", "TargetPath": "Views\\Menu\\remote_data_binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Checkboxes.cshtml", "TargetPath": "Views\\TreeView\\Checkboxes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\search_panel.cshtml", "TargetPath": "Views\\TreeList\\search_panel.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Api_TagHelper.cshtml", "TargetPath": "Views\\ExpansionPanel\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Rangeselection_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Rangeselection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Selectaction.cshtml", "TargetPath": "Views\\Calendar\\Selectaction.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\right_to_left_support.cshtml", "TargetPath": "Views\\OrgChart\\right_to_left_support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Editing_Inline.cshtml", "TargetPath": "Views\\Grid\\Editing_Inline.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Crosshairs.cshtml", "TargetPath": "Views\\HeatMap\\Crosshairs.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Index.cshtml", "TargetPath": "Views\\Map\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\editing_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\editing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Area_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Range_Area_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Error_Bars.cshtml", "TargetPath": "Views\\Line_Charts\\Error_Bars.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Responsive_Panel\\Index.cshtml", "TargetPath": "Views\\Responsive_Panel\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\clientfiltering.cshtml", "TargetPath": "Views\\AutoComplete\\clientfiltering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\tag_helper.cshtml", "TargetPath": "Views\\OrgChart\\tag_helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Restriction.cshtml", "TargetPath": "Views\\Scheduler\\Restriction.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Home\\Index.cshtml", "TargetPath": "Views\\Home\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ChipList\\Index.cshtml", "TargetPath": "Views\\ChipList\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Api_TagHelper.cshtml", "TargetPath": "Views\\Signature\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Api_TagHelper.cshtml", "TargetPath": "Views\\FloatingActionButton\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\ListView\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPalette\\Api.cshtml", "TargetPath": "Views\\ColorPalette\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\ButtonGroup\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\arcgauge.cshtml", "TargetPath": "Views\\Accessibility\\arcgauge.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Filter\\Persist_State.cshtml", "TargetPath": "Views\\Filter\\Persist_State.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Disable_Dates.cshtml", "TargetPath": "Views\\DatePicker\\Disable_Dates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Index_TagHelper.cshtml", "TargetPath": "Views\\TextBox\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Floating_Label.cshtml", "TargetPath": "Views\\TimePicker\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Upload\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Donut_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Donut_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Selected_Date_And_Range_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Selected_Date_And_Range_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ChipList\\Appearance.cshtml", "TargetPath": "Views\\ChipList\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Smooth_Scatter_Line_TagHelper.cshtml", "TargetPath": "Views\\Scatter_Charts\\Smooth_Scatter_Line_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\RemoteDataSource.cshtml", "TargetPath": "Views\\DropDownList\\RemoteDataSource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Virtualization_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Virtualization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\scheduler-month.cshtml", "TargetPath": "Views\\Accessibility\\scheduler-month.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\DropDownTree\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\Currency.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\Currency.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Selected_Date_And_Range.cshtml", "TargetPath": "Views\\Gantt\\Selected_Date_And_Range.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\imageeditor.cshtml", "TargetPath": "Views\\Accessibility\\imageeditor.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Custom_Editors.cshtml", "TargetPath": "Views\\Spreadsheet\\Custom_Editors.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Index.cshtml", "TargetPath": "Views\\PanelBar\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\events_TagHelper.cshtml", "TargetPath": "Views\\dialog\\events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Events_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Indeterminate_Progress.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Indeterminate_Progress.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\expansionpanel.cshtml", "TargetPath": "Views\\Accessibility\\expansionpanel.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Events_TagHelper.cshtml", "TargetPath": "Views\\Rating\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Selection.cshtml", "TargetPath": "Views\\ButtonGroup\\Selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\Tag_Helper.cshtml", "TargetPath": "Views\\ScrollView\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\ThemeBuilderButton.cshtml", "TargetPath": "Views\\Shared\\ThemeBuilderButton.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Api.cshtml", "TargetPath": "Views\\TextArea\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\api.cshtml", "TargetPath": "Views\\TreeList\\api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Index_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Details.cshtml", "TargetPath": "Views\\Tooltip\\Details.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Api_TagHelper.cshtml", "TargetPath": "Views\\TimePicker\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Events.cshtml", "TargetPath": "Views\\Stepper\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Index_TagHelper.cshtml", "TargetPath": "Views\\Window\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Api_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Tag_Helper.cshtml", "TargetPath": "Views\\Line_Charts\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Colors.cshtml", "TargetPath": "Views\\Circular_Gauge\\Colors.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Templates.cshtml", "TargetPath": "Views\\FloatingActionButton\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\DateInput\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Notes.cshtml", "TargetPath": "Views\\Line_Charts\\Notes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\events.cshtml", "TargetPath": "Views\\dialog\\events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\CheckboxGroup\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\HeatMap\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Ajax_TagHelper.cshtml", "TargetPath": "Views\\Window\\Ajax_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Scrollable_Tabs.cshtml", "TargetPath": "Views\\TabStrip\\Scrollable_Tabs.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Index.cshtml", "TargetPath": "Views\\HeatMap\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Index_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\Index_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Events.cshtml", "TargetPath": "Views\\TileLayout\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\template.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Events.cshtml", "TargetPath": "Views\\ColorGradient\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Polar_Area_TagHelper.cshtml", "TargetPath": "Views\\Polar_Charts\\Polar_Area_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Columnsettings.cshtml", "TargetPath": "Views\\Grid\\Columnsettings.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RippleContainer\\Index.cshtml", "TargetPath": "Views\\RippleContainer\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Icons.cshtml", "TargetPath": "Views\\SplitButton\\Icons.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Error_Bars.cshtml", "TargetPath": "Views\\Bar_Charts\\Error_Bars.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\FlatColorPicker\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Api_TagHelper.cshtml", "TargetPath": "Views\\TaskBoard\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\week_column.cshtml", "TargetPath": "Views\\MultiViewCalendar\\week_column.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Items_TagHelper.cshtml", "TargetPath": "Views\\BottomNavigation\\Items_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\grid-hierarchy-and-filter-row.cshtml", "TargetPath": "Views\\Accessibility\\grid-hierarchy-and-filter-row.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Tag_Helper.cshtml", "TargetPath": "Views\\TreeList\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Appearance.cshtml", "TargetPath": "Views\\MultiSelect\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Custom_datasource_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\Custom_datasource_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\api.cshtml", "TargetPath": "Views\\OrgChart\\api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Customajaxbinding_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Customajaxbinding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Globalization_TagHelper.cshtml", "TargetPath": "Views\\DateInput\\Globalization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Stacked100_Bar.cshtml", "TargetPath": "Views\\Bar_Charts\\Stacked100_Bar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Radar_Column_TagHelper.cshtml", "TargetPath": "Views\\Radar_Charts\\Radar_Column_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DataSource\\Index.cshtml", "TargetPath": "Views\\DataSource\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Disable_Dates.cshtml", "TargetPath": "Views\\Calendar\\Disable_Dates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Rgb_Hex.cshtml", "TargetPath": "Views\\ColorGradient\\Rgb_Hex.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ScrollView\\Index.cshtml", "TargetPath": "Views\\ScrollView\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\DateRangePicker\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Ajax_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\Ajax_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\treelist.cshtml", "TargetPath": "Views\\Accessibility\\treelist.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\rtl.cshtml", "TargetPath": "Views\\Chart_Api\\rtl.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Index.cshtml", "TargetPath": "Views\\ComboBox\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Immutable_Elements.cshtml", "TargetPath": "Views\\Editor\\Immutable_Elements.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Tab_Position.cshtml", "TargetPath": "Views\\TabStrip\\Tab_Position.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Cards\\Media.cshtml", "TargetPath": "Views\\Cards\\Media.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\gantt.cshtml", "TargetPath": "Views\\Accessibility\\gantt.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Api_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Grouped_Data.cshtml", "TargetPath": "Views\\Scatter_Charts\\Grouped_Data.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Images_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\Images_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Api_TagHelper.cshtml", "TargetPath": "Views\\DropDownButton\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Right_To_Left_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Right_To_Left_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Events.cshtml", "TargetPath": "Views\\Rating\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Index.cshtml", "TargetPath": "Views\\Slider\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Events_TagHelper.cshtml", "TargetPath": "Views\\BottomNavigation\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Orientation.cshtml", "TargetPath": "Views\\Menu\\Orientation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Appearance.cshtml", "TargetPath": "Views\\TextBox\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\ForeignkeycolumnBinding_TagHelper.cshtml", "TargetPath": "Views\\Grid\\ForeignkeycolumnBinding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\floatingactionbutton.cshtml", "TargetPath": "Views\\Accessibility\\floatingactionbutton.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\scheduler.cshtml", "TargetPath": "Views\\Accessibility\\scheduler.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Multicolumnheaders_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Multicolumnheaders_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Index.cshtml", "TargetPath": "Views\\Spreadsheet\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sparklines\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Sparklines\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Index_TagHelper.cshtml", "TargetPath": "Views\\Sortable\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\ListBox\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\WebApi_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\WebApi_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\scheduler-timeline.cshtml", "TargetPath": "Views\\Accessibility\\scheduler-timeline.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPalette\\Palette_Presets.cshtml", "TargetPath": "Views\\ColorPalette\\Palette_Presets.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Events_TagHelper.cshtml", "TargetPath": "Views\\ColorGradient\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Appearance.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Layout.cshtml", "TargetPath": "Views\\Form\\Layout.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Api_TagHelper.cshtml", "TargetPath": "Views\\ColorPicker\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Cell_Comments_TagHelper.cshtml", "TargetPath": "Views\\Spreadsheet\\Cell_Comments_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Financial\\Panes_TagHelper.cshtml", "TargetPath": "Views\\Financial\\Panes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Resources_Grouping_Horizontal_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Resources_Grouping_Horizontal_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Ajax.cshtml", "TargetPath": "Views\\Window\\Ajax.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\TreeView\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Waterfall_Charts\\Horizontal_TagHelper.cshtml", "TargetPath": "Views\\Waterfall_Charts\\Horizontal_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bubble_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Bubble_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\selection_TagHelper.cshtml", "TargetPath": "Views\\MultiViewCalendar\\selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Events.cshtml", "TargetPath": "Views\\PanelBar\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MediaPlayer\\Playlist_TagHelper.cshtml", "TargetPath": "Views\\MediaPlayer\\Playlist_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\SignalR.cshtml", "TargetPath": "Views\\Scheduler\\SignalR.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Filter_Row.cshtml", "TargetPath": "Views\\TreeList\\Filter_Row.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\icons_TagHelper.cshtml", "TargetPath": "Views\\Breadcrumb\\icons_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\DateInput\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Index.cshtml", "TargetPath": "Views\\Line_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Waterfall_Charts\\Tag_Helper.cshtml", "TargetPath": "Views\\Waterfall_Charts\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\ClientFiltering.cshtml", "TargetPath": "Views\\DropDownList\\ClientFiltering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Switch\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Api.cshtml", "TargetPath": "Views\\Tooltip\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Basic_Usage.cshtml", "TargetPath": "Views\\TreeView\\Basic_Usage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\ColorPicker\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Floating_Label.cshtml", "TargetPath": "Views\\DropDownTree\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pager\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Pager\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Animation.cshtml", "TargetPath": "Views\\TreeView\\Animation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\events_TagHelper.cshtml", "TargetPath": "Views\\CheckboxGroup\\events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Grid\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\DropDownButton\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Globalization.cshtml", "TargetPath": "Views\\Grid\\Globalization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Timeline_Night.cshtml", "TargetPath": "Views\\Scheduler\\Timeline_Night.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Filter_Multi_Checkboxes.cshtml", "TargetPath": "Views\\Grid\\Filter_Multi_Checkboxes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\tilelayout.cshtml", "TargetPath": "Views\\Accessibility\\tilelayout.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\DropDownButton\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Index.cshtml", "TargetPath": "Views\\Wizard\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Api_TagHelper.cshtml", "TargetPath": "Views\\Switch\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Arc_Gauge\\Circular_TagHelper.cshtml", "TargetPath": "Views\\Arc_Gauge\\Circular_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\map.cshtml", "TargetPath": "Views\\Accessibility\\map.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Api_TagHelper.cshtml", "TargetPath": "Views\\ListBox\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Events_TagHelper.cshtml", "TargetPath": "Views\\Sortable\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Virtualization.cshtml", "TargetPath": "Views\\MultiSelect\\Virtualization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\Pdf_Export_TagHelper.cshtml", "TargetPath": "Views\\Chart_Api\\Pdf_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Ajax.cshtml", "TargetPath": "Views\\Splitter\\Ajax.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Resizing_TagHelper.cshtml", "TargetPath": "Views\\ToolBar\\Resizing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Cards\\Orientation.cshtml", "TargetPath": "Views\\Cards\\Orientation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Events.cshtml", "TargetPath": "Views\\Map\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\remote_data_binding_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\remote_data_binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Index.cshtml", "TargetPath": "Views\\ProgressBar\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\slider.cshtml", "TargetPath": "Views\\Accessibility\\slider.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Donut_Charts\\Index.cshtml", "TargetPath": "Views\\Donut_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Plotbands.cshtml", "TargetPath": "Views\\Bar_Charts\\Plotbands.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Kinvey.cshtml", "TargetPath": "Views\\Grid\\Kinvey.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\editing_TagHelper.cshtml", "TargetPath": "Views\\Breadcrumb\\editing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Appearance.cshtml", "TargetPath": "Views\\DropDownList\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Selection_TagHelper.cshtml", "TargetPath": "Views\\ButtonGroup\\Selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Events_TagHelper.cshtml", "TargetPath": "Views\\Timeline\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Events.cshtml", "TargetPath": "Views\\Scheduler\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Custom_Tools.cshtml", "TargetPath": "Views\\Editor\\Custom_Tools.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Qrcode\\Image.cshtml", "TargetPath": "Views\\Qrcode\\Image.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radial_Gauge\\Scale_Options_TagHelper.cshtml", "TargetPath": "Views\\Radial_Gauge\\Scale_Options_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Avatar\\Tag_Helper.cshtml", "TargetPath": "Views\\Avatar\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadprocessing\\index.cshtml", "TargetPath": "Views\\Spreadprocessing\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\GroupPaging.cshtml", "TargetPath": "Views\\Grid\\GroupPaging.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Index.cshtml", "TargetPath": "Views\\Calendar\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Events_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Gap_Spacing.cshtml", "TargetPath": "Views\\Bar_Charts\\Gap_Spacing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radar_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Radar_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Filter\\Index_TagHelper.cshtml", "TargetPath": "Views\\Filter\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\DirectoryUpload_TagHelper.cshtml", "TargetPath": "Views\\Upload\\DirectoryUpload_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Api.cshtml", "TargetPath": "Views\\Signature\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Polar_Scatter.cshtml", "TargetPath": "Views\\Polar_Charts\\Polar_Scatter.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\Floating_Label.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Grouped_Data.cshtml", "TargetPath": "Views\\Line_Charts\\Grouped_Data.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Scrollable_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Scrollable_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Financial\\stock_history.cshtml", "TargetPath": "Views\\Financial\\stock_history.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Table_Editing_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Table_Editing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Index_TagHelper.cshtml", "TargetPath": "Views\\Map\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\ButtonGroup\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\custom_datasource.cshtml", "TargetPath": "Views\\ComboBox\\custom_datasource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Templates.cshtml", "TargetPath": "Views\\BottomNavigation\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PDFViewer\\Dpl_Processing_TagHelper.cshtml", "TargetPath": "Views\\PDFViewer\\Dpl_Processing_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Keyboard_navigation.cshtml", "TargetPath": "Views\\BottomNavigation\\Keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Export_Image_TagHelper.cshtml", "TargetPath": "Views\\Signature\\Export_Image_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Images_TagHelper.cshtml", "TargetPath": "Views\\Button\\Images_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Styles.cshtml", "TargetPath": "Views\\Editor\\Styles.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\client_side_paging.cshtml", "TargetPath": "Views\\TreeList\\client_side_paging.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\multiple_views_TagHelper.cshtml", "TargetPath": "Views\\MultiViewCalendar\\multiple_views_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Globalization.cshtml", "TargetPath": "Views\\DateTimePicker\\Globalization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\ClientFiltering_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\ClientFiltering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Timeline\\Shared_DataSource_TagHelper.cshtml", "TargetPath": "Views\\Timeline\\Shared_DataSource_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\serverfiltering_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\serverfiltering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListBox\\Tag_Helper.cshtml", "TargetPath": "Views\\ListBox\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Api_TagHelper.cshtml", "TargetPath": "Views\\TextArea\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Bar_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Range_Bar_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Sorting_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Sorting_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Virtualization.cshtml", "TargetPath": "Views\\DropDownList\\Virtualization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Template.cshtml", "TargetPath": "Views\\MultiSelect\\Template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\CascadingDropDownList.cshtml", "TargetPath": "Views\\DropDownList\\CascadingDropDownList.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Filter\\Index.cshtml", "TargetPath": "Views\\Filter\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ChipList\\Api_TagHelper.cshtml", "TargetPath": "Views\\ChipList\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\editing.cshtml", "TargetPath": "Views\\Diagram\\editing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Stepper\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Qrcode\\Index.cshtml", "TargetPath": "Views\\Qrcode\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Api_TagHelper.cshtml", "TargetPath": "Views\\Tooltip\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Calendar\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\right_to_left_support.cshtml", "TargetPath": "Views\\ComboBox\\right_to_left_support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\appbar.cshtml", "TargetPath": "Views\\Accessibility\\appbar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Stacked100_Bar_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Stacked100_Bar_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Index_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\index_TagHelper.cshtml", "TargetPath": "Views\\Stepper\\index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Disable_Dates_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Disable_Dates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Virtualization_Remote_Data_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Virtualization_Remote_Data_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\scheduler-year.cshtml", "TargetPath": "Views\\Accessibility\\scheduler-year.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Tag_Helper.cshtml", "TargetPath": "Views\\Button\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Stacked100_Line.cshtml", "TargetPath": "Views\\Line_Charts\\Stacked100_Line.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\barcode.cshtml", "TargetPath": "Views\\Accessibility\\barcode.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Disable_Dates_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Disable_Dates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Polar_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Button\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Label_TagHelper.cshtml", "TargetPath": "Views\\Rating\\Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Contrast_Tool_TagHelper.cshtml", "TargetPath": "Views\\FlatColorPicker\\Contrast_Tool_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ChipList\\Events_TagHelper.cshtml", "TargetPath": "Views\\ChipList\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DataSource\\Shared_DataSource.cshtml", "TargetPath": "Views\\DataSource\\Shared_DataSource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Tag_Helper.cshtml", "TargetPath": "Views\\DropDownList\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Events_TagHelper.cshtml", "TargetPath": "Views\\Signature\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Area_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Range_Area_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\appearance_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Index.cshtml", "TargetPath": "Views\\ExpansionPanel\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\dialog\\keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Context_Menu.cshtml", "TargetPath": "Views\\Menu\\Context_Menu.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Local_data_binding.cshtml", "TargetPath": "Views\\Line_Charts\\Local_data_binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Right_To_Left_TagHelper.cshtml", "TargetPath": "Views\\TabStrip\\Right_To_Left_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Snippets.cshtml", "TargetPath": "Views\\Editor\\Snippets.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Barcode\\Index_TagHelper.cshtml", "TargetPath": "Views\\Barcode\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ChipList\\Events.cshtml", "TargetPath": "Views\\ChipList\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\SearchResults.cshtml", "TargetPath": "Views\\Shared\\SearchResults.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\events.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\grid-edit.cshtml", "TargetPath": "Views\\Accessibility\\grid-edit.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\timeline-horizontal.cshtml", "TargetPath": "Views\\Accessibility\\timeline-horizontal.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Index_TagHelper.cshtml", "TargetPath": "Views\\FlatColorPicker\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateRangePicker\\Tag_Helper.cshtml", "TargetPath": "Views\\DateRangePicker\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\filemanager-grid.cshtml", "TargetPath": "Views\\Accessibility\\filemanager-grid.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\api.cshtml", "TargetPath": "Views\\Breadcrumb\\api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Basic_Usage_TagHelper.cshtml", "TargetPath": "Views\\Form\\Basic_Usage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\dropdowntree.cshtml", "TargetPath": "Views\\Accessibility\\dropdowntree.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Rgb_Hex_TagHelper.cshtml", "TargetPath": "Views\\ColorGradient\\Rgb_Hex_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\keyboard_navigation.cshtml", "TargetPath": "Views\\OrgChart\\keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Events.cshtml", "TargetPath": "Views\\FloatingActionButton\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Tag_Helper.cshtml", "TargetPath": "Views\\Form\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Basic_Usage.cshtml", "TargetPath": "Views\\FloatingActionButton\\Basic_Usage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\mini_TagHelper.cshtml", "TargetPath": "Views\\Drawer\\mini_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\WebApi.cshtml", "TargetPath": "Views\\Scheduler\\WebApi.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\calendar.cshtml", "TargetPath": "Views\\Accessibility\\calendar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Color_Scheme.cshtml", "TargetPath": "Views\\HeatMap\\Color_Scheme.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Floating_Label.cshtml", "TargetPath": "Views\\TextArea\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Api.cshtml", "TargetPath": "Views\\PanelBar\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PivotGridV2\\templates.cshtml", "TargetPath": "Views\\PivotGridV2\\templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\TaskBoard\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Rowtemplate.cshtml", "TargetPath": "Views\\TreeList\\Rowtemplate.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\template.cshtml", "TargetPath": "Views\\AutoComplete\\template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Cards\\Layout.cshtml", "TargetPath": "Views\\Cards\\Layout.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\virtualization_TagHelper.cshtml", "TargetPath": "Views\\AutoComplete\\virtualization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Index.cshtml", "TargetPath": "Views\\Splitter\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Linear_Gauge\\Multiple_Pointers.cshtml", "TargetPath": "Views\\Linear_Gauge\\Multiple_Pointers.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\grouping_by_parent.cshtml", "TargetPath": "Views\\OrgChart\\grouping_by_parent.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Api.cshtml", "TargetPath": "Views\\Gantt\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\chart.cshtml", "TargetPath": "Views\\Accessibility\\chart.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\Footer.cshtml", "TargetPath": "Views\\Shared\\Footer.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Cards\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Cards\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPalette\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\ColorPalette\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Linear_Gauge\\Index_TagHelper.cshtml", "TargetPath": "Views\\Linear_Gauge\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextBox\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\TextBox\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Events_TagHelper.cshtml", "TargetPath": "Views\\MaskedTextBox\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Floating_Label.cshtml", "TargetPath": "Views\\MaskedTextBox\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Index.cshtml", "TargetPath": "Views\\SplitButton\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\keyboard_navigation.cshtml", "TargetPath": "Views\\MultiViewCalendar\\keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Kpi.cshtml", "TargetPath": "Views\\Pivotgrid\\Kpi.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ToolBar\\Integration.cshtml", "TargetPath": "Views\\ToolBar\\Integration.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Donut_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Donut_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\treeview.cshtml", "TargetPath": "Views\\Accessibility\\treeview.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeMap\\Events.cshtml", "TargetPath": "Views\\TreeMap\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\circulargauge.cshtml", "TargetPath": "Views\\Accessibility\\circulargauge.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Component_Type_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Component_Type_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Switch\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\index.cshtml", "TargetPath": "Views\\Breadcrumb\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Custom_Datasource.cshtml", "TargetPath": "Views\\ListView\\Custom_Datasource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\appearance.cshtml", "TargetPath": "Views\\AutoComplete\\appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\right_to_left_support_TagHelper.cshtml", "TargetPath": "Views\\Breadcrumb\\right_to_left_support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\events.cshtml", "TargetPath": "Views\\Breadcrumb\\events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Index.cshtml", "TargetPath": "Views\\ColorPicker\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\MaskedTextBox\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Visuals_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Visuals_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Funnel_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Funnel_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Gantt\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Column_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Column_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Index.cshtml", "TargetPath": "Views\\FileManager\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Persist_State_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Persist_State_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Upload\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Odata_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Odata_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Custom_Editors_TagHelper.cshtml", "TargetPath": "Views\\Spreadsheet\\Custom_Editors_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MediaPlayer\\Index.cshtml", "TargetPath": "Views\\MediaPlayer\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Api_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\API_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\API_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\local_data_binding.cshtml", "TargetPath": "Views\\PanelBar\\local_data_binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Customlabel.cshtml", "TargetPath": "Views\\ProgressBar\\Customlabel.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Date_Axis.cshtml", "TargetPath": "Views\\Scatter_Charts\\Date_Axis.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Index.cshtml", "TargetPath": "Views\\Bar_Charts\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Adaptive_Slot_Height.cshtml", "TargetPath": "Views\\Scheduler\\Adaptive_Slot_Height.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Floating_Label.cshtml", "TargetPath": "Views\\MultiSelect\\Floating_Label.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\events.cshtml", "TargetPath": "Views\\OrgChart\\events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Events_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Filter_Row_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Filter_Row_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Basic_Usage_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Basic_Usage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Index.cshtml", "TargetPath": "Views\\TabStrip\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\DropDownTree\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PdfProcessing\\bar_chart_export.cshtml", "TargetPath": "Views\\PdfProcessing\\bar_chart_export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Splitter\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Wizard\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\right_to_left_support_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\right_to_left_support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Basic_Usage.cshtml", "TargetPath": "Views\\Grid\\Basic_Usage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\wizard.cshtml", "TargetPath": "Views\\Accessibility\\wizard.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\keyboard_navigation.cshtml", "TargetPath": "Views\\TreeList\\keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Linear_Gauge\\Scale_Options_TagHelper.cshtml", "TargetPath": "Views\\Linear_Gauge\\Scale_Options_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ImageEditor\\Events.cshtml", "TargetPath": "Views\\ImageEditor\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimePicker\\Appearance.cshtml", "TargetPath": "Views\\TimePicker\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Linear_Gauge\\Index.cshtml", "TargetPath": "Views\\Linear_Gauge\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\column_reordering.cshtml", "TargetPath": "Views\\TreeList\\column_reordering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pager\\Tag_Helper.cshtml", "TargetPath": "Views\\Pager\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\splitter.cshtml", "TargetPath": "Views\\Accessibility\\splitter.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Pager_Functionality.cshtml", "TargetPath": "Views\\Grid\\Pager_Functionality.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Index.cshtml", "TargetPath": "Views\\Form\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Api_TagHelper.cshtml", "TargetPath": "Views\\Map\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\multiselect.cshtml", "TargetPath": "Views\\Accessibility\\multiselect.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Contrast_Tool.cshtml", "TargetPath": "Views\\FlatColorPicker\\Contrast_Tool.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Cards\\Drag_And_Drop.cshtml", "TargetPath": "Views\\Cards\\Drag_And_Drop.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Step_Line_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Step_Line_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Api_TagHelper.cshtml", "TargetPath": "Views\\DateInput\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\customdropzone.cshtml", "TargetPath": "Views\\Upload\\customdropzone.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Menu\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Menu\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Excel_Export_TagHelper.cshtml", "TargetPath": "Views\\Pivotgrid\\Excel_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ActionSheet\\Keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\ActionSheet\\Keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\Signature\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Sortable_Panels.cshtml", "TargetPath": "Views\\Sortable\\Sortable_Panels.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sparklines\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Sparklines\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Search_Events_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Search_Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Api_TagHelper.cshtml", "TargetPath": "Views\\Button\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Async_TagHelper.cshtml", "TargetPath": "Views\\Upload\\Async_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Spreadsheet\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\custom_datasource.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\custom_datasource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Tooltip.cshtml", "TargetPath": "Views\\Rating\\Tooltip.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\validation_TagHelper.cshtml", "TargetPath": "Views\\Upload\\validation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Selection_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Selection_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Events_TagHelper.cshtml", "TargetPath": "Views\\Splitter\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\scheduler-agenda.cshtml", "TargetPath": "Views\\Accessibility\\scheduler-agenda.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\events_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Date_axis_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Date_axis_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Rgb_Hex_TagHelper.cshtml", "TargetPath": "Views\\FlatColorPicker\\Rgb_Hex_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ButtonGroup\\Icons_TagHelper.cshtml", "TargetPath": "Views\\ButtonGroup\\Icons_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Templates.cshtml", "TargetPath": "Views\\Rating\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Linkedlists.cshtml", "TargetPath": "Views\\Sortable\\Linkedlists.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_Gauge\\Scale_Options.cshtml", "TargetPath": "Views\\Circular_Gauge\\Scale_Options.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Image_Preview_TagHelper.cshtml", "TargetPath": "Views\\FileManager\\Image_Preview_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Sizing.cshtml", "TargetPath": "Views\\Grid\\Sizing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Server_Export.cshtml", "TargetPath": "Views\\Grid\\Server_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Grouped_Data_TagHelper.cshtml", "TargetPath": "Views\\Scatter_Charts\\Grouped_Data_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Radial_Gauge\\Multiple_Pointers_TagHelper.cshtml", "TargetPath": "Views\\Radial_Gauge\\Multiple_Pointers_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\multiple_views.cshtml", "TargetPath": "Views\\MultiViewCalendar\\multiple_views.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Right_To_Left_TagHelper.cshtml", "TargetPath": "Views\\Slider\\Right_To_Left_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Local_data_binding_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Local_data_binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\NumericTextBox\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TabStrip\\Animation.cshtml", "TargetPath": "Views\\TabStrip\\Animation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PdfProcessing\\read_write_form_fields.cshtml", "TargetPath": "Views\\PdfProcessing\\read_write_form_fields.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Breadcrumb\\navigation.cshtml", "TargetPath": "Views\\Breadcrumb\\navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Filter_Menu_Customization_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Filter_Menu_Customization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\client_side_paging_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\client_side_paging_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Tag_Helper.cshtml", "TargetPath": "Views\\PanelBar\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\HeatMap\\Markers.cshtml", "TargetPath": "Views\\HeatMap\\Markers.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Grid\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Index_TagHelper.cshtml", "TargetPath": "Views\\FileManager\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Animation_TagHelper.cshtml", "TargetPath": "Views\\Window\\Animation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\FloatingActionButton\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Operation_Modes.cshtml", "TargetPath": "Views\\Stepper\\Operation_Modes.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Tag_Helper.cshtml", "TargetPath": "Views\\Upload\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Remote_Markers.cshtml", "TargetPath": "Views\\Map\\Remote_Markers.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ProgressBar\\Api_TagHelper.cshtml", "TargetPath": "Views\\ProgressBar\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Captcha\\index_TagHelper.cshtml", "TargetPath": "Views\\Captcha\\index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Icons.cshtml", "TargetPath": "Views\\DropDownButton\\Icons.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Date_axis.cshtml", "TargetPath": "Views\\Bar_Charts\\Date_axis.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Server_Side_Pdf_Export_TagHelper.cshtml", "TargetPath": "Views\\Spreadsheet\\Server_Side_Pdf_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sortable\\Index.cshtml", "TargetPath": "Views\\Sortable\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\events.cshtml", "TargetPath": "Views\\TreeList\\events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\DateInput\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Form\\Validation.cshtml", "TargetPath": "Views\\Form\\Validation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chip\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\Chip\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ActionSheet\\Keyboard_navigation.cshtml", "TargetPath": "Views\\ActionSheet\\Keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Layout_TagHelper.cshtml", "TargetPath": "Views\\Stepper\\Layout_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Multiple_Axes_TagHelper.cshtml", "TargetPath": "Views\\Scatter_Charts\\Multiple_Axes_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Api.cshtml", "TargetPath": "Views\\FileManager\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Tag_Helper.cshtml", "TargetPath": "Views\\MaskedTextBox\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chart_Api\\rtl_TagHelper.cshtml", "TargetPath": "Views\\Chart_Api\\rtl_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\ServerFiltering_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\ServerFiltering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SkeletonContainer\\Index.cshtml", "TargetPath": "Views\\SkeletonContainer\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\colorpalette.cshtml", "TargetPath": "Views\\Accessibility\\colorpalette.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Stepper\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\RadioGroup\\Tag_Helper.cshtml", "TargetPath": "Views\\RadioGroup\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Api.cshtml", "TargetPath": "Views\\Scheduler\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\Integer.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\Integer.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Appearance_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Appearance_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ExpansionPanel\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\ExpansionPanel\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\multiviewcalendar.cshtml", "TargetPath": "Views\\Accessibility\\multiviewcalendar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Badge\\Tag_Helper.cshtml", "TargetPath": "Views\\Badge\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Button\\Badges.cshtml", "TargetPath": "Views\\Button\\Badges.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Column_Resizing.cshtml", "TargetPath": "Views\\Grid\\Column_Resizing.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Events.cshtml", "TargetPath": "Views\\Splitter\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Badge\\Appearance.cshtml", "TargetPath": "Views\\Badge\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Polar_Charts\\Tag_Helper.cshtml", "TargetPath": "Views\\Polar_Charts\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\Tag_Helper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\signature.cshtml", "TargetPath": "Views\\Accessibility\\signature.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Custom_Datasource_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Custom_Datasource_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Shortcuts_TagHelper.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Shortcuts_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Popover\\Events.cshtml", "TargetPath": "Views\\Popover\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\ClientCategory.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\ClientCategory.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Rating\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Rating\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\Sidebar.cshtml", "TargetPath": "Views\\Shared\\Sidebar.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pager\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Pager\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Templates.cshtml", "TargetPath": "Views\\Upload\\Templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\right_to_left_TagHelper.cshtml", "TargetPath": "Views\\ComboBox\\right_to_left_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Resources_Grouping_Vertical_Virtual.cshtml", "TargetPath": "Views\\Scheduler\\Resources_Grouping_Vertical_Virtual.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Animation_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\Animation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\ResultTagHelper.cshtml", "TargetPath": "Views\\Upload\\ResultTagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Tag_Helper.cshtml", "TargetPath": "Views\\Map\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DragDrop\\Index.cshtml", "TargetPath": "Views\\DragDrop\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pivotgrid\\Pdf_Export.cshtml", "TargetPath": "Views\\Pivotgrid\\Pdf_Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Index_TagHelper.cshtml", "TargetPath": "Views\\MaskedTextBox\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\editing_incell_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\editing_incell_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Loader\\Tag_Helper.cshtml", "TargetPath": "Views\\Loader\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Palette.cshtml", "TargetPath": "Views\\ColorPicker\\Palette.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Window\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Box_Plot_Charts\\Vertical_TagHelper.cshtml", "TargetPath": "Views\\Box_Plot_Charts\\Vertical_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MaskedTextBox\\Events.cshtml", "TargetPath": "Views\\MaskedTextBox\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\CheckboxGroup\\Layout.cshtml", "TargetPath": "Views\\CheckboxGroup\\Layout.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiViewCalendar\\selection.cshtml", "TargetPath": "Views\\MultiViewCalendar\\selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Editing_Inline_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Editing_Inline_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Week_Column_TagHelper.cshtml", "TargetPath": "Views\\DateTimePicker\\Week_Column_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Api_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Form_Integration_TagHelper.cshtml", "TargetPath": "Views\\Signature\\Form_Integration_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Donut_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Donut_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Custom_Datasource_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Custom_Datasource_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Events.cshtml", "TargetPath": "Views\\DateInput\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sparklines\\Index.cshtml", "TargetPath": "Views\\Sparklines\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Error_Bars_TagHelper.cshtml", "TargetPath": "Views\\Area_Charts\\Error_Bars_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\events.cshtml", "TargetPath": "Views\\ComboBox\\events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\api_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Map\\Export.cshtml", "TargetPath": "Views\\Map\\Export.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PDFViewer\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\PDFViewer\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Grouped_Data_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Grouped_Data_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Basic_Usage.cshtml", "TargetPath": "Views\\Gantt\\Basic_Usage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Validation_TagHelper.cshtml", "TargetPath": "Views\\Spreadsheet\\Validation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Cards\\Index.cshtml", "TargetPath": "Views\\Cards\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Bar_Charts\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Range_Bar_Charts\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\export_TagHelper.cshtml", "TargetPath": "Views\\Diagram\\export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Diagram\\api_TagHelper.cshtml", "TargetPath": "Views\\Diagram\\api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Resize.cshtml", "TargetPath": "Views\\Spreadsheet\\Resize.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Index.cshtml", "TargetPath": "Views\\TaskBoard\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Server_GroupPaging_Virtualization.cshtml", "TargetPath": "Views\\Grid\\Server_GroupPaging_Virtualization.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Editor\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Tag_Helper.cshtml", "TargetPath": "Views\\FileManager\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bubble_Charts\\Grouped_Data.cshtml", "TargetPath": "Views\\Bubble_Charts\\Grouped_Data.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\api_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Globalization_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Globalization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Pdf_Export_TagHelper.cshtml", "TargetPath": "Views\\Editor\\Pdf_Export_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Calendar\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Right_To_Left_Support_TagHelper.cshtml", "TargetPath": "Views\\Splitter\\Right_To_Left_Support_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Search_Panel.cshtml", "TargetPath": "Views\\Grid\\Search_Panel.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownButton\\Index.cshtml", "TargetPath": "Views\\DropDownButton\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Local_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Local_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\stepper.cshtml", "TargetPath": "Views\\Accessibility\\stepper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Api_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Index_TagHelper.cshtml", "TargetPath": "Views\\Slider\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Popover\\Index.cshtml", "TargetPath": "Views\\Popover\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\SignalR_Chart.cshtml", "TargetPath": "Views\\Grid\\SignalR_Chart.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Api.cshtml", "TargetPath": "Views\\Upload\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\tag_helper.cshtml", "TargetPath": "Views\\dialog\\tag_helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Cell_Comments.cshtml", "TargetPath": "Views\\Spreadsheet\\Cell_Comments.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Index_TagHelper.cshtml", "TargetPath": "Views\\TreeView\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\SplitButton\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\SplitButton\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\OdataV4.cshtml", "TargetPath": "Views\\Grid\\OdataV4.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateInput\\Floating_Label_TagHelper.cshtml", "TargetPath": "Views\\DateInput\\Floating_Label_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DatePicker\\Template_TagHelper.cshtml", "TargetPath": "Views\\DatePicker\\Template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\flatcolorpicker.cshtml", "TargetPath": "Views\\Accessibility\\flatcolorpicker.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chat\\Toolbar_TagHelper.cshtml", "TargetPath": "Views\\Chat\\Toolbar_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Range_Bar_Charts\\Local_Data_Binding.cshtml", "TargetPath": "Views\\Range_Bar_Charts\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Badge\\Labels.cshtml", "TargetPath": "Views\\Badge\\Labels.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\AutoComplete\\custom_datasource.cshtml", "TargetPath": "Views\\AutoComplete\\custom_datasource.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ListView\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\ListView\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PivotGridV2\\tag_helper.cshtml", "TargetPath": "Views\\PivotGridV2\\tag_helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Events_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Editor\\Events.cshtml", "TargetPath": "Views\\Editor\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Hierarchy.cshtml", "TargetPath": "Views\\Grid\\Hierarchy.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Rowtemplate.cshtml", "TargetPath": "Views\\Grid\\Rowtemplate.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\ClientFiltering.cshtml", "TargetPath": "Views\\ComboBox\\ClientFiltering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Circular_ProgressBar\\Indeterminate_Progress_TagHelper.cshtml", "TargetPath": "Views\\Circular_ProgressBar\\Indeterminate_Progress_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\BottomNavigation\\Api.cshtml", "TargetPath": "Views\\BottomNavigation\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Timeline_Night_TagHelper.cshtml", "TargetPath": "Views\\Scheduler\\Timeline_Night_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ChipList\\Api.cshtml", "TargetPath": "Views\\ChipList\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\PanelBar\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Financial\\Virtualization_TagHelper.cshtml", "TargetPath": "Views\\Financial\\Virtualization_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\ClientFiltering_TagHelper.cshtml", "TargetPath": "Views\\DropDownList\\ClientFiltering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Splitter\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Api_TagHelper.cshtml", "TargetPath": "Views\\NumericTextBox\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\remote_data_binding.cshtml", "TargetPath": "Views\\PanelBar\\remote_data_binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Signature\\Index_TagHelper.cshtml", "TargetPath": "Views\\Signature\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\taskboard.cshtml", "TargetPath": "Views\\Accessibility\\taskboard.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Events_TagHelper.cshtml", "TargetPath": "Views\\FlatColorPicker\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadprocessing\\grid_integration.cshtml", "TargetPath": "Views\\Spreadprocessing\\grid_integration.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Line_Charts\\Stacked_Line_TagHelper.cshtml", "TargetPath": "Views\\Line_Charts\\Stacked_Line_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\templates.cshtml", "TargetPath": "Views\\PanelBar\\templates.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Splitter\\Right_To_Left_Support.cshtml", "TargetPath": "Views\\Splitter\\Right_To_Left_Support.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\NumericTextBox\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\NumericTextBox\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Upload\\Right_To_Left_TagHelper.cshtml", "TargetPath": "Views\\Upload\\Right_To_Left_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\keyboard_navigation_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\keyboard_navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pie_Charts\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Pie_Charts\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DateTimePicker\\Week_Column.cshtml", "TargetPath": "Views\\DateTimePicker\\Week_Column.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scatter_Charts\\Tag_Helper.cshtml", "TargetPath": "Views\\Scatter_Charts\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Resources_Grouping_Horizontal.cshtml", "TargetPath": "Views\\Scheduler\\Resources_Grouping_Horizontal.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Events.cshtml", "TargetPath": "Views\\DropDownList\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownList\\Basic_Usage.cshtml", "TargetPath": "Views\\DropDownList\\Basic_Usage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\drawer.cshtml", "TargetPath": "Views\\Accessibility\\drawer.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Local_Data_Binding.cshtml", "TargetPath": "Views\\DropDownTree\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Graphql.cshtml", "TargetPath": "Views\\Grid\\Graphql.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Events.cshtml", "TargetPath": "Views\\Tooltip\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Box_Plot_Charts\\Index_TagHelper.cshtml", "TargetPath": "Views\\Box_Plot_Charts\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\BasicUsage.cshtml", "TargetPath": "Views\\Window\\BasicUsage.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Task_Template_TagHelper.cshtml", "TargetPath": "Views\\Gantt\\Task_Template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\Rowtemplate_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\Rowtemplate_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chip\\Appearance.cshtml", "TargetPath": "Views\\Chip\\Appearance.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\templates_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\templates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\ClientFiltering.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\ClientFiltering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Stepper\\Orientation.cshtml", "TargetPath": "Views\\Stepper\\Orientation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Images_TagHelper.cshtml", "TargetPath": "Views\\DropDownTree\\Images_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Captcha\\index.cshtml", "TargetPath": "Views\\Captcha\\index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Switch\\Events.cshtml", "TargetPath": "Views\\Switch\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MediaPlayer\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\MediaPlayer\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeView\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\TreeView\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\mediaplayer.cshtml", "TargetPath": "Views\\Accessibility\\mediaplayer.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\dialog\\keyboard_navigation.cshtml", "TargetPath": "Views\\dialog\\keyboard_navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\EditorTemplates\\Boolean.cshtml", "TargetPath": "Views\\Shared\\EditorTemplates\\Boolean.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Api.cshtml", "TargetPath": "Views\\ColorGradient\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\ClientFiltering_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\ClientFiltering_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Week_Column_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Week_Column_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Ajax_TagHelper.cshtml", "TargetPath": "Views\\Wizard\\Ajax_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Custom_Command_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Custom_Command_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Bar_Charts\\Stacked_Bar_TagHelper.cshtml", "TargetPath": "Views\\Bar_Charts\\Stacked_Bar_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Spreadsheet\\Disabled_Cells_TagHelper.cshtml", "TargetPath": "Views\\Spreadsheet\\Disabled_Cells_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TextArea\\Index_TagHelper.cshtml", "TargetPath": "Views\\TextArea\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Tag_Helper.cshtml", "TargetPath": "Views\\DropDownTree\\Tag_Helper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\PanelBar\\Events_TagHelper.cshtml", "TargetPath": "Views\\PanelBar\\Events_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Scheduler\\Kinvey.cshtml", "TargetPath": "Views\\Scheduler\\Kinvey.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\grouping_by_parent_TagHelper.cshtml", "TargetPath": "Views\\OrgChart\\grouping_by_parent_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Captcha\\Api.cshtml", "TargetPath": "Views\\Captcha\\Api.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Pie_Charts\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\Pie_Charts\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Linear_Gauge\\Multiple_Pointers_TagHelper.cshtml", "TargetPath": "Views\\Linear_Gauge\\Multiple_Pointers_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Sparklines\\Remote_Data_Binding.cshtml", "TargetPath": "Views\\Sparklines\\Remote_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\hierarchy.cshtml", "TargetPath": "Views\\Drawer\\hierarchy.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Keyboard_Navigation.cshtml", "TargetPath": "Views\\Gantt\\Keyboard_Navigation.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chip\\Api_TagHelper.cshtml", "TargetPath": "Views\\Chip\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FlatColorPicker\\Views.cshtml", "TargetPath": "Views\\FlatColorPicker\\Views.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Api_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Area_Charts\\Logarithmic_Axis.cshtml", "TargetPath": "Views\\Area_Charts\\Logarithmic_Axis.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Disabled_Dates_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Disabled_Dates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\aggregates_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\aggregates_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Window\\Api_TagHelper.cshtml", "TargetPath": "Views\\Window\\Api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FloatingActionButton\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\FloatingActionButton\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Chip\\Index_TagHelper.cshtml", "TargetPath": "Views\\Chip\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TreeList\\search_panel_TagHelper.cshtml", "TargetPath": "Views\\TreeList\\search_panel_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Shared\\ThemeManager.cshtml", "TargetPath": "Views\\Shared\\ThemeManager.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Basic_Usage_TagHelper.cshtml", "TargetPath": "Views\\Grid\\Basic_Usage_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Slider\\Keyboard_Navigation_TagHelper.cshtml", "TargetPath": "Views\\Slider\\Keyboard_Navigation_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TileLayout\\Reordering.cshtml", "TargetPath": "Views\\TileLayout\\Reordering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ComboBox\\template.cshtml", "TargetPath": "Views\\ComboBox\\template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\popover.cshtml", "TargetPath": "Views\\Accessibility\\popover.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorPicker\\Events.cshtml", "TargetPath": "Views\\ColorPicker\\Events.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Drawer\\api_TagHelper.cshtml", "TargetPath": "Views\\Drawer\\api_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Tooltip\\Index_TagHelper.cshtml", "TargetPath": "Views\\Tooltip\\Index_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Foreignkeycolumn.cshtml", "TargetPath": "Views\\Grid\\Foreignkeycolumn.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Gantt\\Task_Template.cshtml", "TargetPath": "Views\\Gantt\\Task_Template.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Local_Data_Binding.cshtml", "TargetPath": "Views\\TaskBoard\\Local_Data_Binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\OrgChart\\remote_data_binding.cshtml", "TargetPath": "Views\\OrgChart\\remote_data_binding.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\ColorGradient\\Index.cshtml", "TargetPath": "Views\\ColorGradient\\Index.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Grid\\Selection.cshtml", "TargetPath": "Views\\Grid\\Selection.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TaskBoard\\Remote_Data_Binding_TagHelper.cshtml", "TargetPath": "Views\\TaskBoard\\Remote_Data_Binding_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiColumnComboBox\\custom_datasource_TagHelper.cshtml", "TargetPath": "Views\\MultiColumnComboBox\\custom_datasource_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MediaPlayer\\API_TagHelper.cshtml", "TargetPath": "Views\\MediaPlayer\\API_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Calendar\\Template_TagHelper.cshtml", "TargetPath": "Views\\Calendar\\Template_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Badge\\Labels_TagHelper.cshtml", "TargetPath": "Views\\Badge\\Labels_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\orgchart.cshtml", "TargetPath": "Views\\Accessibility\\orgchart.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Accessibility\\switch.cshtml", "TargetPath": "Views\\Accessibility\\switch.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\Wizard\\Form.cshtml", "TargetPath": "Views\\Wizard\\Form.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\TimeDurationPicker\\Shortcuts.cshtml", "TargetPath": "Views\\TimeDurationPicker\\Shortcuts.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\DropDownTree\\Client_Filtering.cshtml", "TargetPath": "Views\\DropDownTree\\Client_Filtering.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\FileManager\\Image_Preview.cshtml", "TargetPath": "Views\\FileManager\\Image_Preview.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Program Files (x86)\\Progress\\Telerik UI for ASP.NET Core R1 2023\\wrappers\\aspnetcore\\Examples\\AspNet.Core\\VS2022\\Kendo.Mvc.Examples\\Views\\MultiSelect\\Tag_Mode_TagHelper.cshtml", "TargetPath": "Views\\MultiSelect\\Tag_Mode_TagHelper.cshtml", - "FileKind": "mvc" + "FileKind": 3 } ] } \ No newline at end of file diff --git a/src/Shared/files/Tooling/project.razor.json b/src/Shared/files/Tooling/project.razor.json index cb27bd137ef..76cb7e243c9 100644 --- a/src/Shared/files/Tooling/project.razor.json +++ b/src/Shared/files/Tooling/project.razor.json @@ -1,5 +1,5 @@ { - "__Version": 7, + "__Version": 8, "ProjectKey": "C:/Users/admin/location/blazorserver/obj/Debug/net7.0/", "FilePath": "C:\\Users\\admin\\location\\blazorserver\\blazorserver.csproj", "Configuration": { @@ -17812,63 +17812,53 @@ "Documents": [ { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\Shared\\MainLayout.razor", - "TargetPath": "Shared\\MainLayout.razor", - "FileKind": "component" + "TargetPath": "Shared\\MainLayout.razor" }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\Shared\\SurveyPrompt.razor", - "TargetPath": "Shared\\SurveyPrompt.razor", - "FileKind": "component" + "TargetPath": "Shared\\SurveyPrompt.razor" }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\Pages\\Component.razor", - "TargetPath": "Pages\\Component.razor", - "FileKind": "component" + "TargetPath": "Pages\\Component.razor" }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\Pages\\_Host.cshtml", "TargetPath": "Pages\\_Host.cshtml", - "FileKind": "mvc" + "FileKind": 3 }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\Pages\\Error.razor", - "TargetPath": "Pages\\Error.razor", - "FileKind": "component" + "TargetPath": "Pages\\Error.razor" }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\_Imports.razor", "TargetPath": "_Imports.razor", - "FileKind": "componentImport" + "FileKind": 2 }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\Shared\\NavMenu.razor", - "TargetPath": "Shared\\NavMenu.razor", - "FileKind": "component" + "TargetPath": "Shared\\NavMenu.razor" }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\Pages\\Counter.razor", - "TargetPath": "Pages\\Counter.razor", - "FileKind": "component" + "TargetPath": "Pages\\Counter.razor" }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\Pages\\Index.razor", - "TargetPath": "Pages\\Index.razor", - "FileKind": "component" + "TargetPath": "Pages\\Index.razor" }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\Pages\\Component1.razor", - "TargetPath": "Pages\\Component1.razor", - "FileKind": "component" + "TargetPath": "Pages\\Component1.razor" }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\Pages\\FetchData.razor", - "TargetPath": "Pages\\FetchData.razor", - "FileKind": "component" + "TargetPath": "Pages\\FetchData.razor" }, { "FilePath": "C:\\Users\\admin\\location\\blazorserver\\App.razor", - "TargetPath": "App.razor", - "FileKind": "component" + "TargetPath": "App.razor" } ] } \ No newline at end of file diff --git a/start-code.cmd b/start-code.cmd new file mode 100644 index 00000000000..3f584e34e7b --- /dev/null +++ b/start-code.cmd @@ -0,0 +1,36 @@ +@ECHO OFF +SETLOCAL + +:: This command launches a Visual Studio Code with environment variables required to use a local version of the .NET Core SDK. + +FOR /f "delims=" %%a IN ('where.exe code') DO @SET vscode=%%a& GOTO break +:break + +IF ["%vscode%"] == [""] ( + echo [ERROR] Visual Studio Code is not installed or can't be found. + echo. + exit /b 1 +) + +:: This tells .NET Core to use the same dotnet.exe that build scripts use +SET DOTNET_ROOT=%~dp0.dotnet +SET DOTNET_ROOT(x86)=%~dp0.dotnet\x86 + +:: This tells .NET Core not to go looking for .NET Core in other places +SET DOTNET_MULTILEVEL_LOOKUP=0 + +:: Put our local dotnet.exe on PATH first so Visual Studio knows which one to use +SET PATH=%DOTNET_ROOT%;%PATH% + +IF NOT EXIST "%DOTNET_ROOT%\dotnet.exe" ( + echo [ERROR] .NET SDK has not yet been installed. Run %~dp0restore.cmd to install. + echo. + exit /b 1 +) + +IF ["%~1"] == [""] GOTO noargs +"%vscode%" %* +exit /b 1 + +:noargs +"%vscode%" "."