{"id":6459,"date":"2018-09-23T11:28:15","date_gmt":"2018-09-23T11:28:15","guid":{"rendered":"http:\/\/putridparrot.com\/blog\/?p=6459"},"modified":"2018-09-23T11:28:15","modified_gmt":"2018-09-23T11:28:15","slug":"fuslogvw-how-could-i-forget-you","status":"publish","type":"post","link":"https:\/\/putridparrot.com\/blog\/fuslogvw-how-could-i-forget-you\/","title":{"rendered":"fuslogvw, how could I forget you?"},"content":{"rendered":"<p>This is one of those reminder&#8217;s to myself&#8230;<\/p>\n<p><em><strong>Don&#8217;t forget that you can use fuslogvw to find problems loading assemblies<\/strong><\/em>.<\/p>\n<p><strong>Why do I need reminding?<\/strong><\/p>\n<p>I had an issue whereby a release build of an application I was working on had been configured for live\/prod for the first time and somebody went to test the application which simply failed at start-up &#8211; just displaying a Windows dialog asking whether I wanted to close or debug the application.<\/p>\n<p>Ofcourse, the application worked perfectly on my machine and oddly the non-prod versions also worked fine on the other user&#8217;s machine. However the live\/prod release had one change to the previous build. A new feature had been removed which wasn&#8217;t ready to go live and unbeknown to me, the removal of it&#8217;s project caused the build to deploy older versions of a couple of DLL&#8217;s as part of the new live\/prod build. <\/p>\n<p>On my machine this wasn&#8217;t an issue as .NET located the newer versions of the DLL&#8217;s, on the other user&#8217;s machines these could not be located. <\/p>\n<p>This is fine, it was all part of pre-release testing cycle but a little confusing as all the non-prod configurations worked fine on other user&#8217;s machines.<\/p>\n<p><strong>When do we get to fuslogvw?<\/strong><\/p>\n<p>I haven&#8217;t had the need to use fuslogvw for ages, but really should probably use it a lot more. To be honest, it makes sense to have it on all the time to catch such potential issues.<\/p>\n<p>What fuslogvw can do is list any failures during start-up of a .NET application. Running fuxlogvw.exe from the Windows SDK folder (for example C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.7.1 Tools) will result in the fuslog UI being displayed. As you might have guessed from the name the fus-log-vw is a viewer for the fusion log files.<\/p>\n<p><em>Note: You must run fuslogvw as Admin if you want to change the settings, i.e. set the path of the log files, change the level of loggin, i.e. I just wanted to log all the bind failures, etc.<\/em><\/p>\n<p>Leave fuslogvw open and then run the .NET application you&#8217;re wanting to take a look at. Now you&#8217;ll need to press the Refresh button on fuslogvw to see the logs after the application has started and depending on what you are logging you may see either a list of assemblies that were loaded (for example when just logging everything) or see failures etc.<\/p>\n<p>We can now see what assembly and what version of that assembly the application (we&#8217;re monitoring) tried to load and we can inspect the log itself for more information on the failure (via the log file or the fuslogvw). <\/p>\n<p>It&#8217;s as simple as that.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is one of those reminder&#8217;s to myself&#8230; Don&#8217;t forget that you can use fuslogvw to find problems loading assemblies. Why do I need reminding? I had an issue whereby a release build of an application I was working on had been configured for live\/prod for the first time and somebody went to test the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[49],"tags":[],"class_list":["post-6459","post","type-post","status-publish","format-standard","hentry","category-net"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts\/6459","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/comments?post=6459"}],"version-history":[{"count":5,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts\/6459\/revisions"}],"predecessor-version":[{"id":6483,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts\/6459\/revisions\/6483"}],"wp:attachment":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/media?parent=6459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/categories?post=6459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/tags?post=6459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}