- Book Plug: Advanced ASP.NET AJAX Server Controls For .NET Framework 3.5
-
I recently got a copy of Advanced ASP.NET AJAX Server Controls For .NET Framework 3.5. This promises to be a great book. With .NET Framework 3.5, Ajax is really interesting the mainstream and the Ajax Server Controls make it very easy for the millions of ASP.NET developers to easily take advantage of the power Ajax offers.
Enjoy it!
This is the first book in the .NET Development Series to come out since I was asked to be on the editorial board for the series. It is great to get a chance to work with John Montgomery and Don Box. While the only pay I get for this gig is free books, I am excited to be able to help connect the industry experts on the most important technologies to the widest possible audience. If you do have title or author suggestions for the .NET Development Series, please let me know.
- FxCop 1.36 Released
-
David Kean announces FxCop 1.36 Release
Here are a few of the goodness from David's blog:
- 200+ bug fixes that reduce noise, missing analysis and rule crashes
- Support for analyzing anonymous methods and lambda expressions
- New option for skipping analysis over tool generated code
- Spell checker libraries now ship in the box
- Changes in the way references are resolved and located
- Better support for C++/CLI and the Compact Framework
- Language 'friendly' API names in the UI and resolutions (ie Visual Basic syntax if running over a Visual Basic binary)
- New globalization, design and usage rules
- New rule for targeting specific versions of the Framework (I'll talk about this in a future post)
- Performance improvements that cut analysis by 2x and use half as much memory
- Documentation that is now available on MSDN
download it now -- it is totally free! You can also tell us what you think in the Code Analysis forum.
- CLR Updates in .NET Framework 3.5 SP1
-
Kevin Frie, development lead for core parts of the CLR recently posted about what CLR updates that come in 3.5 SP1....
- NGen infrastructure rewrite: the new infrastructure uses less memory, produces less fragmented NGen images with much better locality, and does so in dramatically less time. What this means to you: Installing or servicing an NGen image is much faster, and cold startup time of your NGen’ed code is better.
- Framework Startup Performance Improvements: The framework is now better optimized for startup.
- Better OS citizenship: We’ve modified NGen to produce images that are ASLR capable, in an effort to decrease potential security attack surface area.
- Better 32-bit code quality: The x86 JIT has dramatically improved inlining heuristics that result in generally better code quality, and, in particular, much lower “cost of abstraction”.
Read more
- What Changed in .NET Framework 3.5 SP1?
-
Patrick Smacchia, of NDepend fame, has done a detailed, low level look at exactly what changed in .NET Framework 3.5 SP1.
Some data he lists:
# Assemblies 112
# Namespaces 919 to 935 (+16 +1.7%)
# Types 39 988 to 40 513 (+525 +1.3%)
# Methods 387 421 to 386 790 (-631 -0.2%)
# Fields 241 567 to 246 795 (+5 228 +2.2%)
# IL instructions 8 598 933 to 8 620 940 (+22 007 +0.3%)
Overall, for the amount of new functionality we added in SP1, I think this seems like fairly modest growth of the framework.
Patrick also includes some cool eye charts to help visualize the changes... I am not sure you'll see this poster as a marketing give away at the next conference, but it is pretty neat to look at..

Enjoy!
- Framework Design Guidelines 2nd Edition Available today on Rough Cuts
-

Krys and I just finished writing the update to the framework design guidelines and you are can already get the "Rough Cuts"! That is right, in today's instant information world why wait for copy editing, printing and shipping time!
Framework Design Guidelines: Conventions, Idioms, and Patterns for Reuseable .NET Libraries on Rough Cuts
Expect it in on Amazon and in book stores late this year.
- .NET Framework 3.5 SP1 Allows managed code to be launched from a network share!
-
This has got to be one of the most consistently asked for "features" of .NET from the start! Download .NET Framework 3.5 Service Pack 1
Run off a network share with local permissions - You have voted and we have listened! We have brought managed executables in line with native code executables in how they behave when run off a network share. Yea!
Vance has the full scoop.. If you want to send someone flowers for getting this done, it is Vance... he designed, coded, tested, cajoled, prodded, persisted and advocated strongly for the fix.
Download .NET Framework 3.5 Service Pack 1
- Some Results from Visual Studio and .NET Framework Developer Documentation Survey
-
Recently our documentation team hosted a survey on how you use VS and .NET Framework documentation. Here are a few things that I thought was interesting. I'd love to have your comments as well... Any thoughts from you on this?
It seems that the the majority of developers in our community are using the latest (3.5) version of the .NET Framework. Most are also using 2.0 as well...

On the question of how you would like to see .NET version information in the docs, it seems most folks want to see it all, with a filter!
- Documentation should be specific to the .NET Framework version I am developing with
- Documentation should be cumulative (including all versions of the .NET Framework with version specific information inline)
- Documentation should be cumulative (including all versions of the .NET Framework with the ability to filter on specific versions)
![clip_image001[5]](http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Som.NETFrameworkDeveloperDocumentationSu_7423/clip_image001%5B5%5D_thumb.gif)
In terms of what folks use the docs for in their daily development, the .NET Framework reference is the winner by far!
![clip_image001[8]](http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Som.NETFrameworkDeveloperDocumentationSu_7423/clip_image001%5B8%5D_thumb.gif)
And how do you find information? Well, not surprising, web search engines win out by a high margin. Although, it does seem from the feedback that if we could improve performance of offline Help and F1 folks wouldn’t need to search online as much. Does that seem right to you?
![clip_image001[10]](http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Som.NETFrameworkDeveloperDocumentationSu_7423/clip_image001%5B10%5D_thumb.gif)
And, as always, the verbatim comments were very helpful as well. Here are a couple I thought was valuable both positive and constructive:
- Mostly good, mostly accurate, certainly better than most of the competition.
- First let me say that the overall quality of the documentation is very, very high. In general, Visual Studio / .NET documentation is the gold standard for technical documentation.
- I would like to be able to specify my preferred language(s) so I do not see language examples that are not relevant to my needs.
- I would like to see more tutorials - for new technology. ScottGu's blog if often a better source of information.
- Help loads way too slowly. Pressing F1 often brings up the wrong article. Entering a search term also brings up the wrong articles. The only way to navigate help is to use Related links, or "See also" at the bottom of each article
- New Web Developer Tips and Tricks Blog
-
We recently launched a very cool tips and tricks blog series just for web developers. The goal is to get a similar format to Sara Ford's successful tips and tricks series.
We are of to a very goo start!
Did You Know… Tip #1 – Powerful CSS Tools to Create, Manage and Apply Styles
Tip #2 Did you know...The Style Application Toolbar works in both Auto and Manual modes?
Tip #3 Did you know… Split View could be set vertically in VS 2008
Look for more in the coming weeks... if you have any suggestions for tips, please send them my way...
Enjoy!
- PodCast: Glenn Block on Prism, Unity, and MEF
-
HerdingCode has recently posted a PodCast with Glenn Block where he talks about Prism, Unity and, of course MEF!
Episode 11: Glenn Block on Prism, Unity, and MEF (part 1)
You gotta love the fast forwards in here.. I wish I had those in my meetings, of course i would never fast forward Glenn ;-)
- 100+ PDC Sessions Posted
-
I just saw that we released another round of PDC sessions... This is the first PDC
for years where I have not been personally deeply involved in the planning, so it is fun for me to watch in unfold..
https://sessions.microsoftpdc.com/public/sessions.aspx
If you have not already, please register as the early bird discount runs out on August 15th.
I thought I'd highlight a few of the sessions I have some context on. I'd love to have your feedback on these as well any other thoughts you have about PDC this year.
Deploying Web Applications with IIS7.0 and the Web Deployment Tool
There is some very cool work going on in Dev10 to make it much easier to deploy ASP.NET applications to testing and production and to internal web farms and large hosters.
Windows 7: Touch Computing
Think Surface for the masses ;-)
Deep Dive: Building an Optimized, Graphics-Intensive App in Silverlight
I love these deep dive talks, especially with Silverlight 2 shipping, I think many customers will be wanting set them selves up to get the most out of SL. Do you think we should try to cover the common ground with WPF graphics in the same talk?
Silverlight: Building Business Applications
I have talked to a number of customers that are deeply interested in Enterprise RIA applications. This talk will show some patterns as well as some future product directions. Do you have a killer scenario we should use as an example for this?
ASP.NET: Future Roadmap
We need a more catchy title for this, but our goal is to tell you folks what we are think we have heard from you on the direction ASP.NET should take in the future and get your feedback on that.
ASP.NET MVC: A New Framework for Building Web Applications
You gotta have a MVC talk -- this one in particular will seek to introduce MVC... Do you think we need a deeper dive as well?
Deep Dive: Understanding the Microsoft Silverlight Subset of Windows Presentation Foundation
The biggest strength .NET has is an consistent end-to-end continuum... This talk will show you how to leverage the compatibility between Silverlight and WPF to share code and designer assets to maximize the value of both platforms. Has anyone tired this out yet? what works for you and what would you like more guidance on?
Microsoft Internet Explorer 8: Developer Overview
IE8 is doing a ton to make ajax developers more productive.
Microsoft Silverlight 2: Control Model
Are you more interested in hearing about all the controls (including a few new ones) and how to get the most out of them or on how to build your own controls?
A Lap around "Oslo"
The Chris Anderson and Don Box show is back! This is a must see for the pure entertainment value!
Parallel Programming for Managed Developers with the Next Version of Microsoft Visual Studio
We are starting to see a groundswell of interest in parallel computing on .NET... this talk will go into some cool things we are doing in Visual Studio and .NET to make it easier.
Agile Development with Microsoft Visual Studio
While I am not deeply involved in this, it is great that VS is embracing TDD, refactoring and other agile methods!
The Future of C#
Who could miss Anders Hejlsberg? Last PDC Anders introduced us to LINQ -- this year what will it be?
Future Directions for Microsoft Visual Basic
And to be fair, Paul Vick will show you where VB is going...
- New Tools for Framework Designers Published
-
Mircea recently published a set of tools we have been using recently in design and Architecture reviews of the .NET Framework.
You can download the three new tools Deps, Layering, and potentialCallers here:
http://code.msdn.microsoft.com/fxarch
Enjoy!
Deps
Deps.exe constructs the dependency diagrams between assemblies, and carries out cycle detection analysis.
The command line format is:
deps.exe {d|s} <mscorlib_path> <path_list> [:assembly_name]
Example:
deps s c:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll c:\Windows\Microsoft.NET\Framework\v2.0.50727 :System
The tool produces the files:
- Full.dot. This is a graphviz – formatted file containing the inter-assembly dependencies, based on what each assembly declares as its references.
- Api.dot. This is also a graphviz formatted file containing inter-assembly dependencies, but only those that are based on the non-private API signatures of public types. This includes the types themselves (i.e. a type A inheriting from a type B defined in another assembly will cause a dependency arc between these assemblies)
- Full.txt. This is a text file showing which assemblies can be reached from each assembly, and whether there are cycles (the “True/False” statement)
- Api.txt. Similar to above, but based on API-only dependencies.
- Assembly_name.full.dot and Assembly_name.api.dot – if the :assembly_name option was specified, 2 graphviz files containing just the given assembly and its dependencies.
If the tool cannot find a dependency in the paths provided, it will record the assembly between square brackets, as such: [something]. Mscorlib is also recorded like that.
The tool additionally outputs some general-interest statistics (e.g. number of types, number of members, etc).
Layering
Layering.exe verifies that some assemblies respect an architectural diagram.
The command line format is:
Layering.exe <diagramFile> <mscorlib> <dirs>
The tool also outputs a file called “graph.dot” which shows the relations between groups within a layer and, between layers, the dependencies that violate layering. The file can be processed by graphviz.
The file consists of layer definitions. Each layer is defined by groups. Each group is defined by a list of managed binaries.
Each layer has an order. No 2 layers may have the same order. The tool considers it a violation if there are assemblies in a lower layer depending on assemblies in a higher layer.
Each group has an order. Two groups may have the same order. The tool considers it a violation if there is a dependency from a lower group to a higher group (in the same layer), or between groups of the same order (also, within the same layer).
PotentialCallers
PotentialCallers shows the list of methods that may (directly or indirectly) make a statically-determinable call to any one of the methods in a given set. To reiterate: no virtual calls are analysed.
The command line format is:
potentialCallers <methods> <mscorlib> <dirs>
The tool outputs at the console the list of direct calls that leads to calling any of the methods in the list. The output may be captured and then processed by graphviz.
To explain the output further: a call A->B means that method A makes a call to method B. If method B is in the set, then the fact that the call needed to be included is immediate. If B is not in the set, it means that B’s control flow touches one or more of the methods in the set.
The full output of the tool will contain all the segments in the call path between any method and a method in the given set.
- DropThings: Open Source ASP.NET 3.5 AJAX Portal - new and improved
-
Omar AL Zabir (author of Building a Web 2.0 Portal with ASP.NET 3.5) updated his very cool ASP.NET AJAX Portal application with 3.5 features, Workflow Foundation and new C# 3.0 features. Play with it here: http://www.dropthings.com/
Check out the details...

