Add CodeAnalysis.Razor to the vsix

Also adds some error handling so you can know if something went wrong.
This commit is contained in:
Ryan Nowak 2017-02-10 13:00:55 -08:00
parent 62420209a5
commit d72cd469bd
5 changed files with 41 additions and 5 deletions

View File

@ -343,6 +343,14 @@
<IncludeOutputGroupsInVSIXLocalOnly> <IncludeOutputGroupsInVSIXLocalOnly>
</IncludeOutputGroupsInVSIXLocalOnly> </IncludeOutputGroupsInVSIXLocalOnly>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\..\src\Microsoft.CodeAnalysis.Razor.Workspaces\Microsoft.CodeAnalysis.Razor.csproj">
<Name>Microsoft.CodeAnalysis.Razor</Name>
<Private>False</Private>
<IncludeOutputGroupsInVSIX>
</IncludeOutputGroupsInVSIX>
<IncludeOutputGroupsInVSIXLocalOnly>
</IncludeOutputGroupsInVSIXLocalOnly>
</ProjectReference>
<ProjectReference Include="..\..\src\Microsoft.CodeAnalysis.Razor.Workspaces\Microsoft.CodeAnalysis.Razor.Workspaces.csproj"> <ProjectReference Include="..\..\src\Microsoft.CodeAnalysis.Razor.Workspaces\Microsoft.CodeAnalysis.Razor.Workspaces.csproj">
<Project>{0f265874-c592-448b-bc4f-3430ab03e0dc}</Project> <Project>{0f265874-c592-448b-bc4f-3430ab03e0dc}</Project>
<Name>Microsoft.CodeAnalysis.Razor.Workspaces</Name> <Name>Microsoft.CodeAnalysis.Razor.Workspaces</Name>
@ -375,6 +383,7 @@
<ItemGroup> <ItemGroup>
<VSIXSourceItem Include="..\..\src\Microsoft.CodeAnalysis.Remote.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Remote.Razor.dll" /> <VSIXSourceItem Include="..\..\src\Microsoft.CodeAnalysis.Remote.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Remote.Razor.dll" />
<VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.AspNetCore.Razor.Evolution.dll" /> <VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.AspNetCore.Razor.Evolution.dll" />
<VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Razor.dll" />
<VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Razor.Workspaces.dll" /> <VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.CodeAnalysis.Razor.Workspaces.dll" />
<VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.VisualStudio.LanguageServices.Razor.dll" /> <VSIXSourceItem Include="..\..\src\Microsoft.VisualStudio.LanguageServices.Razor\bin\$(Configuration)\net46\Microsoft.VisualStudio.LanguageServices.Razor.dll" />
<Content Include="@(VSIXSourceItem)"> <Content Include="@(VSIXSourceItem)">

View File

