My view about the overview of Microsoft Visual Studio 2008

Microsoft published a white paper about Microsoft Visual Studio 2008. I read it and discuss it in a brief summary. The white paper discuss the different customer experiences that Visual Studio 2008 delivers through seven different technology areas.

  1. Develop Smart Client Applications
  2. Create Microsoft Office Applications
  3. Build Windows Vista Applications
  4. Handle Data More Productive
  5. An Improved Developer Experience Overall
  6. Enable New Web Experiences
  7. Improve Application Life-cycle Management (ALM)

1: Develop Smart Client Applications

The ClickOnce application deployment is improved. Firefox is supported as a browser, very nice and necessary for ClickOnce becoming successful.

Something I'm not really sure about. Office 2007 UI support for native C++ applications. Those native applications can make use of the Ribbon Bar, Ribbon Status Bar and Mini-toolbar. But why only support native C++ applications? We want this feature for managed C# applications, don't we?

Microsoft Synchronization Services for ADO.NET provides an API to synchronize between data services and the local data store. This could be nice, but I hope it's solid. In the past I sadly met Microsoft Access Replication, something comparable to the basics I think. I'll never suggest a company to use Microsoft Access Replication. But ADO.NET Synchronization Services might work, I guess we will have to wait for Real World Experience on this.

2: Create Microsoft Office Applications

No comments yet, maybe later.

3: Build Windows Vista Applications

Visual Studio now provides tools for Windows Presentation Foundation. We can now use a designer to create our user interface, in the past we needed to use Microsoft Expression Blend.

4: Handle Data More Productive

Also new is the Language Integrated Query (LINQ). It supports querying for objects, databases and XML. And if I'm right LINQ 2 SQL is some sort of ORM tool. I try to look more into this in the future.

5: An Improved Developer Experience Overall

You have the ability to target different .NET Framework platforms while making use of Visual Studio 2008. Very nice, I'm not sure how far this goes. Are you able to build against the .NET Framework 1.1 but are you able to make use of IntelliSense trough the other platforms? Are you able to make use of designers for the .NET Framework 1.1? Don't think so, but I have to check first.

6: Enable New Web Experiences

The new web experiences consists of the integration of a new version of AJAX ASP.NET and the integration of Windows Live Services. Besides this it should be easier to consume a Windows Communication Foundation service.

7: Improve Application Life-cycle Management (ALM)

The most interesting thing is the enhanced Visual Studio Unit Testing. The performance is improved, but I'm interested to see if it is extendable and be used better in conjunction with Mocking frameworks.

Mocking with Rhino Mocks: Expecting a method not to be called

Mocking with Rhino Mocks: Expecting a method not to be called This morning I thought about trying out some Mocking with Rhino Mocks. First of all I was having some little trouble of testing method's that returned void. Oren Eini suggested somewhere to make use of method chaining, so I changed it to use method chaining. So what's next? Expecting a method not to be called. For example the situation on line 12: I expect the WriteLog method with parameter EventLogEntryType.SuccesAudit not to be called. I think the test I wrote should work.
 1 [Test] 
 2 public void TestInterpretationForAuditFailureNotWorking() 
 3 { 
 4   MockRepository mocks = new MockRepository(); 
 5   ILogWriter eventLogMock = (ILogWriter) mocks.DynamicMock( 
 6                                       typeof (ILogWriter)); 
 7   ILog log = new Log(null, eventLogMock, "MOCK", true, false); 
 9   Expect.Call(eventLogMock.WriteLog( 
10               EventLogEntryType.FailureAudit, "MOCK", null, null, 0) 
11     ).Return(true); 
12   Expect.Call(eventLogMock.WriteLog( 
13               EventLogEntryType.SuccessAudit, "MOCK", null, null, 0) 
14     ).Return(true).Repeat.Never(); 
15   mocks.ReplayAll(); 
17   log.Audit(Audit.Failure, null, null); 
18   mocks.VerifyAll(); 
19 }
The test actually doesn't work. I get an InvalidOperationException when I call VerifyAll.
System.InvalidOperationException: Can set only a single return value or 
exception to throw or delegate to throw on the same method Rhino.Mocks.Expectations.AbstractExpectation.ActionOnMethodNotSpesified() 
at Rhino.Mocks.Expectations.AbstractExpectation.set_ExceptionToThrow(Exception value) 
at Rhino.Mocks.Impl.MethodOptions.Never() 
Does anyone know how this can be solved? What am I doing wrong? The only thing I want is: Expect a method not to be called. Update: 1 August 2007 After some e-mail contact with Oren he came with the following solution:
12   Expect.Call(eventLogMock.WriteLog( 
13               EventLogEntryType.SuccessAudit, "MOCK", null, null, 0) 
14     ).Return(true).Repeat.Never(); 
The solution mentions not to use Return, because you don't expect anything in return. You expect the method not to be called.

