Galin Iliev's blog

Software Architecture & Development

Visual Studio 2008 Beta 2, .NET FX 3.5 Beta 2, and Silverlight 1.0 RC

Well, well... The long waiting is over - Visual Studio 2008 Beta 2 is here (actually here :) )

You can download .NET 3.5  Redistributable too. Also Silverlight has its Release Candidate and it will be available for dowload in next day or two. 

It seems there is some trick with policy so remember:

After the Beta 2 installation has finished, you should run this script to ensure that the installation of .NET Framework 3.5 Beta 2 will not affect the development of ASP.NET AJAX 1.0 applications

Update: I am now installing Beta2 but these are new features for Web Development summarized on ScottGu blog:

VS 2008 Multi-Targeting Support

  • VS 2008 Web Designer and CSS Support
  • VS 2008 Nested Master Page Support
  • VS 2008 JavaScript Intellisense
  • VS 2008 JavaScript Debugging
  • If you have ever installed a previous version of "Orcas" or VS 2008 on your machine (either Beta1 or one of the CTP versions), you need to reset your VS 2008 settings after installing Beta2.  If you don't do this, you'll have an odd set of settings configured (some windows will be in the wrong place), and you'll potentially see some IDE performance slowness.  You can reset your settings by typing "DevEnv /resetsettings" on the command-line against the VS 2008 version of the IDE.

    How is this possible?!?!

    I am fighting with an interesting situation. I have code that when executed in VS2005 SP1 Web Application project gives one result and when same line executed in Immediate Window gives another result!?!?  Very weird.

    thi code lives in anonymous method and it is called though delegate by

    List<T>.FindAll(new Predicate<T>(filterDelegate));

    Does anyone have an idea?

    Windows Presentation Foundation labs

    I am on WPF and .NET 3.0 wave and I found some good labs that worths sharing. If you want to ramp up with WPF take a look

    Part 1: Creating XAML Browser Applications with Microsoft® Visual Studio 2008™
    Part 2: Creating XAML Browser Applications with Microsoft® Expression Blend™
    Part 3: Animations and Media with Microsoft® Expression Blend™

    Thanks to Charles Sterling for nice labs

    (via Ozzie Rules Blogging - there is a sample room xbap application)

    Let's call them with real names

    On TechEd07 Microsoft announced official names of next version of Visual studio and SQL Server. Both will be named according year of the release - accordingly Visual Studio 2008 and SQL Server 2008 - following marketing strategy that started with windows 95 :)

    Also there is new framework that comes to help developing rich clients - Microsoft codename "Acropolis".

    The Microsoft code name “Acropolis” Community Technology Preview 1 is a set of components and tools that make it easier for developers to build and manage modular, business focused, client .NET applications. Acropolis is part of the “.NET Client Futures” wave of releases, our preview of upcoming technologies for Windows client development.

    Acropolis builds on the rich capabilities of Microsoft Windows and the .NET Framework, including Windows Presentation Foundation (WPF), by providing tools and pre-built components that help developers quickly assemble applications from loosely-coupled parts and services. With Acropolis you will be able to:

    • Quickly create WPF enabled user experiences for your client applications.
    • Build client applications from reusable, connectable, modules that allow you to easily create complex, business-focused applications in less time.
    • Integrate and host your modules in applications such as Microsoft Office, or quickly build stand-alone client interfaces.
    • Change the look and feel of your application quickly using built-in themes, or custom designs using XAML.
    • Add features such as workflow navigation and user-specific views with minimal coding.
    • Manage, update, and deploy your application modules quickly and easily.

    (via Marto Kulov's blog)

    Microsoft ASP.NET Futures May 2007

    Have you asked yourself "What do I want from ASP.NET?", "How web development would look like in 2, 4, 6 years from now?", "Is the Silverlight silver bullet in web development?"... Well who knows... but there is CTP of what Microsoft is working on in ASP.NET area and it is called Microsoft ASP.NET Futures (May 2007) Release.

    ASP.NET Futures includes a number of new, innovative solutions that help developers become more productive and enables them to create better user experiences for their customers. Features include:

    ASP.NET AJAX Futures

    The new release includes support for managing browser history (Back button support), selecting elements by CSS selectors or classes, and information on accessing “Astoria” Web data services.

    Silverlight Controls for ASP.NET

    You can integrate the rich behavior of Microsoft® Silverlight™ into your Web application by using two new ASP.NET server controls: a Media server control that enables you to easily integrate media sources such as audio (WMA) and video (WMV) into your Web application, and a XAML server control that enables you to reference your own XAML and associated JavaScript files.

    Dynamic Data Controls for ASP.NET

    Dynamic data controls are a set of ASP.NET server controls that obtain database schema information at run time, provide default display formats according to common user expectations, and enable you to easily customize those formats. Watch a video showing how to build a task list application using the Dynamic Data Controls from the ASP.NET Futures Release.

    Download video with demo

    ASP.NET Application Services

    New services for ASP.NET enable you to add search to your ASP.NET Web applications, using a commercial search engine’s API (such as Windows Live Search) and custom search providers. You can also publish custom and dynamic sitemaps that are configured to assist search engine crawlers. A new service lets you capture JavaScript errors and report them to server-based ASP.NET code.

    Dynamic Languages Support in ASP.NET

    In ths release, support for dynamic languages in ASP.NET expands on the earlier support for IronPython for ASP.NET. Support for dynamic languages in ASP.NET is built on the Dynamic Language Runtime (DLR), a new platform currently under development at Microsoft. The DLR simplifies hosting dynamic languages on the Common Language Runtime.

    Two dynamic languages are now hosted on the DLR: IronPython and Managed JScript.

    Via Somasegar's WebLog

    I almost forgot :)  There are quickstarts @ as well as not bad documentation

    Hello "Jasper"

    I wrote about the couple new projects that was announced by Microsoft recently and I’ve installed “Jasper” and I had some free time this weekend to play with it.

    You may ask What is Jasper? The answer comes from documentation: 

    Microsoft® Codename “Jasper” is a set of components aimed at fulfilling the need for a rapid and iterative development experience for data. With “Jasper”, you are able to just point at a database and immediately begin coding against its data using intuitive, domain-specific data classes. No configuration and no source code generation are required. Jasper works with existing application frameworks (including ASP.NET, WinForms, and WPF) and existing, real-world databases.

    First thing I noticed is the first CTP comes with samples in Visual Basic and IronPython which is not the best way to impress C# fans J I haven’t given up and I kept investigating and I am going to share with you my findings.

    Working with Jasper is very similar to LINQ to SQL. Everything is done through DynamicContext class and using it’s methods GetQuery,  AcceptAllChanges, CreateQuery and many others . The difference is that in LINQ to SQL there is a class that extend DataContext class but in Jasper  DynamicContext class is compiled in MS assemblies. If you play with it you’ll notice there aren’t any properties that represents tables in underlying database. But this is code snippet from samples that comes with Jasper:

    Dim connectionString As String

    Dim context As Object


    connectionString = _ ConfigurationManager.ConnectionStrings("Northwind").ConnectionString

    context = DynamicContext.CreateDynamicContext(connectionString)


    '*** get Customer table by late binding

    Dim query As Query = context.Customers


    '*** bind to grid

    ResultsGrid.DataSource = query


    Do you see the row that ends with context.Customers? On this row the content of Customers table is got and can be used in lines below to be bound to GridView control.  As we said the class DynamicContext is same for all applications and the tables are got using late binding because the Jasper data classes are generated dynamically at runtime when DynamicContext.CreateDynamicContext() is called.

     Late binding could be painful in C# and it seems this is reason not having samples in C# for nowJ.

    I will cover another feature in Jasper – dynamic queries. There is very easy way to construct queries in Jasper. All you have to do is using Microsoft.Jasper.Query class and it’s methods  Select, OrderBy, Where, Union ( and many others ):

    Dim query As Query = context.Customers

    query = query.Where("it.Country = 'USA'")

    query = query.OrderBy("it.CompanyName")

    query = query.Select("it.CustomerID, it.CompanyName, it.City")


    Dynamic queries are doubtful from architecture standpoint as they could harm the design and easy mess DAL code with business logic. This is why I recommend avoiding dynamic queries when possible or use them very carefully.

    This blog entry contains very little code but I can assure you this is enough to get Customer table content and display it in Grid control on ASP.NET page. J

    You can get Jasper from Microsoft Downloads.

    And don’t forget the prerequisites:

    1)      Microsoft Visual Studio® Codename “Orcas” Beta 1.  Install details can be found at

    2)      Microsoft SQL Server™ 2005.  The Microsoft SQL Server 2005 Express Edition can be found at

    3)      (Optional) Microsoft Iron Python 1.1.  The install can be found at