@ -11,6 +11,14 @@ using Microsoft.VisualStudio.Shell;
OldVersionUpperBound = "1.2.0.0", OldVersionUpperBound = "1.2.0.0",
NewVersion = "1.2.0.0")] NewVersion = "1.2.0.0")]
[assembly: ProvideBindingRedirection(
AssemblyName = "Microsoft.CodeAnalysis.Razor",
GenerateCodeBase = true,
PublicKeyToken = "adb9793829ddae60",
OldVersionLowerBound = "0.0.0.0",
OldVersionUpperBound = "1.2.0.0",
NewVersion = "1.2.0.0")]
[assembly: ProvideBindingRedirection( [assembly: ProvideBindingRedirection(
AssemblyName = "Microsoft.CodeAnalysis.Razor.Workspaces", AssemblyName = "Microsoft.CodeAnalysis.Razor.Workspaces",
GenerateCodeBase = true, GenerateCodeBase = true,

View File

@ -3,11 +3,12 @@
using System; using System;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using Microsoft.VisualStudio.Shell; using Microsoft.CodeAnalysis;
using Microsoft.VisualStudio.ComponentModelHost; using Microsoft.VisualStudio.ComponentModelHost;
using Microsoft.VisualStudio.LanguageServices; using Microsoft.VisualStudio.LanguageServices;
using Microsoft.VisualStudio.LanguageServices.Razor; using Microsoft.VisualStudio.LanguageServices.Razor;
using Microsoft.CodeAnalysis; using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
namespace Microsoft.VisualStudio.RazorExtension.RazorInfo namespace Microsoft.VisualStudio.RazorExtension.RazorInfo
{ {
@ -39,6 +40,8 @@ namespace Microsoft.VisualStudio.RazorExtension.RazorInfo
_workspace = componentModel.GetService<VisualStudioWorkspace>(); _workspace = componentModel.GetService<VisualStudioWorkspace>();
_workspace.WorkspaceChanged += Workspace_WorkspaceChanged; _workspace.WorkspaceChanged += Workspace_WorkspaceChanged;
Reset(_workspace.CurrentSolution);
} }
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
@ -59,7 +62,7 @@ namespace Microsoft.VisualStudio.RazorExtension.RazorInfo
return; return;
} }
var viewModel = new RazorInfoViewModel(this, _workspace, _assemblyResolver, _directiveResolver, _tagHelperResolver, _documentGenerator); var viewModel = new RazorInfoViewModel(this, _workspace, _assemblyResolver, _directiveResolver, _tagHelperResolver, _documentGenerator, OnException);
foreach (var project in solution.Projects) foreach (var project in solution.Projects)
{ {
viewModel.Projects.Add(new ProjectViewModel(project)); viewModel.Projects.Add(new ProjectViewModel(project));
@ -68,6 +71,17 @@ namespace Microsoft.VisualStudio.RazorExtension.RazorInfo
((RazorInfoToolWindowControl)this.Content).DataContext = viewModel; ((RazorInfoToolWindowControl)this.Content).DataContext = viewModel;
} }
private void OnException(Exception ex)
{
VsShellUtilities.ShowMessageBox(
this,
ex.ToString(),
"Razor Error",
OLEMSGICON.OLEMSGICON_CRITICAL,
OLEMSGBUTTON.OLEMSGBUTTON_OK,
OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST);
}
private void Workspace_WorkspaceChanged(object sender, WorkspaceChangeEventArgs e) private void Workspace_WorkspaceChanged(object sender, WorkspaceChangeEventArgs e)
{ {
switch (e.Kind) switch (e.Kind)

View File

@ -25,6 +25,7 @@ namespace Microsoft.VisualStudio.RazorExtension.RazorInfo
private readonly ITagHelperResolver _tagHelperResolver; private readonly ITagHelperResolver _tagHelperResolver;
private readonly IServiceProvider _services; private readonly IServiceProvider _services;
private readonly Workspace _workspace; private readonly Workspace _workspace;
private readonly Action<Exception> _errorHandler;
private DocumentViewModel _currentDocument; private DocumentViewModel _currentDocument;
private DocumentInfoViewModel _currentDocumentInfo; private DocumentInfoViewModel _currentDocumentInfo;
@ -40,7 +41,8 @@ namespace Microsoft.VisualStudio.RazorExtension.RazorInfo
IRazorEngineAssemblyResolver assemblyResolver, IRazorEngineAssemblyResolver assemblyResolver,
IRazorEngineDirectiveResolver directiveResolver, IRazorEngineDirectiveResolver directiveResolver,
ITagHelperResolver tagHelperResolver, ITagHelperResolver tagHelperResolver,
IRazorEngineDocumentGenerator documentGenerator) IRazorEngineDocumentGenerator documentGenerator,
Action<Exception> errorHandler)
{ {
_services = services; _services = services;
_workspace = workspace; _workspace = workspace;
@ -48,6 +50,7 @@ namespace Microsoft.VisualStudio.RazorExtension.RazorInfo
_directiveResolver = directiveResolver; _directiveResolver = directiveResolver;
_tagHelperResolver = tagHelperResolver; _tagHelperResolver = tagHelperResolver;
_documentGenerator = documentGenerator; _documentGenerator = documentGenerator;
_errorHandler = errorHandler;
GenerateCommand = new RelayCommand<object>(ExecuteGenerate, CanExecuteGenerate); GenerateCommand = new RelayCommand<object>(ExecuteGenerate, CanExecuteGenerate);
LoadCommand = new RelayCommand<object>(ExecuteLoad, CanExecuteLoad); LoadCommand = new RelayCommand<object>(ExecuteLoad, CanExecuteLoad);
@ -180,7 +183,7 @@ namespace Microsoft.VisualStudio.RazorExtension.RazorInfo
} }
catch (Exception ex) catch (Exception ex)
{ {
Console.WriteLine(ex); _errorHandler.Invoke(ex);
} }
IsLoading = false; IsLoading = false;

View File

@ -22,6 +22,8 @@
<Asset Type="Microsoft.ServiceHub.Service" d:Source="File" Path="razorLanguageService.servicehub.service.json" /> <Asset Type="Microsoft.ServiceHub.Service" d:Source="File" Path="razorLanguageService.servicehub.service.json" />
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.AspNetCore.Razor.Evolution.dll" /> <Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.AspNetCore.Razor.Evolution.dll" />
<Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.AspNetCore.Razor.Evolution.dll" /> <Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.AspNetCore.Razor.Evolution.dll" />
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.CodeAnalysis.Razor.dll" />
<Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.CodeAnalysis.Razor.dll" />
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.CodeAnalysis.Razor.Workspaces.dll" /> <Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.CodeAnalysis.Razor.Workspaces.dll" />
<Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.CodeAnalysis.Razor.Workspaces.dll" /> <Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.CodeAnalysis.Razor.Workspaces.dll" />
<Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.CodeAnalysis.Remote.Razor.dll" /> <Asset Type="Microsoft.VisualStudio.Assembly" Path="Microsoft.CodeAnalysis.Remote.Razor.dll" />