- A Live Mesh Moment
-
While I was out in the bush near Krueger national park in South Africa recently I found a great use for Live
Mesh... After a full day of seeing some excellent big game I had a ton of photos to show for my effort.
Later that night, back in the lodge, I was briefly able to get on the spotty, very low bandwidth wireless network to work for me. So I shared my pictures using live mesh and immediately shared getting a cloud hosted backup of my precious photos. As they were uploading I was thinking about how much I wanted to share this experience with my wife and kids who where half a world away and fast asleep.
I thought it would be fun to make the kitchen laptop display my latest pictures. So I "connected" to my wife's machine and effectively got a terminal server session from 10,000+ miles away.
It was exactly like I was sitting at the keyboard of our kitchen laptop. Even over the very bad network, I was quickly able to change her screen saver to point to the new live mesh folder with my great pictures.
When they got up that morning, my five year old son was the first to notice pictures of giraffes and lions on the kitchen laptop! The magic of shared experiences through live mesh!
Throughout the trip whenever I was able to get a little network connectivity a few more pictures would get uploaded and by the time I got the MS office in Johannesburg my family had a full copy of my adventures.
Thanks Mesh.
- Very Simple .NET Thumbnail Creation Code
-
When I was working the update for my Ajax demo, I needed to create thumb nail from a director of photos. There are tons of tools out there to do this, but I thought I'd share the very simple code I used.
It takes all the jpgs in the root path and creates 160x120 thumbnails of them. It also copies the original photo into fullpath.
namespace ThumbNailer
{
class Program
{
static void Main(string[] args)
{
string rootPath = @"C:\Users\brada\Desktop\ForDemo";
string thumbPath = Path.Combine(rootPath, "Thumb");
if (Directory.Exists(thumbPath)) DirectoryDelete(thumbPath);
Directory.CreateDirectory(thumbPath);
int imageNumber = 0;
foreach (string s in Directory.GetFiles(rootPath, "*.jpg"))
{
imageNumber++;
Console.WriteLine("{0}:{1}", imageNumber, s);
Image i = Image.FromFile(s);
Image thumb = i.GetThumbnailImage(160, 120, null, IntPtr.Zero);
thumb.Save(Path.Combine(thumbPath, GetName(imageNumber)));
}
}
static void DirectoryDelete(string directoryName)
{
foreach (string filename in Directory.GetFiles(directoryName))
{
File.Delete(filename);
}
Directory.Delete(directoryName);
}
static string GetName(int imageNumber)
{
return String.Format("{0}.jpg", imageNumber);
}
}
}
Update: A couple of folks asked me about how to do this in ASP.NET... Bertrand has a much more complete example of that here:
http://dotnetslackers.com/articles/aspnet/Generating-Image-Thumbnails-in-ASP-NET.aspx
http://weblogs.asp.net/bleroy/archive/2007/12/05/what-interpolationmode-and-compositingquality-to-use-when-generating-thumbnails-via-system-drawing.aspx
- Great User Experience Example in a Business Application
-
DNR-TV has a great talk\demo with Billy Hollis on a next generation business applications in WPF and Silverlight. Billy is working with a customer to provide a temp worker to job matching services. So far the application is in WPF, but they are planning to create a Silverlight version as well. Watch the web cast for a full demo.
A few things I thought was cool:
- They use visual clues effectively to direct the users attention (for example per-entity model pop-ups)
- They multiple-module editing model. Many records can be edited at the same time. There is great navigation and notification support to manage all of this.
- Dirty tracking seems nicely done.
Billy, we are all looking forward to playing with the real thing!
Here are a few screen shots:

