{"id":623,"date":"2014-05-29T19:56:00","date_gmt":"2014-05-29T19:56:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2014\/05\/29\/solution-dependency-viewer-extension\/"},"modified":"2019-02-18T18:40:30","modified_gmt":"2019-02-18T18:40:30","slug":"solution-dependency-viewer-extension","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/solution-dependency-viewer-extension\/","title":{"rendered":"Solution Dependency Viewer extension"},"content":{"rendered":"<p>Hello,<\/p>\n<p>In my previous blog, I introduced PDBProject Extension <a href=\"http:\/\/visualstudiogallery.msdn.microsoft.com\/271bc718-e668-4114-bb0b-4ac787192db0\">VS2103<\/a> as an alternative way to leverage the IDE features.&nbsp; In this post, I would like to introduce <a href=\"http:\/\/visualstudiogallery.msdn.microsoft.com\/b11824d0-d942-4863-99f8-e1884f26387a\">Solution Dependency Viewer Extension<\/a> as an easy to understand overview of your solution.&nbsp; This extension parses each C++, C#, and VB projects in the solution and presents a graph showing projects as nodes and project references as edges.&nbsp;<\/p>\n<p>&nbsp;<a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/8688.dgmlView.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/8688.dgmlView.png\" alt=\"Sample Solution Dependency in DGML \" width=\"343\" height=\"482\" \/><\/a><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/1856.a7dgml.PNG\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/00\/65\/69\/1856.a7dgml.PNG\" alt=\"Dependency Graph of C++ Projects\" width=\"530\" height=\"405\" \/><\/a><\/p>\n<p>The parsing of projects are done via MSBuild Framework.&nbsp; Unlike the PDBProject that uses the Construction model, this extension uses the evaluation model.&nbsp; It is slightly slower, however, it is required to get the full path to the Primary output and Projects references.&nbsp; In one instance,&nbsp;a project reference had a macro that changed on between &ldquo;Debug&rdquo; and &ldquo;Release&rdquo; configuration.&nbsp; If the construction model were used, the macro &ldquo;$(Configuration)&rdquo; would have not worked as a path.&nbsp; Using the evaluation model solved this problem as the active solution configuration are passed into each project.&nbsp;<\/p>\n<p>Evaluation model also means, other information from each project could be represented in the graph.&nbsp; In the comments below, I would like to hear from you.&nbsp; One thought is to use number of source files to affect size of the node.&nbsp; In an essence, larger projects would appear bigger in the graph.&nbsp; Another thought is to show appx packaging information from each projects.<\/p>\n<p>PS. Add and removing edges to also change the project system is already on the To-do list.<\/p>\n<p>Thanks<\/p>\n<p>VC++ Project &amp; Build<\/p>\n<p>Felix Huang<\/p>\n<div>&nbsp;<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Hello, In my previous blog, I introduced PDBProject Extension VS2103 as an alternative way to leverage the IDE features.&nbsp; In this post, I would like to introduce Solution Dependency Viewer Extension as an easy to understand overview of your solution.&nbsp; This extension parses each C++, C#, and VB projects in the solution and presents a [&hellip;]<\/p>\n","protected":false},"author":289,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[219,220,221,13,222,223,185],"class_list":["post-623","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus","tag-dependency","tag-extension","tag-graph","tag-msbuild","tag-solution","tag-viewer","tag-visual-studio"],"acf":[],"blog_post_summary":"<p>Hello, In my previous blog, I introduced PDBProject Extension VS2103 as an alternative way to leverage the IDE features.&nbsp; In this post, I would like to introduce Solution Dependency Viewer Extension as an easy to understand overview of your solution.&nbsp; This extension parses each C++, C#, and VB projects in the solution and presents a [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/289"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=623"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/623\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35994"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}