diff --git a/.gitignore b/.gitignore index a77a4fc..c0d82f1 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ *.sln.docstates *.ide/ *.ide +*.vs/ SB_Files/ GithubStaging/ diff --git a/src/SourceBrowser.Generator/App.config b/src/SourceBrowser.Generator/App.config index 8e15646..c8cc771 100644 --- a/src/SourceBrowser.Generator/App.config +++ b/src/SourceBrowser.Generator/App.config @@ -1,6 +1,26 @@ - + - + - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SourceBrowser.Generator/DocumentWalkers/CSWalkerUtils.cs b/src/SourceBrowser.Generator/DocumentWalkers/CSWalkerUtils.cs index e8c76ae..704571f 100644 --- a/src/SourceBrowser.Generator/DocumentWalkers/CSWalkerUtils.cs +++ b/src/SourceBrowser.Generator/DocumentWalkers/CSWalkerUtils.cs @@ -29,13 +29,13 @@ internal CSWalkerUtils(DocumentWalker walker) public string LocalVariableDelimiter { get; } = CSharpDelimiters.LOCAL_VARIABLE; - public string GetFullName(SyntaxToken token) => token.CSharpKind().ToString(); + public string GetFullName(SyntaxToken token) => token.Kind().ToString(); - public bool IsIdentifier(SyntaxToken token) => token.CSharpKind() == SyntaxKind.IdentifierToken; + public bool IsIdentifier(SyntaxToken token) => token.Kind() == SyntaxKind.IdentifierToken; public bool IsKeyword(SyntaxToken token) => token.IsKeyword(); - public bool IsLiteral(SyntaxToken token) => token.CSharpKind() == SyntaxKind.StringLiteralToken; + public bool IsLiteral(SyntaxToken token) => token.Kind() == SyntaxKind.StringLiteralToken; public override void VisitToken(SyntaxToken token) => _walker.VisitToken(token); } diff --git a/src/SourceBrowser.Generator/DocumentWalkers/DocumentWalker.cs b/src/SourceBrowser.Generator/DocumentWalkers/DocumentWalker.cs index a44fe93..09a2e8d 100644 --- a/src/SourceBrowser.Generator/DocumentWalkers/DocumentWalker.cs +++ b/src/SourceBrowser.Generator/DocumentWalkers/DocumentWalker.cs @@ -5,6 +5,7 @@ using SourceBrowser.Generator.Model; using SourceBrowser.Generator.Extensions; using Microsoft.CodeAnalysis.FindSymbols; +using Microsoft.CodeAnalysis.CSharp; namespace SourceBrowser.Generator.DocumentWalkers { @@ -81,7 +82,7 @@ private ICollection ProcessTrivia(SyntaxTriviaList triviaList) { var triviaModelList = triviaList.Select(n => new Trivia( value: n.ToFullString(), - type: n.CSharpKind().ToString() + type: n.Kind().ToString() )).ToList(); return triviaModelList; @@ -92,7 +93,7 @@ private ICollection ProcessTrivia(SyntaxTriviaList triviaList) /// private Token ProcessOtherToken(SyntaxToken token) { - string fullName = token.CSharpKind().ToString(); + string fullName = token.Kind().ToString(); string value = token.ToString(); string type = _walkerUtils.OtherTokenTypeName; int lineNumber = token.GetLocation().GetLineSpan().StartLinePosition.Line + 1; diff --git a/src/SourceBrowser.Generator/DocumentWalkers/VBWalkerUtils.cs b/src/SourceBrowser.Generator/DocumentWalkers/VBWalkerUtils.cs index 4f2a6cf..68c9011 100644 --- a/src/SourceBrowser.Generator/DocumentWalkers/VBWalkerUtils.cs +++ b/src/SourceBrowser.Generator/DocumentWalkers/VBWalkerUtils.cs @@ -29,13 +29,13 @@ internal VBWalkerUtils(DocumentWalker walker) public string LocalVariableDelimiter { get; } = VBDelimiters.LOCAL_VARIABLE; - public string GetFullName(SyntaxToken token) => token.CSharpKind().ToString(); + public string GetFullName(SyntaxToken token) => token.Kind().ToString(); - public bool IsIdentifier(SyntaxToken token) => token.VBKind() == SyntaxKind.IdentifierToken; + public bool IsIdentifier(SyntaxToken token) => token.Kind() == SyntaxKind.IdentifierToken; public bool IsKeyword(SyntaxToken token) => token.IsKeyword(); - public bool IsLiteral(SyntaxToken token) => token.VBKind() == SyntaxKind.StringLiteralToken; + public bool IsLiteral(SyntaxToken token) => token.Kind() == SyntaxKind.StringLiteralToken; public override void VisitToken(SyntaxToken token) => _walker.VisitToken(token); } diff --git a/src/SourceBrowser.Generator/SolutionAnalyzer.cs b/src/SourceBrowser.Generator/SolutionAnalyzer.cs index 16369a1..8f21de0 100644 --- a/src/SourceBrowser.Generator/SolutionAnalyzer.cs +++ b/src/SourceBrowser.Generator/SolutionAnalyzer.cs @@ -16,25 +16,40 @@ using SourceBrowser.Generator.Extensions; using SourceBrowser.Generator.Model; using SourceBrowser.Generator.DocumentWalkers; +using Microsoft.DotNet.ProjectModel.Workspaces; namespace SourceBrowser.Generator { public class SolutionAnalayzer { - MSBuildWorkspace _workspace; + public bool WorkspaceFailed { get; set; } + Workspace _workspace; Solution _solution; private ReferencesourceLinkProvider _refsourceLinkProvider = new ReferencesourceLinkProvider(); - public SolutionAnalayzer(string solutionPath) + public static SolutionAnalayzer FromSolutionPath(string solutionPath) { - _workspace = MSBuildWorkspace.Create(); - _workspace.WorkspaceFailed += _workspace_WorkspaceFailed; - _solution = _workspace.OpenSolutionAsync(solutionPath).Result; + var workspace = MSBuildWorkspace.Create(); + var soln = workspace.OpenSolutionAsync(solutionPath).Result; + return new SolutionAnalayzer(workspace); + } + + public static SolutionAnalayzer FromProjectJsonPaths(string[] projectJsonPaths) + { + var projectJsonWorkspace = new ProjectJsonWorkspace(projectJsonPaths); + return new SolutionAnalayzer(projectJsonWorkspace); + } + + private SolutionAnalayzer(Workspace workspace) + { + _workspace = workspace; + _solution = workspace.CurrentSolution; _refsourceLinkProvider.Init(); } private void _workspace_WorkspaceFailed(object sender, WorkspaceDiagnosticEventArgs e) { + WorkspaceFailed = true; try { var logDirectory = System.Web.Hosting.HostingEnvironment.MapPath("/WorkspaceLogs/"); @@ -89,6 +104,7 @@ private void buildDocumentModel(WorkspaceModel workspaceModel, Document document containingFolder.Children.Add(documentModel); } + private IProjectItem findDocumentParent(WorkspaceModel workspaceModel, Document document) { IProjectItem currentNode = workspaceModel; diff --git a/src/SourceBrowser.Generator/SourceBrowser.Generator.csproj b/src/SourceBrowser.Generator/SourceBrowser.Generator.csproj index e614bf7..f0edf7c 100644 --- a/src/SourceBrowser.Generator/SourceBrowser.Generator.csproj +++ b/src/SourceBrowser.Generator/SourceBrowser.Generator.csproj @@ -9,8 +9,9 @@ Properties SourceBrowser.Generator SourceBrowser.Generator - v4.5 + v4.6.1 512 + AnyCPU @@ -35,50 +36,39 @@ - - False - ..\packages\Microsoft.CodeAnalysis.Common.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.dll - - - False - ..\packages\Microsoft.CodeAnalysis.CSharp.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.CSharp.dll - - - False - ..\packages\Microsoft.CodeAnalysis.CSharp.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.CSharp.Desktop.dll - - - False - ..\packages\Microsoft.CodeAnalysis.CSharp.Workspaces.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.CSharp.Workspaces.dll + + ..\packages\Microsoft.CodeAnalysis.Common.1.1.1\lib\net45\Microsoft.CodeAnalysis.dll + True - - ..\packages\Microsoft.CodeAnalysis.CSharp.Workspaces.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.CSharp.Workspaces.Desktop.dll + + ..\packages\Microsoft.CodeAnalysis.CSharp.1.1.1\lib\net45\Microsoft.CodeAnalysis.CSharp.dll + True - - False - ..\packages\Microsoft.CodeAnalysis.Common.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.Desktop.dll + + ..\packages\Microsoft.CodeAnalysis.CSharp.Workspaces.1.1.1\lib\net45\Microsoft.CodeAnalysis.CSharp.Workspaces.dll + True - - False - ..\packages\Microsoft.CodeAnalysis.VisualBasic.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.VisualBasic.dll + + ..\packages\Microsoft.CodeAnalysis.VisualBasic.1.1.1\lib\net45\Microsoft.CodeAnalysis.VisualBasic.dll + True - - False - ..\packages\Microsoft.CodeAnalysis.VisualBasic.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.VisualBasic.Desktop.dll + + ..\packages\Microsoft.CodeAnalysis.VisualBasic.Workspaces.1.1.1\lib\net45\Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll + True - - False - ..\packages\Microsoft.CodeAnalysis.VisualBasic.Workspaces.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll + + ..\packages\Microsoft.CodeAnalysis.Workspaces.Common.1.1.1\lib\net45\Microsoft.CodeAnalysis.Workspaces.dll + True - - ..\packages\Microsoft.CodeAnalysis.VisualBasic.Workspaces.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.VisualBasic.Workspaces.Desktop.dll + + ..\packages\Microsoft.CodeAnalysis.Workspaces.Common.1.1.1\lib\net45\Microsoft.CodeAnalysis.Workspaces.Desktop.dll + True - - False - ..\packages\Microsoft.CodeAnalysis.Workspaces.Common.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.Workspaces.dll + + ..\lib\Microsoft.DotNet.ProjectModel.dll - - ..\packages\Microsoft.CodeAnalysis.Workspaces.Common.1.0.0-beta1-20141031-01\lib\net45\Microsoft.CodeAnalysis.Workspaces.Desktop.dll + + ..\lib\Microsoft.DotNet.ProjectModel.Workspaces.dll False @@ -86,15 +76,35 @@ - + + ..\packages\System.Collections.Immutable.1.1.37\lib\dotnet\System.Collections.Immutable.dll + True + + + ..\packages\Microsoft.Composition.1.0.27\lib\portable-net45+win8+wp8+wpa81\System.Composition.AttributedModel.dll + True + + + ..\packages\Microsoft.Composition.1.0.27\lib\portable-net45+win8+wp8+wpa81\System.Composition.Convention.dll + True + + + ..\packages\Microsoft.Composition.1.0.27\lib\portable-net45+win8+wp8+wpa81\System.Composition.Hosting.dll + True + + + ..\packages\Microsoft.Composition.1.0.27\lib\portable-net45+win8+wp8+wpa81\System.Composition.Runtime.dll + True + + + ..\packages\Microsoft.Composition.1.0.27\lib\portable-net45+win8+wp8+wpa81\System.Composition.TypedParts.dll True - ..\packages\System.Collections.Immutable.1.1.32-beta\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll - - False - ..\packages\System.Reflection.Metadata.1.0.17-beta\lib\portable-net45+win8\System.Reflection.Metadata.dll + + ..\packages\System.Reflection.Metadata.1.1.0\lib\dotnet5.2\System.Reflection.Metadata.dll + True @@ -148,6 +158,10 @@ SourceBrowser.Search + + + +