Resharper 8.0.1 RTM, Windows 8.1 RTM and Visual Studio 2013 RC

There are some recent releases (at the time of writing) that I think many of you will be interested in.



Resharper 8.0.1

This is a bug fix update for Resharper 8. It supports pre-release Visual Studio 2013 better and also Visual Studio 2012 as usual.

Summary of fix areas:

  • Unit test runner (freezes, crashes, incorrect test status, conflicts with NUnit Test Adapter etc.)
  • Export of settings
  • Code analysis (second check expression in a double-check lock reported as always true)
  • UI (License Information dialog box, VS2008 and VS2012 integration cosmetics)
  • Internationalization (Move HTML to Resource not working)
  • Code completion (double completion lists, broken IntelliSense in projects targeting Windows 8.1)
  • Performance (mostly with unit test runner and CSS)

For the entire list of fixes, please see ReSharper 8.0.1 release notes.

Learn more at:



Windows 8.1 RTM (And Windows Server 2012 RTM)

Windows 8.1 RTM was meant to be held until the retail version in October, but Microsoft changed their mind and made it available for MSDN & TechNet subscribers to allow developers to test their applications on the RTN version (which has several API changes from the preview). If you have an MSDN subscription, go ahead and check your subscriber downloads.

The versions available as of now are Windows 8.1, Windows 8.1 Pro, and Windows 8.1 N. Windows 8.1 Enterprise might be available in a week or two.

Note that many Microsoft partners, you should only use MSDN downloads for VMs not real machines, and should use the Microsoft Partner Network for the real machine installs. Unfortunately the Partner Network will et Windows 8.1 by October with everyone else.

Note that Windows Server 2012 RTM is also available with the same terms, which makes its availability as a hosting OS still practically on hold for many people, btu it’ll be useful for creating test labs, etc. inside environments that consider deploying it.

You can learn more about Windows Server 2012 RTM from:



Visual Studio 2013 RC (Release Candidate)

To help with application testing in Windows 8.1 without wrapping up Visual Studio 2013 RTM too early, Microsoft has released Visual Studio 2013 RC at the same time, with a go-live license (meaning you can use it for production applications). You don’t need a special MSDN subscription to use the RC, but if you plan to develop Windows Store applications, then you really need to install it on Windows 8.1.

There are many new features in Visual Studio 2013, several were available since the previous Preview, but also many have arrived with the RC, here’s a video and complete listing of what’s new in Visual Studio 2013 Release Candidate:

Before downloading, you may want to check out the compatibility information from:

Then you can download Visual Studio 2013 RC from:

Download Visual Studio Updates For Offline Installation

In case you don’t know already, Visual Studio 2012 Update 2 was released April 4th (Official AnnouncementDownload PageRelease Notes).

Like the previous Visual Studio update, you get a very small EXE file, which you run to download the update from the Internet, install it, and then delete it. This means that if you need to install the update on multiple machines, you may need to download it multiple times.

In this post, I’ll show you how to get the EXE to download the files to a known location so that you can use it on multiple machines, my sample update will be Visual Studio 2012 Update 2.

Offline Download Instructions

  1. Download the standard small EXE file, for VS 2012 Update 2, the filename is VS2012.2.exe
  2. Open a command window at the same folder you downloaded the EXE to

    One easy way to do it is open the folder with Windows Explorer, and write "powershell" (or "cmd" for standard command prompt – both without quotes) in address bar

  3. In command window, write
    .\VS2012.2.exe /layout

    Note the "/layout" flag, this tells the EXE you want to download the files and keep them, instead of install and delete them. Also note the file name may be different for different updates (or if you saved it with different name)

  4. When a wizard similar to installation shows, choose the download folder at the first step and press "DOWNLOAD".   

    download location

    I suggest that you create a new folder to store the files to, what you are downloading is an EXE with the same file name as what you downloaded, and a "Packages" folder containing all different bits of the update

  5. Wait as the download completes. This will take time, long time. That’s why we want to do it fewer times, right?


    Once finished, you can copy the downloaded folder to other machines, and use the EXE next to (NOT inside) the "Packages" sub-folder to install the update without requiring any extra downloads.

