Showing posts with label .Net. Show all posts
Showing posts with label .Net. Show all posts

Wednesday, July 30, 2014

Using the OpenXML SDK Productivity Tool to "decompile" Office documents (Turn *X files into the C# OpenXML SDK code that would generate them)

Ode To Code - Easily Generate Microsoft Office Files From C#


These days, Office files are no longer in a proprietary binary format, and are we can create the files directly without using COM automation. A .docx Word file, for example, is a collection of XML documents zipped into a single file. The official name of the format is Open XML.

There is an SDK to help with reading and writing OpenXML, and a Productivity Tool that can generate C# code for a given file. All you need to do is load a document, presentation, or workbook into the tool and press the “Reflect Code” button.


The downside to this tool is that even a simple document will generate 4,000 lines of code. Another downside is that the generated code assumes it will write directly to the file system, however it is easy to pass in an abstract Stream object instead.

So while this code isn’t perfect, the code does produce valid document and..."

I've been blogging about the OpenXML SDK for years now, but I think this is the first time I've seen this part of it, this utility. And like he says, 4K LoC is like, well, allot, it does look like an awesome way to learn the low level OpenXML SDK ins and outs.


Related Past Post XRef:
Open Sesame - Open XML SDK is now open source

Using OpenXML to load an Excel Worksheet into a DataTable (or just how different OpenXML is from the old Excel API we're used too)

Using OpenXML SDK to generate Word documents via templates (and without Word being installed)
Checking for Microsoft Word DocX/DocM Revisions/Track Changes without using Word... (via OpenXML SDK, LINQ to XML or XML DOM)
LINQ to XlsX... Using VB.Net, LINQ, the OpenXML SDK and a little C# helper, to query an Excel XlsX
Using native OpenXML to create an XlsX (Which provides an example of why I highlight tools that make OpenXML easier...)
Generating Xlsx's on the Server? You're using OpenXML, right? With help from the PowerTools for OpenXML?

Official boat-load, as in supertanker, sized OpenXML content list (Insert "One OpenXML content list to rule them all" here)
So how do I get from here to OpenXML? Got a map for you, an Open XML SDK Blog Map…
Where to go to scratch your OpenXML dev info itch…
"Open XML Explained" Free eBook (PDF)
The Noob's Guide to Open XML Dev (If you know how to spell OpenXML but that's about it, this is your Getting Started guide...)

Reusing the PowerShell PowerTools for Open XML in your C# or VB.Net world
PowerShell, OpenXML, WMI and the PowerTools for OpenXML = Doc generation for our inner geek
Because it’s a PowerShell kind of day… PowerTools for Open XML V1.1 Released
OpenXML PowerTools updated – Cell your Excel via PowerShell
Powering into OpenXML with PowerShell

Open XML SDK 2.0 for Microsoft Office Released – Automate Office documents without Office

Open XML 2.0 Code Snippets for VS2010 (and VS2008 too)
Open XML Format SDK 2.0 Code Snippets for Visual Studio 2008 – 52 C#/VB Code Snippets to help ease your Open XML coding
Open XML File Format Code Snippets for Visual Studio 2005 (Office 2007 NOT required)

Open XML SDK v1 Released

OpenXML Viewer 1.0 Released – Open source DocX to HTML conversion, with IE, Firefox and Opera (and/or command line) support

Tuesday, July 29, 2014

FiddlerCore [Yes, that Fiddler]Core - A .Net Library that lets you add a little Fiddler to your apps

Rick Strahl's Web Log - Using FiddlerCore to capture HTTP Requests with .NET

Over the last few weeks I’ve been working on my Web load testing utility West Wind WebSurge. One of the key components of a load testing tool is the ability to capture URLs effectively so that you can play them back later under load. One of the options in WebSurge for capturing URLs is to use its built-in capture tool which acts as an HTTP proxy to capture any HTTP and HTTPS traffic from most Windows HTTP clients, including Web Browsers as well as standalone Windows applications and services.

To make this happen, I used Eric Lawrence’s awesome FiddlerCore library, which provides most of the functionality of his desktop Fiddler application, all rolled into an easy to use library that you can plug into your own applications. FiddlerCore makes it almost too easy to capture HTTP content!

For WebSurge I needed to capture all HTTP traffic in order to capture the full HTTP request – URL, headers and any content posted by the client. The result of what I ended up creating is this semi-generic capture form:


In this post I’m going to demonstrate how easy it is to use FiddlerCore to build this HTTP Capture Form. 

If you want to jump right in here are the links to get Telerik’s Fiddler Core and the code for the demo provided here.

Note that FiddlerCore is bound by a license for commercial usage – see license.txt in the FiddlerCore distribution for details.


[A whole bunch cut out]


FiddlerCore is a pretty sweet tool, and it’s absolutely awesome that we get to plug in most of the functionality of Fiddler right into our own applications. A few years back I tried to build this sort of functionality myself for an app and ended up giving up because it’s a big job to get HTTP right – especially if you need to support SSL. FiddlerCore now provides that functionality as a turnkey solution that can be plugged into your own apps easily.

The only downside is FiddlerCore’s documentation for more advanced features like certificate installation which is pretty sketchy. While for the most part FiddlerCore’s feature set is easy to work with without any documentation, advanced features are often not intuitive to gleam by just using Intellisense or the FiddlerCore help file reference (which is not terribly useful). While Eric Lawrence is very responsive on his forum and on Twitter, there simply isn’t much useful documentation on Fiddler/FiddlerCore available online. If you run into trouble the forum is probably the first place to look and then ask a question if you can’t find the answer.

The best documentation you can find is Eric’s Fiddler Book which covers a ton of functionality of Fiddler and FiddlerCore. The book is a great reference to Fiddler’s feature set as well as providing great insights into the HTTP protocol. The second half of the book that gets into the innards of HTTP is an excellent read for anybody who wants to know more about some of the more arcane aspects and special behaviors of HTTP – it’s well worth the read. While the book has tons of information in a very readable format, it’s unfortunately not a great reference as it’s hard to find things in the book and because it’s not available online you can’t electronically search for the great content in it.

But it’s hard to complain about any of this given the obvious effort and love that’s gone into this awesome product for all of these years. A mighty big thanks to Eric Lawrence  for having created this useful tool that so many of us use all the time, and also to Telerik for picking up Fiddler/FiddlerCore and providing Eric the resources to support and improve this wonderful tool full time and keeping it free for all. Kudos!



" [Click through for the rest... yes, you'll want too... oh just click already... ;]

I was first going to ask "When did Telerik buy Fiddler?" but then saw I already blogged about that almost two years ago. sigh... darn old brain.

Anyway, this is the first I'd heard of FiddlerCore (I think, lol) and Rick does a great job of introducing it and running it through its paces. If you need to packet/network sniff in your apps (i.e. you've said to your self, "Self, I wish I could build something like Fiddler into my app," well you can! (and stop talking to yourself, it's a little creepy ;)


Related Past Post XRef:
Fiddler (yes, that Fiddler) has been acquired by Telerik... [Updated with snips from Chris and Eric, Fiddler = Free++]

What do Fiddler, LinqPad, Excel and SharePoint have in common? Testing and consuming OData of course!
Fiddling as the web burns (or how to find out why it's burning) - “Debugging with Fiddler" book now available
eXpert Web Performance Analysis via Fiddler - Microsoft neXpert Performance Analysis Plugin [For Fiddler]
15 Second Introduction to Fiddler
Fiddler 2.1 Released...
Fiddler2 (Fiddler + HTTPS) Alpha Released
Microsoft Fiddler 1.2 Released and now Officially Out of Beta
Fiddler PowerToy - Part 1: HTTP Debugging
Fiddler HTTP Debugger - Fiddler

Thursday, July 17, 2014

Make your Debugger feel Pretty, with help from DotNet Pretty your Debugger*Attribute helper

<gordon's blog/> - Introduction to DotNet Pretty

Some Background on why

Another thing that come out of last weeks training was Visual Studio Debuggers. This lead to me finding the coolest visualizer ever called TPL Dataflow Debugger Visualizer which allows you to easily visualize your TPL Dataflow


Because I found this awesome visualizer I decided that everything while debugging could be awesome if there were more of these so I have created a GitHub project called DotNet Pretty where I plan on creating many visualizers to really try light up the debugging experience.

What is DebuggerDisplayAttribute?

In case you don't know DebuggerDisplayAttribute is used when you want to have a "pretty" representation of the properties in your class when seeing it in the debugger.


It doesn't seem like such a big deal with 1 object but think of how easy it would be to know stuff about objects when they in a list if they each implemented this attribute. Now obviously to use the attribute like this you need to own the object so you can add the attribute and release it.

DotNet Pretty's first contribution

The first contribution to DotNet Pretty is one that was used in the training which allows you to use the DebuggerDisplay Attribute in a different way.


This time you specify the target in the attribute like below...



How is the TDL Dataflow visualizer done?

In short the TPL Dataflow visualizer uses the DebuggerVisualizerAttribute which looks something like below


I will do a in detail post on DebuggerVisualizer Attribute when I add one to DotNet Pretty. For now though you can browse the source code of the TPL Dataflow Debugger Visualizer on CodePlex.

So what's the plan?

My plan at the moment is to find the .net types that I use most and implement visualizers for them. I'm planning on trying to get some nice ones in for TFS objects like Work Items. I'm hoping that others will use this library of visualizers and fork the code and help grow it.


We, well I, really don't much action, press, chatter about Debugger*Attribute usage. That's why when I saw TPL Dataflow Debugger Visualizer I had to queue it up for a Coding4Fun Blog post. Now Gordon's post. Looks like it's time for a little Debugger*Attribute resurgence doesn't it?

Wednesday, July 16, 2014

Using OpenXML to load an Excel Worksheet into a DataTable (or just how different OpenXML is from the old Excel API we're used too)

dotnet thoughts - Read Excel as DataTable using OpenXML and C#

In the current project we were using OpenXML extensively for reading Excel files. Here is the code snippet, which will help you to read / convert Excel files to DataTable.



You've heard me whine about how, while OpenXML is cool and how nice it is that we can access Office 2007+ files without Office or third party apps, yet the API is pretty darn different for traditional Office Object Model users? This screenshot shows why... Parts, SharedStringTables, oh my... It's not hard, just takes a while to wrap your head around.

Wednesday, June 25, 2014

.NET Framework setup verification, cleanup tool and detection code (C++) updated for 4.5.2

Aaron Stebner's WebLog - .NET Framework setup verification tool, cleanup tool and detection sample code now support .NET Framework 4.5.2

I have posted updated versions of the .NET Framework setup verification tool, the .NET Framework cleanup tool, and the sample code to detect .NET Framework install states that support detecting, verifying, and cleaning up the .NET Framework 4.5.2. You can find more information about how to download and use these tools at the following locations:

Besides the two cool tools Aaron mentions (which are must haves for anyone troubleshooting .NET installs), if you're writing code to detect what version of the .NET framework is installed on a given machine you HAVE to check out his post;

Sample code to detect .NET Framework install state and service pack level


.NET Framework versions that can be detected by the sample code

The sample code available via this article supports detecting the install state and service pack level for the following versions of the .NET Framework:

  • .NET Framework 1.0
  • .NET Framework 1.1
  • .NET Framework 2.0
  • .NET Framework 3.0
  • .NET Framework 3.5
  • .NET Framework 4 (Client and Full)
  • .NET Framework 4.5
  • .NET Framework 4.5.1
  • .NET Framework 4.5.2




Related Past Post XRef:
Microsoft .NET Framework 4.5.2 Released

Two Terrific Troubleshooting Tools -The .NET Framework Cleanup and Setup Verification Tools

.Net 4 Client Profile/Full silent install/repair/uninstall command line options

Roslyn (aka .NET Compiler Platform) for mere mortals, with Beth Massi

Beth Massi - .NET Compiler Platform ("Roslyn") for the Rest of Us

The .NET Compiler Platform (code named "Roslyn") is the next generation of the Visual Basic and C# .NET compilers. At BUILD 2014 Roslyn was released as an open source software project and the team is accepting contributions from the community.

In this interview I sit down with Dustin Campbell, a Program Manager on the managed languages team, and we talk about what Roslyn means for a .NET developer like myself. Even if you're not a compiler geek, Roslyn brings a ton of value to anyone writing VB or C# code. By making it much easier for partners to build amazing tools and for language and IDE features to get implemented much faster, developers everywhere will benefit from the faster innovation. Dustin also shows off some of the new IDE features like quick fixes and new refactorings that are available in the Visual Studio "14" CTP.  

For more information on Roslyn and to try it out, see "Installing the Preview" section of the Codeplex site at

Watch: .NET Compiler Platform ("Roslyn") for the Rest of Us 


[GD: Post Leached in Full]

Might be a great starting point to help you explain why you are so excited about Roslyn to your co-workers and dev peers...

Wednesday, June 11, 2014

VS 2012, VS 2013 and .NET Framework Doc's for offline installs (i.e. an ISO)

Microsoft Downloads - Microsoft Visual Studio and .NET Framework Documentation (ISO image)

This download includes an ISO image file of the Visual Studio and .NET Framework documentation—overviews, how-to articles, API reference pages, sample code, and more—to help you in your development efforts

Date Published: 6/10/2014

VS2012Documentation.iso, 2.7 GB

VS2013Documentation.iso, 4.0 GB

Visual Studio is a family of products, tools, and technologies that you can use to build powerful, high-performance apps, including Windows Store, desktop, web, phone, and game-console apps. You can write code in Visual Basic, Visual C#, Visual C++, Visual F#, and JavaScript, and create mixed-language solutions. And you can simplify the development of your apps by using the .NET Framework.

This download includes an ISO image file of the Visual Studio and .NET Framework documentation—overviews, how-to articles, API reference pages, sample code, and more—to help you in your development efforts. It includes multiple ISO files for different versions of the Visual Studio and .NET Framework documentation. When you choose the Download button, you’ll be prompted to select one of these files (see Quick Details for a list).

After you download the ISO image file, you can record, or "burn," the image to a recordable DVD for later installation or redistribution. You can also open the ISO image file and copy its contents to a local folder, or you can mount and access the ISO image file as a virtual device.
The Visual Studio and .NET Framework documentation is provided in the following formats:

  • Online, in the MSDN Library (this is the most up-to-date content):
  • Offline, through downloadable books (available from the Visual Studio Help menu).
  • (This download) As a DVD5 ISO image file, which is a copy of a DVD that includes the documentation. The image file is provided for users who want to create an installation DVD (for example, administrators who want to install the documentation on multiple computers offline). If you want to download the documentation for local use on a single computer, choose the online or offline option above.

Note: This DVD5 ISO image file doesn’t include updates to the documentation that were made after product release. See the online documentation for the latest information.

If you have a network or environment that isn't connected to the internet (yep, day job has one...) and you need VS/.NET Doc's this is an ISO you'll need.

It reminds me of the MSDN Library DVD days (which I think I still have a number

dotPeek introduces Process Explorer, decompile running .Net apps, in v1.2 EAP

JetBrains .NET Tools Blog - dotPeek 1.2 EAP: Introducing Process Explorer

"Have you ever wanted to dig deeper into a process running on your machine? We have. That’s the reason why the new dotPeek 1.2 EAP build introduces Process Explorer.

The Process Explorer window provides you with the list of all currently running processes and allows decompiling those of them that are .NET processes. Once you locate a process to decompile, you can add it to Assembly Explorer for further investigation by clicking the “+” button. From there, you can export decompiled code to a Visual Studio project if necessary.


You can see native processes in this window as well although you naturally shouldn’t expect dotPeek to be able to decompile them. To display native processes, click Show Native Processes in the Process Explorer toolbar


In case you’ve missed it, note that dotPeek 1.2 EAP can now work as a symbol server and supply Visual Studio debugger with the information required to debug assembly code. Download dotPeek 1.2 EAP and give it a try"

That's scary cool...

On an aside, I wonder if this isn't another reason to be interested in .Net Native Compile when releasing commercial apps? Native speed and a much harder time decompiling.... hum.


Related Past Post XRef:
"Hello dotPeek plugin" Creating a dotPeek plugin is New Project, NuGet easy...
And there were three free RTW'd .Net Decompilers ... dotPeek v1 Released
Another decompiler comes online - dotPeek from JetBrains


DevExpress - Free DevExpress MVVM Framework released

Previously, I mentioned our plans to offer a free version of the MVVM Framework. I am happy to announce the free DevExpress MVVM Framework is now available on NuGet and GitHub.


The free DevExpress MVVM Framework includes all the capabilities of the MVVM libraries installed with our components, except for those features specific to component integration. If you are using an up-to-date component installation, you already have full access to the MVVM Framework. Now, anyone can build an app with the DevExpress MVVM Framework or introduce our MVVM to an existing project – even when that project makes use of another framework.

The major benefits of the DevExpress MVVM Framework are the independent parts in the framework, used separately or with other third-party MVVM libraries.

  • With POCO, get clear ViewModel code without unnecessary duplications. The POCO mechanism automatically generates bindable properties, commands, asynchronous commands, wrapper code for services, and much more.
  • EventToCommand support now includes converting event arguments, calling bound commands via Dispatcher, and processing attached events.
  • Finer visual customizations are available from the ViewModel using a set of predefined Services or custom Service.
  • Messenger takes the difficulty out of building loosely coupled app architectures.
  • Modify the behavior of any visual component. Simply create a Behavior and assign it with an Interaction.
  • Choose from a new set of converters useful for everyday scenarios.

Easily find the free MVVM Framework on NuGet by searching “dx mvvm”. The free DevExpress MVVM Framework is distributed under the MIT License. Source code, testing libraries, and samples are available on GitHub. [GD: Post Leached In Full]



DevExpress MVVM Framework is a set of components helping to work in the Model-View-ViewModel pattern in Silverlight and WPF.


There are two versions of the DevExpress MVVM Framework:

1. The version that is included to the DevExpress WPF/Silverlight component suite.

2. The free version that is very similar to the first one. The only difference is that it does not contain some capabilities that are only needed when the framework is used with DevExpress components.

Although DevExpress provides documentation for the first version only, you can use this documentation even if you use the free version. The documentation is available by the following link:

At the DevExpress site, you can find several training blog posts:


The Free DevExpress MVVM Framework is available from NugGet:

While I'm not sure we really need another MVVM framework, I do applaud DevExpress in releasing this and releasing it as open source. That and I'm glad to see a little WPF love. :)

Tuesday, June 03, 2014

Not your usual Succinctly book... "Neural Networks using C# Succinctly" (reg-ware)

James D. McCaffrey - Neural Networks using C# Succinctly

I wrote a new book titled “Neural Networks using C# Succinctly”. It was published this week. There are many existing books on neural networks but no good ones (in my opinion) that focus on how to create neural networks from a software developer’s point of view. My book is free and you can download a PDF version from here:


I’ve written books before but for “Neural Networks using C# Succinctly” the process was a bit different. I was sitting at my desk one day when I got an unsolicited phone call. Normally I never answer such calls but on this particular day, I did. The call was a young woman named Hilary Bowling who worked for a company called Syncfusion. Hilary asked me if I’d be interested in writing a book about neural networks.

Hilary told me that Syncfusion published relatively short (roughly 100 page) e-books and made them available for free. I was skeptical — I figured there’d have to be a catch of some sort. But in fact, Syncfusion does publish free e-books for software developers. The only minor catch is that you have to register and end up on Syncfusion’s mailing list, but Syncfusion doesn’t take advantage of this (I signed up to see what would happen).

Anyway, it took me a few months to write “Neural Networks using C# Succinctly” (writing a book is much more time-consuming than you might expect) and now it’s available from the Syncfusion Web site...

Syncfusion - Neural Networks using C# Succinctly


Neural networks are an exciting field of software development used to calculate outputs from input data. While the idea seems simple enough, the implications of such networks are staggering—think optical character recognition, speech recognition, and regression analysis. With Neural Networks Using C# Succinctly by James McCaffrey, you'll learn how to create your own neural network to solve classification problems, or problems where the outcomes can only be one of several values. Learn about encoding and normalizing data, activation functions and how to choose the right one, and ultimately how to train a neural network to find weights and bias values that provide accurate predictions.

Table of Contents

  1. Neural Networks
  2. Perceptrons
  3. Feed-Forward
  4. Back-Propagation
  5. Training

How can you go wrong with 128 free('ish) pages on C# Neural Networks!



Related Past Post XRef:
"Visual Studio 2013 Succinctly" free [reg-ware] now available from... you guessed it, Syncfusion
"Windows Phone 8 Succinctly - The practical approach to Windows Phone 8 development" eBook (Reg-ware)
Succinctly eBook of the Day: "Twitter Bootstrap Succinctly" [Reg-ware]
Need some help up the WPF learning curve? "WPF Succinctly" from Syncfusion is now available (and free :)
TypeScript Succinctly - Free [Name/email-ware] eBook
Getting sharp with F# with the free "F# Succinctly" eBook [reg-ware]
Syncfusion helps shed a little succinct light on LightSwitch with "LightSwitch Succinctly" (Reg-ware)
"JavaScript Succinctly" - Another free (reg-ware) eBook from Syncfusion
Get into sync with HTTP with the new free (reg-ware) Syncfusion Succinctly eBook, "HTTP Succinctly"
Spelunk the technical details of the PDF format with "PDF Succinctly" from Syncfusion (Free/reg-ware PDF/Mobi ebook)
"Git Succinctly" Free/reg-ware PDF/Mobi ebook)
jQuery Succinctly - Free eBook (reg-ware, PDF and/or Mobi)


Monday, June 02, 2014

Ook! The Visual Studio 2013 SDK Sample (and more)

I'm sure you saw my Coding4Fun Blog post today? The one where I highlight the just released Visual Studio 2013 SDK samples? Oh wait, grrrr... maybe you didn't since just found out I screwed up the schedule for it (7/2, 6/2, so close yet so far apart) doh! Well it's live now at least! :/ Anyway, for details on the entire newly released Visual Studio 2013 SDK samples, check out Visual Studio 2013 SDK Samples Released

Of the samples, this is one that makes me smile, as I dig Ook!

Ook Language sample - VS 2013

This is the example used during the Visual Studio Ecosystem Summit Presentation "Getting Linguistic: Integrating a Language into Visual Studio" by Chris Granger. It implements the following language features for the esoteric language "Ook!":

  • General purpose token tagger
  • A classification tagger
  • A QuickInfo source and controller
  • A completion source and controller



Grab it and get Ooking!


Related Past Post XRef:
Visual Studio 2010 SDK Samples - One 30MB download, 68 samples, tons of learning...
Programming Languages You May have Missed. Zombie, Ook!, Chef and more

The ".NET Framework Regular Expressions" Cheat Sheet (1 page, front and back, lots-O-info)

Microsoft Downloads - .NET Framework Regular Expressions - Quick Reference

Version: 1.0

Date Published: 5/28/2014

File Name:

Regular expressions quick reference.docx, 70 KB

Regular expressions quick reference.pdf, 587 KB

This download is a document that provides information about the .NET Framework regular expression language. It's designed for quick lookup of characters, codes, groups, options, and other elements of regular expression patterns. It's provided in Microsoft Word (.docx) and .pdf formats.


If you don't regex often this cheat sheet might come in real handy. Or worse case it makes for cool cube art... :)

Thursday, May 15, 2014

How portable is your .NET code? API Portability Analyzer Alpha

Microsoft Downloads - API Portability Analyzer - Alpha

The API Portability Analyzer tool provides a list of .NET APIs used by an app, and portability of those .NET APIs on various .NET profiles/platforms.

Version: 1.0

Date Published: 5/12/2014

API Portability Analyzer Alpha Pre-Release License Terms.docx


The API Portability Analyzer tool provides list of .NET APIs used by an app, and portability of those .NET APIs on various .NET profiles/platforms. This allows easy portability analysis for developers who are considering porting existing app on various platforms.

Note: During the process of identifying the .NET APIs used by a binary Microsoft collects the list of .NET APIs used by the user submitted binaries. Microsoft also collects the names of various user created APIs. The tool does not collect the binary code, only names of APIs are collected. Microsoft will also collect assembly information such as assembly references for the binary & the Target Framework Moniker (TFM).


.NET Framework Blog


Targeting Multiple Platforms

We’ve been working for several years to make it easier to write code for multiple platforms, both as apps and libraries. We started by enabling our PCL reference assemblies for Xamarin, who quickly moved forward with that change. More recently, we’ve been working closely with Xamarin to make our .NET NuGet packages work better with Xamarin tools, to make it easier to build .NET apps for iOS and Android. There’s still work to do, but the experience has gotten much better and will continue to improve.

At TechEd, we announced a new portability analysis tool, called ApiPort. It provides you with two main pieces of data: the platforms that you can easily/reasonably target with your code, and the dependencies that are preventing you from targeting additional platforms.

The command line tool generates an Excel report that provides you with two views of its portability analysis. It provides a high-level color-coded view for a given set of platforms. It also provides a very detailed list of all the types and members used within your code, and whether they are supported, per platform. Given that the report is in Excel, it is very easy to filter the list, build pivot tables and do whatever else you want to perform further analysis.

The image below shows a small sample of the high-level portability analysis view. Only one assembly is shown, but there can be multiple. Check out this sample portability analysis to get a first-hand view.


The tool has another function, too. All of the dependency data (not the assemblies) are uploaded to an Azure service that the .NET team maintains. The data that the tool uploads is the list of assemblies and APIs that your code relies on. We do not record where the data came from or by whom. We do not upload any of your actual code or binaries. We want to know which functionality we need to bring to each platform to make it easier to target all platforms.

If you are finding it difficult to target a particular platform, please “vote” for the APIs you want added to a particular platform by running the tool on your app and libraries. It’s really easy to run the tool on a whole directory.

This first release of tool is missing a few features that we are in the process of adding. The Xamarin/Mono platforms are currently missing from the tool. It also doesn’t yet take into consideration NuGet packages that make .NET Framework APIs available on other platforms, counting them as missing APIs.


If you're wondering how portable your code is, this is one of your first stops...

Monday, May 12, 2014

Cool Round-up of the Day: Rob's "Top 10 Microsoft Developer Links for Monday, May 12, 2014"

Rob Caron - Top 10 Microsoft Developer Links for Monday, May 12, 2014


I think Rob's got the round-up cowboy title for the day... The only thing he's missing is the Azure stuff, more on the ASP.NET vNext story and the Office 365 API drop. But then again, he's trying to filter it down to 10, so I guess I can cut him a little slack... :)

Thursday, May 08, 2014

Ricky Leeks and learning about leaks in this .NET Memory Management article collection [Contact Info-ware]

Red Gate - Ricky Leeks on Learning .NET Memory Management

To write the best .NET code, you need to know exactly how the .NET framework really manages memory.

In this free 6-part article series, Ricky Leeks gathers together the top tips and techniques for understanding memory management, garbage collection, interoperability, and more.

Then hunt down the memory leaks in your application with a free trial of ANTS Memory Profiler.

1. Free article: Learning .NET Memory Management

  • The Fundamentals of .NET Memory Management
  • Top 5 .NET Memory Management Gotchas
  • 5 Tips for Avoiding Automatic Garbage Collections

2. Track down memory leaks with ANTS Memory Profiler




(via Tatworth - Free article from Redgate - Learning .NET Memory Management)


Related Past Post XRef:
"Under the Hood of .NET Memory Management" free eBook
.Net Memory Management Explained - Red Gate Story Book Style...

Tuesday, May 06, 2014

.NET SDKs, Targeting Packs and Downloads Information and Links

.NET SDKs and Downloads

You can build apps for many platforms and services by downloading .NET Framework targeting packs and SDKs and using them with Visual Studio. Check out the .NET Framework blog for information on new releases.

The downloads available differ by Visual Studio version. Pick your Visual Studio version ...



Given today's, Microsoft .NET Framework 4.5.2 Released, I appreciated the timing on this information...

Microsoft .NET Framework 4.5.2 Released

Microsoft Downloads - Microsoft .NET Framework 4.5.2 Developer Pack for Windows Vista SP2, Windows 7 SP1, Windows 8, Windows 8.1, Windows Server 2008 SP2 Windows Server 2008 R2 SP1, Windows Server 2012 and Windows Server 2012 R2

The .NET Framework 4.5.2 Developer Pack installs the multi-targeting pack for .NET Framework 4.5.2. Developers can build applications targeting the .NET Framework 4.5.2 using either Visual Studio 2013, Visual Studio 2012 or third party IDEs. You need to download the web installer instead of this package if you intend to redistribute .NET Framework 4.5.2.

Version: 4.5.2

File Name: NDP452-KB2901951-x86-x64-DevPack.exe

Date Published: 5/6/2014

File Size: 328.3 MB

The .NET Framework 4.5.2 Developer Pack is a single package that installs .NET Framework Multi-targeting pack for .NET Framework 4.5.2 and also .NET Framework 4.5.2. Developers can build applications targeting the .NET Framework 4.5.2 using either Visual Studio 2013, Visual Studio 2012 or third party IDEs.

You need to download the web installer from here instead of this package if you intend to redistribute .NET Framework 4.5.2.

This package installs the following components:

  • .NET Framework 4.5.2
  • .NET Framework 4.5.2 Multi-Targeting Pack:Contains the reference assemblies needed to build apps that target the .NET Framework 4.5.2
  • .NET Framework 4.5.2 Language Packs
  • .NET Framework 4.5.2 Multi-Targeting Pack Language Packs: Contains the IntelliSense files to display help while building apps that target the .NET Framework 4.5.2 through Visual Studio and third party IDEs.


The .NET Framework 4.5.2 runs side-by-side with the .NET Framework 3.5 Service Pack 1 (SP1) and earlier versions of the .NET Framework. However, the .NET Framework 4.5.2 is an in-place update to the .NET Framework 4.5.1, the .NET Framework 4.5, and the .NET Framework 4.

Please see the Knowledge Base Article KB2901951 for more information.
For important information about this release, see the .NET Framework 4.5.2 Readme File.


NOTE: As of my posting, the above KB and ReadMe are not yet online.
UPDATE: ReadMe and KB's are coming online as I write this...

I wonder if this was released early? I'd have thought that this would have been released next week, during TechEd NA? Not sure yet what's actually in it, more to follow as it becomes available...
UPDATE: According to my sources, the release was intention.

Update: What's New in the .NET Framework 4.5, 4.5.1, and 4.5.2

  • New APIs for ASP.NET apps. ...

  • Resizing in Windows Forms controls. This feature has been expanded. You can now use the system DPI setting to resize components of the following additional controls (for example, the drop-down arrow in combo boxes):


    This is an opt-in feature. To enable it, set the EnableWindowsFormsHighDpiAutoResizing element to true in the application configuration (app.config) file:...

  • New workflow feature. A resource manager that's using ...

  • Profiling improvements. The following new unmanaged profiling APIs provide more robust profiling: ...

  • Debugging improvements. The following new unmanaged debugging APIs provide better integration with a profiler. You can now access metadata inserted by the profiler as well as local variables and code produced by compiler ReJIT requests when dump debugging.


  • Event tracing changes. The .NET Framework 4.5.2 enables out-of-process, Event Tracing for Windows (ETW)-based activity tracing for a larger surface area. This enables Advanced Power Management (APM) vendors to provide lightweight tools that accurately track the costs of individual requests and activities that cross threads. These events are raised only ...


Related Downloads:

Wednesday, April 30, 2014

Prism 5.0 for WPF eBook (epub, mobi, pdf)

Microsoft Downloads - Prism 5.0 for WPF - Book Download


Date Published: 4/29/2014



Prism provides guidance designed to help you more easily design and build rich, flexible, and easy to maintain Windows Presentation Foundation (WPF) desktop applications. Using design patterns that embody important architectural design principles, such as separation of concerns and loose coupling, Prism helps you to design and build applications using loosely coupled components that can evolve independently but which can be easily and seamlessly integrated into the overall application. Such applications are often referred to as composite applications.


This lets you take the online doc's offline and read them in your reader of choice...


Related Past Post XRef:
Prism continues its Windows Desktop/WPF/MVVM Love with v5

The XAML Illustrated Timeline

Jeremy Alles Blog - An history of 11 years of XAML stacks

Today I’m releasing something I’m a bit excited about… I call this the XAML timeline !

It’s an interactive history of 11 years of XAML development at Microsoft, from a .Net developer point of view (me!). Remember Avalon ? Longhorn ?

Feel free to click on the following picture to open the timeline in a new tab:


The web page has a few interesting things under the hood:

  • ...

This is an awesomely cool view of the XAML timeline...

Monday, April 28, 2014

Updated .NET Framework Repair Tool now available. Your must go to tool for repairing .Net Framework installs

.NET Framework Blog - Introducing the Microsoft .NET Framework Repair Tool

The .NET Setup team has made some significant investments over the last couple of years in improving the deployment experience for the .NET Framework setup and its updates.  In spite of this effort, occasionally some customers run into issues deploying the .NET Framework or its updates that cannot be fixed from within the setup itself. For such cases, we have a tool - the .NET Framework Repair Tool that can help with detecting and fixing some of these common causes of install failures.

We are happy to announce a new version of the tool that encompasses support for all versions of the .NET Framework from 3.5 SP1 to 4.5.1. This update includes the support for running the tool in unattended modes (quiet/passive) and some additional fixes for new scenarios that were not previously included.

How to obtain the latest version of the Microsoft .NET Framework Repair Tool?

The tool is available for download from the Microsoft Download Center.

For more information about the fixes and options in this revision of the tool, see the Knowledge Base Article KB2698555.

Features in this release:

Key features included in this release of .NET Repair Tool:

  1. Support for .NET Framework 4.5 and .NET Framework 4.5.1.
  2. You can run the tool in Quiet or Passive modes via the command line. This enables automation of the repair task if needed, or using the tool in larger enterprise-wide deployments.
  3. You can either target specific .NET Framework versions to fix or all versions. The first option is going to run much faster than the second.
  4. A “Log Collection Only” mode was added that allows collection of the logs relevant to .NET Framework setup. This is useful for troubleshooting and root causing the issue before any fixes/changes are applied to the machine.
  5. The tool supports an Offline Repair mode so this can be used in an offline/locked down environment.

Using the tool:

The tool can be run in two ways:

  • In full UI mode, wherein the wizard will guide you through the various steps for scanning and fixing issues.
  • In Quiet/Passive Mode using command line switches. You will most likely use this option if you want to automate the process of running the tool for applying fixes, collecting logs, repairing specific versions, etc. A common usage may be like:

NetFxRepairTool.exe /q /l "%temp%"

This will run the tool in quiet mode, apply fixes/repairs for supported .NET Framework versions (excluding in box versions), collect logs in %temp% folder and send usage data to Microsoft.



What this means is that we cannot repair the .NET Framework because the required Windows Installer database (MSI) is missing. Another obvious thing would be to try downloading and installing the .NETFramework 4.0 Client again. However, it would result in the same error. Here is what we find in the log file:

MSI (s) (78:68) [17:58:26:798]: Machine policy value 'DisableUserInstalls' is 0

MSI (s) (78:68) [17:58:26:799]: Warning: Local cached package 'C:\WINDOWS\Installer\f79cee8.msi' is missing.


MSI (c) (E8:50) [10:36:33:200]: MainEngineThread is returning 1612

The return code 1612 translates to the message ”The installation source for this product is not available. Verify that the source exists and that you can access it.”, reflecting the fact that the product MSI is missing from the Windows Installer cache and Setup cache locations.

This is where the .NET Framework Repair tool can come in handy. It will take care of the repair and make all the necessary changes to the machine and restore .NET Framework to a healthy state. This is how the “Additional repair options” step looks like in this scenario:


This is just one example of many issues the .NET Framework Repair tool can fix.


We don’t intend to stop here, we plan to make continuous improvements to the overall setup experience – the product setup, it's updates, as well as this Repair tool.

Microsoft .NET Framework Repair Tool is available

The Microsoft .NET Framework Repair Tool detects frequently occurring issues that affect the Microsoft .NET Framework setup or updates. The tool tries to resolve those issues by applying known fixes or by repairing the corrupted installations of the supported .NET Framework versions. The tool has an easy-to-use wizard-based user interface (UI). It also supports command line usage together with more advance options.

Microsoft has released the following updated version of the Microsoft .NET Framework Repair Tool.

Latest version
Last Updated: 03/13/2014
Release: v1.2
Version: 4.5.52207.36207
Supported Languages: English (United States)
Changes that are included in release v1.2
  • Quiet mode and Passive mode support through command line is added for the tool. Now, the tool does not require you to only run in UI mode. Therefore, the task can be automated.
  • The tool now supports the .NET Framework 4.5 and the .NET Framework 4.5.1. Therefore, fixing and repairing are also applicable for these products.
  • A new, optional command line switch is added to enable the repair of specific .NET Framework versions to override the repair of other installed versions at the same time.
  • The repair tool-generated log file can now be optionally saved in a user-specified location by using a command line option. This new option overrides the default location, which is the current user’s desktop in UI mode and %temp% folder in Quiet/Passive mode.
    Note We recommend that you save logs to a specified location by using this option to run the tool in Quiet or Passive mode.
  • A new option lets you run the Repair Tool in Log Collection Modeonly, without applying any fixes or repairs. The option provides the flexibility to collect and investigate logs before you apply actual fixes.
  • New, optional support is added to let you opt out of any data collection in Quiet or Passive mode.
  • Software updates improve tool stability and fix other causes of .NET Framework setup failures.

  • The .NET Framework Repair Tool is available in English only.
  • The supported platforms and .NET Framework versions are listed in the "Applies to" section.




Not a tool you should need often, I hope, but one that if you do, you really really do....


Related Past Post XRef:
.Net 4 Client Profile/Full silent install/repair/uninstall command line options
Two Terrific Troubleshooting Tools -The .NET Framework Cleanup and Setup Verification Tools