5 Minute Productivity Enhancement: Launchy

Last week I found out about Launchy an Open Source Keystroke launcher. I use Launchy to launch application very quickly without using my mouse.

The combination ALT + SPACE pops up Launchy. You type some characters that are in the application name, for example "studio" for Visual Studio 2005. Press ENTER to accept your choice. Sometimes there are more options available, you can browse those using the UP and DOWN keys.

Besides this basic launching there are some enhanced actions available. For example type "Google" press the TAB key and type your search words. And the Google webpage pops up in your default Internet Browser with the search query you entered.

Read also the other productivity enhancements:

Getting to know Boo and Domain-Specific Languages

I've read a few things about Boo. About what Boo is and what you can do with it. I understood Boo is a new object oriented statically typed programming language for .NET. It has a Python inspired syntax and has a special focus on language and compiler extensibility. It's actually a language to create your own domain-specific languages (DSL).

I'm trying to understand Boo a little bit better. So I started with the following resources, step by step:

  1. Read: Boo Manifesto
  2. Look at sample: Spector
  3. Read: Boo Primer - Part 1 - Starting out
  4. Look at sample: Better Syntax for Mocking
  5. Read: Boo Primer - Part 2 - Variables
  6. Read: Boo Primer - Part 3 - Flow Control - Conditionals
  7. Read: Boo Primer - Part 4 - Flow Control - Loops
  8. Read: Boo Primer - Part 5 - Containers and Casting
  9. Read: Boo Primer - Part 6 - Operators
  10. Read: Boo Primer - Part 7 - Functions

So far, the most interesting part I read about is the Statement with Modifier. This is a more human-readable part of code. It consists of: do something if somethingelse is true. Also the ability to select the last item in a list by using -1 as selector is interesting just like: list[-1].

I've got a lot of things to read in the near future:

  1. Read: The rest of the Boo Primer start from 8.
  2. Read: The Book of Boo

Do you've got some interesting resources to read about Boo? Please let me know.

Moving from Windows Live Writer to Qumana

Almost a month ago I restarted blogging. In the past I've build my very own blogging engine, but now I'm using WordPress as my blogging engine. And as result of using Wordpress I'm able to make use of a standard blogging client. I started using Windows Live Writer (Beta 2) but not without troubles. I can no longer synchronize my online post with Windows Live Writer, I get a very annoying ArgumentOutOfRange exception. Besides this the upload picture feature seams to be broken.

So to overcome these troubles I now make use of Qumana as my blogging client. As a matter of fact, this is my first post using Qumana. Qumana is a little bit feature-less, but I will overcome this.

Qumana does support categories, but as I've seen it, I'm not able to add categories from within Qumana. Also the category-tree isn't actually a tree, but a plain list.

Qumana does support Spell Checking, very handy. Windows Live Writer should support it also, but I wasn't able to use that.

Also something I use on almost every post the "Read more..." link. Qumana doesn't have plain support for this. But I can add something in Source View like: <!--more-->

I will have to use Qumana for some time before I can really say it works.