The instructions are also found at the end of the download page, but it seemed that not many people noticed it, which is why I wrote this post.

Gotchas & Going Forward…

Note that the download tool isn’t exactly like your preferred download manager. Don’t expect download speed optimizations or error-proof resume for network failures, etc..

There is a feature request for the Visual Studio to include the update in an ISO file that you can download use the best way you like instead. If you want to see this happening, please vote it up here:

ASP.NET and Tools 2012.2 Update & Web Essentials Extension

For those who didn’t see the news flying everywhere, there is a new ASP.NET (mainly tooling) update announced on Scott Guthrie’s blog:

Release Notes:

If are using the great Web Essentials Visual Studio extension, and you updated the extension yesterday and noticed in Web Essentials change log that several editors like LESS and CoffeeScript editors were removed, this was as the editors moved into the official update.

This means if you want to use the recent update with Web Essentials (strongly recommended), you probably should also update Web Essentials to the latest version first before installing the update (Scott mentions that as well).

My Recommended Windows Server 2012 R2 Hosting (Dedicated Server Or VPS)

Windows Server 2012 R2

Soon after Windows Server 2012 has been released, I was wondering when hosting providers will start providing it, talking to the hosting provider that hosts this very blog, SoftSys Hosting, they told me that they already have Windows Server 2012 hosting plans, bother for Virtual Server (VPS) or dedicated servers.

I’ve been their happy customer since 2009 or before, so, I can confidently recommend them for anyone willing to have a Windows 2012 server soon.

They’re generally in the economical category (so, great cost), but I have tried others in this category before and the others all were useless for anything serious, with SoftSys Hosting on the other hand, their VPS performance, general network speed, and support responsiveness all are of a premium class.

Check their offers here

DDD Sydney Is Back – Vote For Sessions & Register Today

It’s this time of the year, and DDD Sydney is taking place again by end of June 2012 :-)
Yes, it’s “the other” DDD …  Developer Developer Developer!

If you don’t remember the way sessions get chosen in DDD is that call for submissions is first open for everybody for a couple of weeks, then the submitted sessions are listed for public voting for similar time (or so). Anyone can choose up to 10 (TEN) sessions that they want to have available if they decide to register for attending the event. Later, most voted sessions are what gets into the event agenda.

The registration is usually open by voting time (now!), although more actively publicized after the vote is closed.

My Session Proposals

Like last year, I have submitted some session proposals for DDD in the hope to get one of them voted most to deliver within the day.

You can see all submissions and vote for the ones that interest you most from here. I have included a copy of my submissions here in case you find the page hard to read (or just zoom-in a bit).


Introducing ASP.NET Web API (Level: 100)

ASP.NET Web API streamlines the development of HTTP services especially for developers with even little ASP.NET MVC knowledge. Being separate from WCF removes a lot of the effort and provides really simple configuration.

This session introduces ASP.NET Web API, and some of the obvious questions about it, starting with what it’s like to develop services with it, what power the service controllers share with and how they differ from any standard ASP.NET MVC controller for routing, filters, model binding, and managing common HTTP request/response aspects.

Then it gets into handling common scenarios like authorization, validation, content negotiation, custom JSON formatting (e.g. for dates), and OData capabilities, as well as showing the differences between hosting your services with ASP.NET hosting vs. self-hosting.

Back to Basics: Understanding Twitter OAuthentication (Level: 300)

Most people who provider Twitter Authentication use managed wrapper libraries around Twitter REST API. Some libraries are better than other libraries in certain areas, where they are more feature complete, faster, or easier to use for specific tasks. If you put some understanding of how the process of communicating with Twitter OAuth (and other APIs) works, and use the libraries with awareness instead of just letting them do their “magic”, this not only allows you to mix and match libraries and usages (like storing the user login in DB for background operations if your app requires this).

This presentation introduces how Twitter OAuth works from a client application perspective, and shows how different popular libraries encapsulate this and you have extra control on the process and storage of your users login tokens and how they can mapped to ASP.NET forms Authentication, and how you can reuse those tokens later with different library or different executable/service having the same application identity.

If you ever got confused trying to understand how Twitter OAuth process is like, or how to troubleshoot common issues with it, or even achieve a related advanced task, this session is for you.

As a sort of bonus, the presentation also shows quickly how to use FormsAuthenticationExtensions NuGet package to store extra information in ASP.NET forms Authentication ticket, as well as an introduction to Twitter XAuth, usually used for mobile (and desktop) apps.

LESS CSS for .NET Develoers (Level: 200)

When a developer writes CSS, they quickly notice the must-have features which CSS does “not” actually have, variables, functions, and calculated operations are most obvious examples. As the web evolves, developers have become more exposed to HTML5, JavaScript, and CSS3 on daily basis. So, they came up with a number of languages that come and fill in the gaps in them. Out of those languages, LESS is the one that looks most just like plain CSS.

LESS provides a number of handy extensions to CSS that developers especially love most. In this session, we go through those features and where they fit for modern web development. We also go through the .NET developer experience working with LESS, from IDE integration (using Visual Studio) to build integration and minification, and some bonus tips for large projects.

Introducing jQuery Plugin Development With jQuery UI (Level: 200)

Developing a JavaScript widget as a jQuery plugin can be tricky when it has to interact with more plugins and complex elements in the same page. The plugin needs to maintain a set of possible states of itself and maybe other plugins used, apply various operations based on different states, and maybe allow the users to call the same plugin to apply different operations applicable to each state. This applies to even the simplest operations like expanding/collapsing a collapsible widget, allowing more plugins to be notified of changes in visibility, etc…

jQuery UI introduces a core component called “Widget Factory” which can make developing flexible JavaScript widgets straight forward, and helps more to get more widgets to work together in complex scenarios.

This session shows how to simple jQuery plugins to use jQuery UI plugin widgets, as well as providing some tips for large applications implementing their components as jQuery widgets, and some bonus tricks around optimizing your jQuery code for better overall page performance.

Call To Action

Now it’s your turn, I again highly suggest you vote for the sessions you like here.

Also, once the announcements are made more widely about the already open registeration, tickets usually fly very quickly, so, to guarantee a ticket to DDD Sydney, you better register early from here (costs A$25).

Hope to see you there :-)

DDD Sydney Registration Open – My Session Submissions

DeveloperDeveloperDeveloper Sydney 2011


If you are going to be around Sydney during beginning of July, there is a great technical event going around that will be going on July 2rd and 3rd.

DeveloperDeveloperDeveloper! Sydney is this year being hosted on 2nd & 3rd July. The developer conference, for developers by developers – with three tracks of great content covering a mix of ALM, Web, and general development topics from the best community and industry leaders!

On July 3rd we will offer you the opportunity to compete with others in building a proto-type application Windows Phone 7 Mango or the Kinect for Windows SDK and take out the prizes for the day.


The registration for the 2 days of the event is now open. You can choose to attend only one day if you like.

You can register for DDD Sydney at

Voting For Sessions

If you plan to attend DDD Sydney, you will love to know that you can help determine how awesome the event is going to be by voting for topics you want to attend from the pool of session submissions.

Remember, y the list of sessions available for voting before registering.


My Session Submissions

If you check the session voting page you’ll notice 2 session submissions by me. You van check the sessions and vote for them if they sound interesting enough to you.


Demystifying NuGet (Level: 200)


NuGet is the new standard way to get code libraries. In this session Mohamed goes from basic get-package examples to more to creating packages, local / intranet package stores, resolving version conflicts for packages you want to get or create, using PowerShell, Package Explorer, and NuGet gallery authoring options.


Through the session, Mohamed answers questions like: When to update the same version of the package or add another? How often should your NuGet package be updated and should you use source code trunk? How much documentation, samples, or configuration code should the package have (using config file transformations and code templates)? How to interact with projects (like creating pre/post build steps)? And when to use source code packages instead of packing assemblies? The session involves a discussion about particular popular packages scenarios, like SQLite, and NHibernate.


The Extreme Power of Razor View Engine (Level: 200)


The session starts by comparing Razor to different ASP.NET MVC view engine options like webforms and Spark, and stating which purposes each fits best. After knowing what the options are, Mohamed goes into the specifics of Razor, how to do markup templates in different ways, and, the unique constructs that Razor adds to the mix for mixing inclining text inside Razor code blocks other than simple &’text’ tags.


Mohamed will also discuss different options for packaging Razor code like helpers and functions, the pros and cons of each. Since the power of Razor isn’t just useful for HTML, Mohamed also shows how to use Razor for content types JS files, covering intellisense and routing for them, and the difference between using Razor in ASP.NET MVC and in ASP.NET Web Pages (Web Matrix and Visual Studio ASP.NET Razor projects).


If you like the sessions, you can vote for them on:


DDD Sydney Sponsors


See you there!

#MvcConf 2 – Call For Speakers


Assuming some of you have attended live or watched the recordings for the past MVCConf conference. It’s a virtual conference concerned (as the name tells) about everything related to Web MVC Frameworks in .NET (ASP.NET MVC, FubuMVC, Spark, …).

Videos from the previous MvcConf event can be found at: and

MvcConf 2

They plan to have a second event after the great success of the first one. And they started a call-for speakers. See:

Quoting Details


Tuesday Feb 1st 8AM – 5PM CST




Check back 1/17

Call For Speakers

If you would like to speak at this years conference. Fill out the Speaker Proposal form.

An Awesome Conference

MvcConf is a virtual conference focused on one thing: writing awesome applications on top of the ASP.Net MVC framework. Your brain will explode from taking in so much hard core technical sessions. Sounds fun eh?

This is a community event and we want the best and brightest sharing what they know.

We intend to record each session and make them available online for viewing. We intend to make the videos available free of charge, depending on conference sponsorships.

Giving Back

Keeping this conference a community event is important. We are donating a portion of the proceeds from the event to the jQuery project.


Speaker proposal from can be found at:

MVCConf, An Online ASP.NET MVC Conference Coming Tomorrow


Another internal company email I sent today and found useful enough to share in the wild (after few modifications)…

Hey all,

There is an online conference (streamed over the Internet, you don’t have to go to physical place) tomorrow called MVCConf; in addition to the MVC in the name it’s related to so many .NET and SQL and jQuery related stuff.


You may want to attend as many sessions as you can.


The conference is going to be TOMORROW  July 22 from 8 AM to 5 PM CDT (that means UTC – 5 time, considering Abu Dhabi is UTC + 4, the mentioned time is 9 hours late than Abu Dhabi, so, 8 AM CDT  = 5 PM  for us, 5 PM CDT = 2 AM for us).


Of course you do not have to attend all the sessions. Actually you cannot, because they have 3 parallel tracks. (3 sessions at a time).

The conference is streamed over Microsoft Live Meeting.


Register from:


See you online :)

Let me add here that the conference agenda can be found at:


The conference sessions are planned to be recorded. I hope they manage to do it.


Being in Abu Dhabi, 5 PM to 2 AM sound perfect to me. I hope I haven’t ruined up the calculations.


Note For Egypt

For Egypt, I think that means 4 PM to 1 AM. Most developers in Egypt won’t make it before 6 – 7 PM I believe, but then you can watch the rest (most) coming after that!

Just In Case You Missed The New ASP.NET Betas (WebMatrix, Razor, IIS Express, SQL Server Compact, Web Platform Installer)

Similar to the last post, it looks like the best way to continue blogging for me is to copy private company/list emails (when appropriate of course). This is a mail I just sent to .NET list in my company, with slight modifications:

Hey all,

Just in case you have not noticed it already, early last night (before I woke up near midnight our time!) Microsoft released public betas of some new and fancy stuff…

1- IIS Express

