diff --git a/build/repo.props b/build/repo.props index 02493207af..ce306409ff 100644 --- a/build/repo.props +++ b/build/repo.props @@ -37,14 +37,9 @@ - - - - diff --git a/src/Components/Blazor/BlazorExtension/src/AutoRebuild/AutoRebuildService.cs b/src/Components/Blazor/BlazorExtension/src/AutoRebuild/AutoRebuildService.cs index 49977fccfa..f3aa9b195b 100644 --- a/src/Components/Blazor/BlazorExtension/src/AutoRebuild/AutoRebuildService.cs +++ b/src/Components/Blazor/BlazorExtension/src/AutoRebuild/AutoRebuildService.cs @@ -1,4 +1,4 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using Microsoft.VisualStudio.Shell.Interop; @@ -33,12 +33,12 @@ namespace Microsoft.VisualStudio.BlazorExtension public void Listen() { - AddBuildServiceNamedPipeServer(); + _ = AddBuildServiceNamedPipeServerAsync(); } - private void AddBuildServiceNamedPipeServer() + private Task AddBuildServiceNamedPipeServerAsync() { - Task.Factory.StartNew(async () => + return Task.Factory.StartNew(async () => { try { @@ -69,7 +69,7 @@ namespace Microsoft.VisualStudio.BlazorExtension // As soon as we receive a connection, spin up another background // listener to wait for the next connection await serverPipe.WaitForConnectionAsync(); - AddBuildServiceNamedPipeServer(); + _ = AddBuildServiceNamedPipeServerAsync(); await HandleRequestAsync(serverPipe, isServerElevated); } diff --git a/src/Components/Blazor/BlazorExtension/src/AutoRebuild/BuildEventsWatcher.cs b/src/Components/Blazor/BlazorExtension/src/AutoRebuild/BuildEventsWatcher.cs index 1c56be2254..e05f05f28f 100644 --- a/src/Components/Blazor/BlazorExtension/src/AutoRebuild/BuildEventsWatcher.cs +++ b/src/Components/Blazor/BlazorExtension/src/AutoRebuild/BuildEventsWatcher.cs @@ -1,10 +1,9 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; using System.Threading.Tasks; -using Microsoft.VisualStudio.ProjectSystem.Properties; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; @@ -74,14 +73,16 @@ namespace Microsoft.VisualStudio.BlazorExtension public int UpdateProjectCfg_Begin(IVsHierarchy pHierProj, IVsCfg pCfgProj, IVsCfg pCfgSln, uint dwAction, ref int pfCancel) { + ThreadHelper.ThrowIfNotOnUIThread(); + if (IsBlazorProject(pHierProj)) { // This method runs both for manually-invoked builds and for builds triggered automatically // by PerformNewBuildAsync(). In the case where it's a manually-invoked build, make sure // there's an in-progress BuildInfo so that if there are further builds requests while the // build is still in progress we can join them onto this existing build. - var ctx = (IVsBrowseObjectContext)pCfgProj; - var projectPath = ctx.UnconfiguredProject.FullPath; + + var projectPath = GetProjectPath(pHierProj); lock (mostRecentBuildInfosLock) { var hasBuildInProgress = @@ -99,11 +100,12 @@ namespace Microsoft.VisualStudio.BlazorExtension public int UpdateProjectCfg_Done(IVsHierarchy pHierProj, IVsCfg pCfgProj, IVsCfg pCfgSln, uint dwAction, int fSuccess, int fCancel) { + ThreadHelper.ThrowIfNotOnUIThread(); + if (IsBlazorProject(pHierProj)) { var buildResult = fSuccess == 1; - var ctx = (IVsBrowseObjectContext)pCfgProj; - var projectPath = ctx.UnconfiguredProject.FullPath; + var projectPath = GetProjectPath(pHierProj); // Mark pending build info as completed BuildInfo foundInfo = null; @@ -160,6 +162,13 @@ namespace Microsoft.VisualStudio.BlazorExtension private static bool IsBlazorProject(IVsHierarchy pHierProj) => pHierProj.IsCapabilityMatch(BlazorProjectCapability); + private static string GetProjectPath(IVsHierarchy pHierProj) + { + ThreadHelper.ThrowIfNotOnUIThread(); + ErrorHandler.ThrowOnFailure(((IVsProject)pHierProj).GetMkDocument((uint)VSConstants.VSITEMID.Root, out var projectPath), VSConstants.E_NOTIMPL); + return projectPath; + } + class BuildInfo { public DateTime StartTime { get; } diff --git a/src/Components/Blazor/BlazorExtension/src/BlazorPackage.cs b/src/Components/Blazor/BlazorExtension/src/BlazorPackage.cs index f5ea8de8a4..fd956856ac 100644 --- a/src/Components/Blazor/BlazorExtension/src/BlazorPackage.cs +++ b/src/Components/Blazor/BlazorExtension/src/BlazorPackage.cs @@ -1,40 +1,44 @@ -// Copyright (c) .NET Foundation. All rights reserved. +// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Runtime.InteropServices; +using System.Threading; +using System.Threading.Tasks; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; +using Task = System.Threading.Tasks.Task; namespace Microsoft.VisualStudio.BlazorExtension { // We mainly have a package so we can have an "About" dialog entry. - [PackageRegistration(UseManagedResourcesOnly = true)] + [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)] [AboutDialogInfo(PackageGuidString, "ASP.NET Core Blazor Language Services", "#110", "112")] [Guid(BlazorPackage.PackageGuidString)] - [ProvideAutoLoad(UIContextGuids80.SolutionExists)] - public sealed class BlazorPackage : Package + [ProvideAutoLoad(UIContextGuids80.SolutionExists, PackageAutoLoadFlags.BackgroundLoad)] + public sealed class BlazorPackage : AsyncPackage { public const string PackageGuidString = "d9fe04bc-57a7-4107-915e-3a5c2f9e19fb"; - protected override void Initialize() + protected async override Task InitializeAsync(CancellationToken cancellationToken, IProgress progress) { - base.Initialize(); - RegisterAutoRebuildService(); - } + await base.InitializeAsync(cancellationToken, progress); - private void RegisterAutoRebuildService() - { - ThreadHelper.ThrowIfNotOnUIThread(); + await JoinableTaskFactory.SwitchToMainThreadAsync(); // Create build watcher. No need to unadvise, as this only happens once anyway. - var solution = (IVsSolution)GetGlobalService(typeof(IVsSolution)); - var buildManager = (IVsSolutionBuildManager)GetService(typeof(SVsSolutionBuildManager)); - var buildWatcher = new BuildEventsWatcher(solution, buildManager); - var hr = buildManager.AdviseUpdateSolutionEvents(buildWatcher, out var cookie); - Marshal.ThrowExceptionForHR(hr); + var solution = (IVsSolution)await GetServiceAsync(typeof(IVsSolution)); + var buildManager = (IVsSolutionBuildManager)await GetServiceAsync(typeof(SVsSolutionBuildManager)); - new AutoRebuildService(buildWatcher).Listen(); + // According to the docs, this can happen if VS shuts down while our package is loading. + if (solution == null || buildManager == null) + { + var buildWatcher = new BuildEventsWatcher(solution, buildManager); + var hr = buildManager.AdviseUpdateSolutionEvents(buildWatcher, out var cookie); + Marshal.ThrowExceptionForHR(hr); + + new AutoRebuildService(buildWatcher).Listen(); + } } } } diff --git a/src/Components/Blazor/BlazorExtension/src/Microsoft.VisualStudio.BlazorExtension.csproj b/src/Components/Blazor/BlazorExtension/src/Microsoft.VisualStudio.BlazorExtension.csproj index d2085b87a3..fb61e760cd 100644 --- a/src/Components/Blazor/BlazorExtension/src/Microsoft.VisualStudio.BlazorExtension.csproj +++ b/src/Components/Blazor/BlazorExtension/src/Microsoft.VisualStudio.BlazorExtension.csproj @@ -8,10 +8,15 @@ true bin\$(Configuration)\ obj\$(Configuration)\ - + false + false + false + false + false + - - - true - ..\..\..\eng\AspNetCore.snk - - 15.7 - $(VsixVersion).$(BuildNumber) - $(VsixVersion).999999 - $(VsixVersion).ERROR-MISSING_BUILD_NUMBER + 16.0 + 424242.424242 + $(BuildNumberSuffix.Replace('-', '.')) + $(VsixVersionPrefix).$(VsixVersionSuffix) + Program @@ -71,7 +73,7 @@ true true - + ProjectTemplates\ @@ -89,25 +91,7 @@ - - - - false - - - - - - - + + diff --git a/src/Components/Blazor/BlazorExtension/src/Properties/AssemblyInfo.cs b/src/Components/Blazor/BlazorExtension/src/Properties/AssemblyInfo.cs deleted file mode 100644 index 1b380e53b4..0000000000 --- a/src/Components/Blazor/BlazorExtension/src/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using Microsoft.VisualStudio.Shell; - -// Add binding redirects for each assembly we ship in VS. This is required so that these assemblies show -// up in the Load context, which means that we can use ServiceHub and other nice things. -// -// The versions here need to match what the build is producing. If you change the version numbers -// for the referenced assemblies, this needs to change as well. -[assembly: ProvideBindingRedirection( - AssemblyName = "Microsoft.VisualStudio.LanguageServices.Blazor", - GenerateCodeBase = true, - PublicKeyToken = "", - OldVersionLowerBound = "0.0.0.0", - OldVersionUpperBound = "0.8.0.0", - NewVersion = "0.8.0.0")] \ No newline at end of file diff --git a/src/Components/Blazor/BlazorExtension/src/Templates.pkgdef b/src/Components/Blazor/BlazorExtension/src/Templates.pkgdef index 82cbd7d9f0..a5b41e7c29 100644 --- a/src/Components/Blazor/BlazorExtension/src/Templates.pkgdef +++ b/src/Components/Blazor/BlazorExtension/src/Templates.pkgdef @@ -1,2 +1,2 @@ -[$RootKey$\TemplateEngine\Templates\Blazor\0.2.0] +[$RootKey$\TemplateEngine\Templates\Blazor\0.8.0] "InstalledPath"="$PackageFolder$\ProjectTemplates" \ No newline at end of file diff --git a/src/Components/Blazor/BlazorExtension/src/source.extension.vsixmanifest b/src/Components/Blazor/BlazorExtension/src/source.extension.vsixmanifest index 838bc66b88..869961f74e 100644 --- a/src/Components/Blazor/BlazorExtension/src/source.extension.vsixmanifest +++ b/src/Components/Blazor/BlazorExtension/src/source.extension.vsixmanifest @@ -12,19 +12,17 @@ Content\WebConfiguration.png - + - + - - - + - + diff --git a/src/Components/Blazor/BlazorLanguageServices/src/Microsoft.VisualStudio.LanguageServices.Blazor.csproj b/src/Components/Blazor/BlazorLanguageServices/src/Microsoft.VisualStudio.LanguageServices.Blazor.csproj deleted file mode 100644 index 1eb532e806..0000000000 --- a/src/Components/Blazor/BlazorLanguageServices/src/Microsoft.VisualStudio.LanguageServices.Blazor.csproj +++ /dev/null @@ -1,20 +0,0 @@ - - - - net461 - - false - - - - - - - - - - - - - - diff --git a/src/Components/Blazor/BlazorLanguageServices/src/RazorTextViewListener.cs b/src/Components/Blazor/BlazorLanguageServices/src/RazorTextViewListener.cs deleted file mode 100644 index a6344d515d..0000000000 --- a/src/Components/Blazor/BlazorLanguageServices/src/RazorTextViewListener.cs +++ /dev/null @@ -1,213 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.ComponentModel.Composition; -using System.Linq; -using System.Reflection; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.Host; -using Microsoft.CodeAnalysis.Razor; -using Microsoft.VisualStudio.Editor.Razor; -using Microsoft.VisualStudio.Text; -using Microsoft.VisualStudio.Text.Editor; -using Microsoft.VisualStudio.Utilities; - -namespace Microsoft.VisualStudio.LanguageServices.Blazor -{ - [ContentType(RazorLanguage.ContentType)] - [TextViewRole(PredefinedTextViewRoles.Editable)] - [Export(typeof(IWpfTextViewConnectionListener))] - internal class BlazorOpenDocumentTracker : IWpfTextViewConnectionListener - { - private readonly RazorEditorFactoryService _editorFactory; - private readonly Workspace _workspace; - - private readonly HashSet _openViews; - - private Type _codeGeneratorType; - private Type _projectSnapshotManagerType; - - [ImportingConstructor] - public BlazorOpenDocumentTracker( - RazorEditorFactoryService editorFactory, - [Import(typeof(VisualStudioWorkspace))] Workspace workspace) - { - if (editorFactory == null) - { - throw new ArgumentNullException(nameof(editorFactory)); - } - - if (workspace == null) - { - throw new ArgumentNullException(nameof(workspace)); - } - - _editorFactory = editorFactory; - _workspace = workspace; - - _openViews = new HashSet(); - - _workspace.WorkspaceChanged += Workspace_WorkspaceChanged; - } - - public Workspace Workspace => _workspace; - - public void SubjectBuffersConnected(IWpfTextView textView, ConnectionReason reason, Collection subjectBuffers) - { - if (textView == null) - { - throw new ArgumentException(nameof(textView)); - } - - if (subjectBuffers == null) - { - throw new ArgumentNullException(nameof(subjectBuffers)); - } - - _openViews.Add(textView); - } - - public void SubjectBuffersDisconnected(IWpfTextView textView, ConnectionReason reason, Collection subjectBuffers) - { - if (textView == null) - { - throw new ArgumentException(nameof(textView)); - } - - if (subjectBuffers == null) - { - throw new ArgumentNullException(nameof(subjectBuffers)); - } - - _openViews.Remove(textView); - } - - // We're watching the Roslyn workspace for changes specifically because we want - // to know when the language service has processed a file change. - // - // It might be more elegant to use a file watcher rather than sniffing workspace events - // but there would be a delay between the file watcher and Roslyn processing the update. - private void Workspace_WorkspaceChanged(object sender, WorkspaceChangeEventArgs e) - { - switch (e.Kind) - { - case WorkspaceChangeKind.DocumentAdded: - case WorkspaceChangeKind.DocumentChanged: - case WorkspaceChangeKind.DocumentInfoChanged: - case WorkspaceChangeKind.DocumentReloaded: - case WorkspaceChangeKind.DocumentRemoved: - - var document = e.NewSolution.GetDocument(e.DocumentId); - if (document == null || document.FilePath == null) - { - break; - } - - if (!document.FilePath.EndsWith(".g.i.cs")) - { - break; - } - - OnDeclarationsChanged(e.NewSolution.GetProject(e.ProjectId)); - break; - } - } - - private void OnDeclarationsChanged(Project project) - { - // In 15.8 the Razor Language Services provides the actual Tag Helper discovery logic. - // We can interface with that if we're running in a 15.8 build. - if (_projectSnapshotManagerType == null && _codeGeneratorType == null) - { - try - { - var assembly = typeof(Microsoft.CodeAnalysis.Razor.IProjectEngineFactory).Assembly; - _projectSnapshotManagerType = assembly.GetType("Microsoft.CodeAnalysis.Razor.ProjectSystem.ProjectSnapshotManager"); - } - catch (Exception) - { - // If the above fails, try the 15.7 logic. - } - } - - if (_projectSnapshotManagerType != null) - { - try - { - var languageServices = _workspace.Services.GetLanguageServices(RazorLanguage.Name); - var manager = languageServices - .GetType() - .GetMethod(nameof(HostLanguageServices.GetService)) - .MakeGenericMethod(_projectSnapshotManagerType) - .Invoke(languageServices, null); - - manager.GetType().GetMethod("WorkspaceProjectChanged").Invoke(manager, new object[] { project, }); - return; - } - catch (Exception) - { - // If the above fails, try the 15.7 logic. - } - } - - - // This is a design-time Razor file change.Go poke all of the open - // Razor documents and tell them to update. - var buffers = _openViews - .SelectMany(v => v.BufferGraph.GetTextBuffers(b => b.ContentType.IsOfType("RazorCSharp"))) - .Distinct() - .ToArray(); - - if (_codeGeneratorType == null) - { - try - { - var assembly = Assembly.Load("Microsoft.VisualStudio.Web.Editors.Razor.4_0, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); - _codeGeneratorType = assembly.GetType("Microsoft.VisualStudio.Web.Editors.Razor.RazorCodeGenerator"); - } - catch (Exception) - { - // If this fails, just unsubscribe. We won't be able to do our work, so just don't waste time. - _workspace.WorkspaceChanged -= Workspace_WorkspaceChanged; - } - } - - foreach (var buffer in buffers) - { - try - { - var tryGetFromBuffer = _codeGeneratorType.GetMethod("TryGetFromBuffer", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); - - var args = new object[] { buffer, null }; - if (!(bool)tryGetFromBuffer.Invoke(null, args) || args[1] == null) - { - continue; - } - - var field = _codeGeneratorType.GetField("_tagHelperDescriptorResolver", BindingFlags.Instance | BindingFlags.NonPublic); - var resolver = field.GetValue(args[1]); - if (resolver == null) - { - continue; - } - - var reset = resolver.GetType().GetMethod("ResetTagHelperDescriptors", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - if (reset == null) - { - continue; - } - - reset.Invoke(resolver, Array.Empty()); - } - catch (Exception) - { - // If this fails, just unsubscribe. We won't be able to do our work, so just don't waste time. - _workspace.WorkspaceChanged -= Workspace_WorkspaceChanged; - } - } - } - } -} \ No newline at end of file diff --git a/src/Components/Blazor/Templates/src/content/BlazorHosted-CSharp/.template.config.src/template.json b/src/Components/Blazor/Templates/src/content/BlazorHosted-CSharp/.template.config.src/template.json index 75a5a3bc65..9049c7d986 100644 --- a/src/Components/Blazor/Templates/src/content/BlazorHosted-CSharp/.template.config.src/template.json +++ b/src/Components/Blazor/Templates/src/content/BlazorHosted-CSharp/.template.config.src/template.json @@ -59,12 +59,12 @@ "datatype": "choice", "choices": [ { - "choice": "netcoreapp2.1", - "description": "Target netcoreapp2.1" + "choice": "netcoreapp3.0", + "description": "Target netcoreapp3.0" } ], - "replaces": "netcoreapp2.1", - "defaultValue": "netcoreapp2.1" + "replaces": "netcoreapp3.0", + "defaultValue": "netcoreapp3.0" }, "HostIdentifier": { "type": "bind", diff --git a/src/Components/Blazor/Templates/src/content/BlazorLibrary-CSharp/.template.config.src/template.json b/src/Components/Blazor/Templates/src/content/BlazorLibrary-CSharp/.template.config.src/template.json index aa41a4cbd7..2ac9ba33fc 100644 --- a/src/Components/Blazor/Templates/src/content/BlazorLibrary-CSharp/.template.config.src/template.json +++ b/src/Components/Blazor/Templates/src/content/BlazorLibrary-CSharp/.template.config.src/template.json @@ -32,12 +32,12 @@ "datatype": "choice", "choices": [ { - "choice": "netcoreapp2.1", - "description": "Target netcoreapp2.1" + "choice": "netcoreapp3.0", + "description": "Target netcoreapp3.0" } ], - "replaces": "netcoreapp2.1", - "defaultValue": "netcoreapp2.1" + "replaces": "netcoreapp3.0", + "defaultValue": "netcoreapp3.0" }, "HostIdentifier": { "type": "bind", diff --git a/src/Components/Blazor/Templates/src/content/BlazorStandalone-CSharp/.template.config.src/template.json b/src/Components/Blazor/Templates/src/content/BlazorStandalone-CSharp/.template.config.src/template.json index 9deff39fd6..6bfbc79d63 100644 --- a/src/Components/Blazor/Templates/src/content/BlazorStandalone-CSharp/.template.config.src/template.json +++ b/src/Components/Blazor/Templates/src/content/BlazorStandalone-CSharp/.template.config.src/template.json @@ -32,12 +32,12 @@ "datatype": "choice", "choices": [ { - "choice": "netcoreapp2.1", - "description": "Target netcoreapp2.1" + "choice": "netcoreapp3.0", + "description": "Target netcoreapp3.0" } ], - "replaces": "netcoreapp2.1", - "defaultValue": "netcoreapp2.1" + "replaces": "netcoreapp3.0", + "defaultValue": "netcoreapp3.0" }, "HostIdentifier": { "type": "bind", diff --git a/src/Components/Components.sln b/src/Components/Components.sln index 56a8a55546..ee94d6351b 100644 --- a/src/Components/Components.sln +++ b/src/Components/Components.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28509.92 MinimumVisualStudioVersion = 15.0.26124.0 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analyzers", "Analyzers", "{E059A46B-56E3-41E2-83F4-B5D180056F3B}" EndProject @@ -15,8 +15,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Blazor EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Blazor.Tests", "Blazor\Blazor\test\Microsoft.AspNetCore.Blazor.Tests.csproj", "{958AD6D2-174B-4B5B-BEFC-FA64B5159334}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.VisualStudio.LanguageServices.Blazor", "Blazor\BlazorLanguageServices\src\Microsoft.VisualStudio.LanguageServices.Blazor.csproj", "{27CF854D-E98B-4853-946B-2D4EA28B8FC5}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Blazor.Build", "Blazor\Build\src\Microsoft.AspNetCore.Blazor.Build.csproj", "{E8AD67A4-77D3-4B85-AE19-4711388B62B1}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Blazor.Build.Tests", "Blazor\Build\test\Microsoft.AspNetCore.Blazor.Build.Tests.csproj", "{E38FDBB0-08C1-444E-A449-69C8A59D721B}" @@ -213,6 +211,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Mvc.Ne EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.JsonPatch", "..\Features\JsonPatch\src\Microsoft.AspNetCore.JsonPatch.csproj", "{DC47C40A-FC38-44E4-94A4-ADE794E76309}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.VisualStudio.BlazorExtension", "blazor\BlazorExtension\src\Microsoft.VisualStudio.BlazorExtension.csproj", "{9088E4E4-B855-457F-AE9E-D86709A5E1F4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -271,18 +271,6 @@ Global {958AD6D2-174B-4B5B-BEFC-FA64B5159334}.Release|x64.Build.0 = Release|Any CPU {958AD6D2-174B-4B5B-BEFC-FA64B5159334}.Release|x86.ActiveCfg = Release|Any CPU {958AD6D2-174B-4B5B-BEFC-FA64B5159334}.Release|x86.Build.0 = Release|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Debug|x64.ActiveCfg = Debug|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Debug|x64.Build.0 = Debug|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Debug|x86.ActiveCfg = Debug|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Debug|x86.Build.0 = Debug|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Release|Any CPU.Build.0 = Release|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Release|x64.ActiveCfg = Release|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Release|x64.Build.0 = Release|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Release|x86.ActiveCfg = Release|Any CPU - {27CF854D-E98B-4853-946B-2D4EA28B8FC5}.Release|x86.Build.0 = Release|Any CPU {E8AD67A4-77D3-4B85-AE19-4711388B62B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E8AD67A4-77D3-4B85-AE19-4711388B62B1}.Debug|Any CPU.Build.0 = Debug|Any CPU {E8AD67A4-77D3-4B85-AE19-4711388B62B1}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -1351,6 +1339,18 @@ Global {DC47C40A-FC38-44E4-94A4-ADE794E76309}.Release|x64.Build.0 = Release|Any CPU {DC47C40A-FC38-44E4-94A4-ADE794E76309}.Release|x86.ActiveCfg = Release|Any CPU {DC47C40A-FC38-44E4-94A4-ADE794E76309}.Release|x86.Build.0 = Release|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|x64.ActiveCfg = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|x64.Build.0 = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|x86.ActiveCfg = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Debug|x86.Build.0 = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|Any CPU.Build.0 = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|x64.ActiveCfg = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|x64.Build.0 = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|x86.ActiveCfg = Debug|Any CPU + {9088E4E4-B855-457F-AE9E-D86709A5E1F4}.Release|x86.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1360,7 +1360,6 @@ Global {F000C49D-3857-42A4-918D-DA4C08691FE2} = {E059A46B-56E3-41E2-83F4-B5D180056F3B} {641922CD-E6F5-41E7-A085-EE07C2A7328D} = {7260DED9-22A9-4E9D-92F4-5E8A4404DEAF} {958AD6D2-174B-4B5B-BEFC-FA64B5159334} = {7260DED9-22A9-4E9D-92F4-5E8A4404DEAF} - {27CF854D-E98B-4853-946B-2D4EA28B8FC5} = {7260DED9-22A9-4E9D-92F4-5E8A4404DEAF} {E8AD67A4-77D3-4B85-AE19-4711388B62B1} = {7260DED9-22A9-4E9D-92F4-5E8A4404DEAF} {E38FDBB0-08C1-444E-A449-69C8A59D721B} = {7260DED9-22A9-4E9D-92F4-5E8A4404DEAF} {A6C8050D-7C18-4585-ADCF-833AC1765847} = {7260DED9-22A9-4E9D-92F4-5E8A4404DEAF} @@ -1452,6 +1451,7 @@ Global {3FAF725B-A628-4531-9F61-499660CD4347} = {2FC10057-7A0A-4E34-8302-879925BC0102} {04262990-929C-42BF-85A9-21C25FA95617} = {2FC10057-7A0A-4E34-8302-879925BC0102} {DC47C40A-FC38-44E4-94A4-ADE794E76309} = {2FC10057-7A0A-4E34-8302-879925BC0102} + {9088E4E4-B855-457F-AE9E-D86709A5E1F4} = {7260DED9-22A9-4E9D-92F4-5E8A4404DEAF} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {CC3C47E1-AD1A-4619-9CD3-E08A0148E5CE}