April 2007 - Posts

MIX07 started today and Microsoft is already releasing new stuff. Today, they released 1.1 Alpha of Silverlight which now include .NET support. This means you won't be stuck using JavaScript to manipulate your XAML if you don't want to.

If you are interested in learning more about Silverlight, there is a ton of great info on silverlight.net. The QuickStarts are in the same usual format you may have seen with the ASP.NET quickstarts. Its a good way to jump in and get something working very quickly. I'll be posting more on Silverlight soon (if Orcas ever finishes downloading).

Silverlight QuickStarts and More

I really like this new feature in C# 3.0. It allows you to create an object and initialize its public properties all in one line of code (and the syntax still looks fairly clean). You simply add a set of brackets and list out the properties you want to assign along with a value. Here is an example (taken directly from the C# 3.0 language specificiation.)

The following class represents a point with two coordinates:

public class Point
{
int x, y;
public int X { get { return x; } set { x = value; } }
public int Y { get { return y; } set { y = value; } }
}

An instance of Point can be created an initialized as follows:

var a = new Point { X = 0, Y = 1 };

which has the same effect as

var a = new Point();
a.X = 0;
a.Y = 1;

As you can see its an easy way to quickly initialize a class. Probably not ideal if you are assigning a ton of properties, but works great for simple assignments like the one above.

One of the new features in C# 3.0 is the ability to implicitly type a variable based on what you assign to it using the var keyword. The compiler automatically determines the type by inferring it from what you assigned to it. You will see this a ton when you start to look at LINQ examples. I am not sure if I like this or not yet. Take a look at these examples.

var myInt = 4;
var myDouble = 9.0;
var myString = "blah";
var myDictionary = new Dictionary();

This is equivalent to the following traditional ways of declarion.

int myInt = 4;
double myDouble = 9.0;
string myString = "blah";
Dictionary myDictionary = new Dictionary();

So yeah its obvious what each variable is going to be based upon the value, but is this abbreviate of declartions a good thing or not.

Don't get this confused with the old ASP days where everything was a variant. Once a variable is assigned, it requires values for that type. For example the following would generate an error.

int x = 5;
x = "blah"; // error

I am curious to see what other people's thoughts are on this.

Nullable was one of my favorite new features in C# 2.0. It had to suck to for all thos VB developers to go all this time without it. In VB 9.0 (Orcas), the feature is finally added. Here is what the syntax looks like

Public Property MyDate As Date?

If you care about other features coming in VB 9.0, check out the langauge specificiation.

Overview of Visual Basic 9.0 Language Specification

I found this page really interesting buried in info about Orcas. It lists all the different areas they are targeting in Visual Studio "Orcas" and what they intend to change, fix, etc. It gives a good place to give feedback about areas if you have issues with them. The CI Support in TFS has always been questionable to a lot of people. If you want to influence what they do, I recommend looking at the UX document they have prepared for that area.

Feature Specifications for Visual Studio "Orcas"

With Orcas hitting beta 1, the .NET Framework version 3.5 naturally has also hit beta 1. Since Microsoft decided to rename WinFX as .NET 3.0, there has been a lot of confusion as to what exactly is in each version. Like 3.0, 3.5 is not a new version of the .NET Framework itself, it continues to add upon the 2.0 Framework with new features. That being said 2.0 and 3.0 are prerequisites of installing 3.5 whereas you can install 2.0 on a machine without 1.0 and 1.1 (thus proving the point that it is not a totally new framework).

So what does it include? The biggest things are C# 3.0 features such as LINQ, ASP.NET AJAX, and some new clases in the base class library of the framework.

When is it going to be released? Microsoft claims by the end of the year.

It looks like they finally got around to fixing the issue which would require you to delete everything in your Termporary ASP.NET Files folder. You know the kind...

Compiler Error Message: CS0006: Metadata file 
'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary 
ASP.NET Files\cms.web\44e73607\b028acb3\App_global.asax.fakktchx.dll' 
could not be found 

This is good news since I always found tha highly annoying. Previously you basically had to close Visual Studio. Kill the ASP.NET worker process, and then go delete the files. More Info can be found at the link below.

Hotfix Patch for Compilation Issues

Originally when these products were announced, they were not going to be included in MSDN and they were going to cost a few hundred bucks a seat. That's a bad time. Well luckily people complained and they decided to include them in MSDN Premium subscriptions. Unfortuantely that does mean if you have MSDN professional you are SOL. Any way, it is still good news because these are great tools to design .NET and WPF applications.

Soma's Post on Expression