Remember when I mentioned it before? A nice alternative to Visual Studio built-in dev server.

Supports SSL and other nice stuff, works even on Windows XP but simulates IIS 7.5, no admin privileges required

2- SQL Server Compact Edition

A file-based database engine, just like SQL Server Express, except that when you develop your website with it, you don’t need it to be installed on the server to get running (or anything else installed)

3- New ASP.NET Pages Syntax code-name Razor

This is a new syntax that is going to replace the old <% … %> ASP-Classic-like style we write ASPX/ASCX pages

It’s going to be mainly for ASP.NET MVC, but watch out, I smell like it’s may reach web-forms also

(It already now can work with or without MVC)

4- Microsoft WebMatrix
You may have heard the name before as a very old web tool for .NET 1.x,

No, this is a completely new Web development and deployment tool.

It installs all the previous components in it (but total small size 15 MB) and supports them out of the box

Also support Search Engine Optimization Kit for IIS Express and nice automatic Web Deployment model

Targeted at .NET beginners (typically coming from other dynamic languages I’d say based on what I see, it doesn’t have intellisense even, which is common in these languages IDEs)

5- Microsoft Web Platform Installer 3.0

The component you can use to install different web development stuff like the mentioned above (and like SQL Express, Visual Web Developer Express, and even PHP) and also read-applications like blog engines and such that you can sstart with and modify their source later

The announcement from Scott Guthrie that came yesterday can be found at:

For great tutorials see Scott Hanselman Post (Most Importantly, it has links to video and tutorials about all mentioned)

For feature-specific announcements from Scott Guthrie see:

· IIS Developer Express: A lightweight web-server that is simple to setup, free, works with all versions of Windows, and is compatible with the full IIS 7.5.

· SQL Server Compact Edition: A lightweight file-based database that is simple to setup, free, can be embedded within your ASP.NET applications, supports low-cost hosting environments, and enables databases to be optionally migrated to SQL Server.

· ASP.NET “Razor”: A new view-engine option for ASP.NET that enables a code-focused templating syntax optimized around HTML generation.  You can use “Razor” to easily embed VB or C# within HTML.  It’s syntax is easy to write, simple to learn, and works with any text editor.

Also, I wrote a detailed blog post on the very early morning yesterday about my thoughts of Razor syntax and ASP.NET MVC, and made sure the post is friendly to those who almost don’t know about ASP.NET MVC itself, find it here:

You know what? Let me just quote the list of videos and tutorials better…

· Channel 9 Video: WebMatrix with Scott Hunter and Simon Calvert

· Learn by Doing – WebMatrix walkthroughs

o 1 – Getting Started

o 2 – Coding with Razor Syntax

o 3 – Creating a Consistent Look

o 4 – Working with Forms

o 5 – Working with Data

o 6 – Working with Files

o 7 – Working with Images

o 8 – Working with Video

o 9 – Adding Email to your Website

o 10 – Adding Social Networking

o 11 – Analyzing Traffic on your Website

o 12 – Adding Caching for Faster Websites

o 13 – Adding Security and Membership

o 14 – Introduction to Debugging

o 15 – Customizing Site-Wide Behavior

o ASP.NET Web Pages API Reference

· WebMatrix Tutorials and FAQs

o WebMatrix Overview

o Create a Website from a Gallery Application

o WebMatrix Beta Release Readme

o Using WebMatrix Beta[Show All]

§ Download and Install an ASP.NET Application

§ Download and Install a PHP Application

§ Make your Website SEO Friendly

§ Analyze Your Website

o Using IIS Developer Express

§ IIS Developer Express Overview

§ Use the Windows System Tray to Manage Websites and Applications

§ Use the Command Line to Run a WebMatrix Site or Application

§ IIS Developer Express FAQ

o Application Gallery FAQs

§ Acquia Drupal FAQ

§ AtomSite FAQ

§ BlogEngine.NET FAQ

§ dasBlog FAQ

· File a Bug on WebMatrix or Suggest a Feature

Have Fun!


Update 01:

There is one more tutorial I forgot to mention

Thoughts On Razor, Microsoft’s New ASP.NET MVC View Engine

This is something I have posted to a private mailing list before, and thought since I have only fixed number of keyboard strokes to death, I should be sharing it with larger audience…

Before Beginning

imageI know some of the audience of this blog may have not even tried ASP.NET MVC, so, you may need to bare with me for a while ((and those familiar with it just bypass this section please).

In ASP.NET MVC, the request goes to a specific method (commonly known as Controller Action) to handle it (choosing which method/action is based on something called Routing, we don’t care about that for now).

Once the method is executed, typically it ends with calling a page or user control (commonly called a View) to send some markup to the browser. Usually this is an ASPX or ASCX file without code behind. It has some special properties to interact with the data coming from the controller action, and some special shortcut methods to write HTML markup (called HTML helpers).

This page can have a master page, include other user controls, and even have a <form runat=server if you want, however, someone may shoot you for doing it in MVC view, because no body uses server controls in MVC. All is using plain HTML/JS (with some helpers to speed the process). Typically you end up having a page that looks very similar to to ASP classic pages, with so many <%.. %> and <%= … %> inside this HTML though, and -depending on how you do it- it can get really ugly.

On View Engines…

Of course, this is not the only way to write the view markup in ASP.NET MVC. ASP.NET MVC enables something called “View Engine”. This View Engine handles finding the view file (whether it is a shared file like master page or .ASPX page or even partial like user control), parsing this view file, and executing any special code parts in it (like the parts inside <%.. %> and <%= … %>). This is not a new idea in ASP.NET MVC, as it existed before in Ruby On Rails and the open source .NET MVC Framework MonoRail.

The community then has taken care of doing alternative view engines. This means ability to write the same markup with different syntax than the ASP.NET syntax we all know (which became known as Webforms View Engine because it’s the same like in web forms development).

Some of there were ported from other MVC frameworks like MonoRail, and some were completely new. Some examples are NVelocity, NHAML, and Spark, which is created especially for ASP.NET MVC and later supported other .NET MVC frameworks like FubuMVC and MonoRail, It tries to make all the code look like html where loops and such can be added as custom HTML tags or attributes. It is also getting the most love from ASP.NET MVC developers not using the default view engine. Go to Spark homepage to get a sense of how the syntax can be different.


After Scott Guthrie, Microsoft’s Most popular Vice President, blogged about the new coming view engine from Microsoft itself code-name Razor, and showed some samples of how your view might look like using it (stating clearly that the webforms view engine will then be obsolete),  this brought many interesting points…

  • There is coming a built in extensibility support for having custom view engines integrated with Visual Studio dialogs. This is great to know, especially if you you see how people suffer to implement some support with the current tooling.

  • Part of this tooling you’ll be able to have multiple view engines set by file extension| for example, enabling you to have multiple view engines in the same project easier. This is typically something you don’t need 90% of the time, but when the rare time comes and you need it, it should be quite handy.



Razor beta is not even out. All we know about it is from different blogs and twitter conversations. Everything written here may be invalid to some point in the future or completely incorrect.


imageThere was a public discussion on twitter between Rob Conery (ex-Microsoft ASP.NET MVC team member, now runs his own business, Tekpub, a GREAT technical videos learning site) and Phil Haack (A popular Program Manager in Microsoft ASP.NET team, mainly focused on ASP.NET MVC, also founder of Subtext, my favorite open source .NET blog engine) about why Razor, why not just give even more VS love to Spark being a very popular ASP.NET MVC view engine (and given the creator of Spark is now a member of ASP.NET team also!). In this conversation Rob said he is more convinced about the decision after a phone call from Phil and some interesting comments (will mention one of them below) were simply deleted after that, as the guys in the private list made me notice. Politics :)

I also got involved in talking to Phil and others about it, but this is another (way much smaller) story…

Finally Getting to the Thoughts…

Mainly the private mail conversation was about Razor, the twitter conversation, and why Microsoft seems to clone open source projects rather than just highlight them to its customers.  Reminded me with something I retweeted few days earlier:

RT @tehlike:RT @hconceicao:RT @chriso:microsofts desire to clone OSS needlessly raises the adoption cost for all other OSS in .NET ecosystem


imageI’ll not quote anybody but myself of course:. Usually I’m too lazy when copying things from my mail box, and I think the message is self explanatory now, so, I’ll just quote it and maybe update it later…

You made me notice that @Haacked tweet about jquery is now deleted :D

In case you have been wondering, I mean when he was answering Rob Conery about why Razor, saying that he asked the same guys who started jQuery why not just use prototype.js for their stuff. That was tough!

I understand the case with NHibernate because where it originates from (The Java/JBoss roots, even though they’re not the main director of NH at least now). They had to come with something they own.

I think the jQuery support itself just came because it became the defacto standard all over the web (.NET and others). And because it made their own lives either (developing MS AJAX stuff as jQuery plugins).

But the default is that unless they can acquire it completely (which does not seem to work for OSS stuff for some reason), or they come with their own property. Because they cannot support others. Especially open source. They aim at customers that seek “professional support” here and they want to secure themselves when committing to such.

For Razor itself, I like the cleaner web forms thing, but very scared that they may or may not get this mixed-html-code thing right (don’t think it’s easy, tell me all the dynamic kids are doing so, but still.. I’m not sure MS will do it right). Also I hate “@”, even more, I hate having to escape “@” with “@@” if followed by some text that the parser can understand as code. This is really ugly. Much love the Spark ${ } style, but they won’t do something similar, as they want to escape { } / < > / <% %> open/close style. Just hope they change “@” to something less common and get the parser right.

There is a website for HTML templating stuff I’m building for a friend for some time now (paused as the friend had a higher priority project for me now). People are uploading HTML files that include Spark syntax (against a defined model with user friendly property names) and I created a couple of helper classes to read the files, get Spark engine to translate them.

It was very easy for the test designers to get started with it and they loved it that a friend designer wanted all templating stuff (email templates, etc..) in the current active project we’re doing together to use Spark also. I will probably use Razor for MVC stuff, but not abandon Spark as a great templating engine.


Spotting the Positives / New Stuff

Not sure whether this part should have come first, but to be fair, there are some good “NEW” parts expected to come with Razor. I have referred one on twitter in a reply to @Orangy (the main guy behind Resharper, the must-have plug-in for all Visual Studio Versions).

Quoting from Phil HAack’s post on Razor:

one benefit that I look forward to is that unlike an ASPX page, it’s possible to fully compile a CSHTML page without requiring the ASP.NET pipeline. So while you can allow views to be compiled via the ASP.NET runtime, it may be possible to fully compile a site using T4 for example. A lot of cool options are opened up by a cleanly implemented parser.

Also, Scott Guthrie put a comment reply to his own post about why Razor may be better for unit testing your views (if you think you want to):

The Razor parser and view engine can be instantiated and used outside of the ASP.NET application domain.  This means you can directly instantiate and use it within a unit test project without any dependencies on running ASP.NET. 

From a unit testing perspective you can indicate the view template you want to run, supply it with any dependencies, and then pass your own test models/viewmodels to it and have it run and render back a string to you. You could then verify that the correct content came back.  This would isolate the views from your controllers and any data access, and allow you to also isolate them from the runtime environment.  View engines in ASP.NET MVC VNext (both Razor and the .ASPX one) will also support and integrate with dependency injection as well.

Different people have differing opinions about the usefulness of verifying the HTML that comes back from a view using unit tests.  For scenarios involving a lot of javascript something like browser based testing is probably better.  But for basic coverage it can be useful.  It also helps verify that you don’t have compile errors or other runtime boundary errors with your views.


It’s worth mentioning that the guy writing the Razor parser seems to be a really smart fun guy. See his own writing on the parser.

Other (Better) Notes I Have Read

Some of the people who shared similar notes and I agree with (to different extents)…


So, now, what are your own thoughts?