Title Image

Don Xml's Grok This

The home of Don Demsak
Welcome to Don Xml's Grok This Sign in | Help
in Search

This Blog

Syndication

Site Sponsors

DonXml's All Things Techie

  •  
     

    Static Code Analysis and Custom FxCop Rules for Enterprise ASP.Net Development

    Over the last couple months I've been doing a bit of work with FxCop and Static Code Analysis.  If you remember playing with FxCop back in the day, it was a cool tool to check for possible design, localization, performance, and security issues with your .Net code.  But, for most of us, that's where things stopped, playing with a cool tool and then forgetting about it.  Sure, Microsoft built it into VS 2005 as Visual Studio Code Analysis, but still most developers forget about it, and never turn it on.  Well, I've been on a Continuous Integration kick for over a year now (with CruiseControl.Net or TFS 2008, depending on the client), and it is easy to an things like FxCop and NDepend to your build process.  Yes, there are a lot of pre-built rules out there, but for most of us, some of the rules are extremely valuable, but some are just annoying, and there are still a lot of personal best practices that you have developed over the years that don't have rules. 

    Well, that is where writing your own FxCop rules can come in handy.  It isn't the easiest thing to work with, since there is no official documentation of Microsoft.Cci (which is the heart and soul of FxCop).  But, Jason Kresowaty has created some helpful documentation (although not complete by any means), and he also created the extremely helpful Introspector tool to go along with spelunking assemblies using the introspection object model.  After writing a couple of my own custom rules, I figured I should poke around and see if anyone has released some FxCop rule libraries, checking out CodePlex and SourceForge, but I didn't find any.  I did find one blog post by Richard Banks on a great WCF FxCop rule example, EnsureFaultContractsAreDeclared, and sure, the Patterns & Practices team releases custom rules as part of their Software Factories, but I thought that there would be more out there.  It seems like something that would be perfect for groups like ASP Insiders, Sharepoint MVPs, Connected Systems MVPs, etc. and they could band together and come up with some good rules to go along with all the best practices we seem to come up with.

    So, I'll try to start this thing rolling, and try to put together a bunch of rules around best practices for building Enterprise-ready ASP.Net applications.  But I can't do it alone, so I'm asking the community to help me out, and either leave their own ASP.Net rules as comments, or post them up on their blog (if you have one, and link back to this post).  I'll document them, and if we get enough traction, I'll start up a CodePlex project where we can coordinate this.  Here's an example:

    Rule: EnsureAspSessionVariablesAreSerializable
    Name - Asp.Net Session variables must be marked serializable
    Description: All session variables must be marked serializable if you will be using a SessionStateMode other than inproc
    Resolution: Mark the variable to be stored in session with the Serializable attribute

    I'm sure others have similar rules, that they use implicitly, and I'd like to gather them up, put them into rule libraries and then publish them on CodePlex.

    Posted Wednesday, June 18, 2008 8:40 PM by donxml | 3 Comments
    Filed under: ,
  •  
     

    Cache Or Session State - Similar But Different

    This week at TechEd Microsoft announce the Velocity project, a distributed in-memory object caching system, which got folks like Dare and ScottW talking about using a distributed caching solution for boosting the performance of web sites. That got me thinking more about the differences between Cache and Session State.  Although they seem to be the same, and often caching solutions are used for storing session data, I'm not a big fan of putting session in a cache solution (and I really hate putting session in a relational database, since there is nothing relational about the data).  But before I describe my preferred solution, let's define the terms:

    Cache (via Wikipedia) - a cache is a collection of data duplicating original values stored elsewhere or computed earlier, where the original data is expensive to fetch (owing to longer access time) or to compute, compared to the cost of reading the cache. In other words, a cache is a temporary storage area where frequently accessed data can be stored for rapid access. Once the data is stored in the cache, future use can be made by accessing the cached copy rather than re-fetching or recomputing the original data, so that the average access time is shorter. Cache, therefore, helps expedite data access that the CPU would otherwise need to fetch from main memory.

    Session (via Wikipedia) - a session is a semi-permanent interactive information exchange, also known as a dialogue, a conversation or a meeting, between two or more communicating devices, or between a computer and user (see Login session). A session is set up or established at a certain point in time, and torn down at a later point in time. An established communication session may involve more than one message in each direction. A session is typically, but not always, stateful, meaning that at least one of the communicating parts need to save information about the session history in order to be able to communicate, as opposed to stateless communication, where the communication consists of independent requests with responses.

    HTTP session token (via Wikipedia) - A session token is a unique identifier (usually in the form of a hash generated by a hash function) that is generated and sent from a server to a client to identify the current interaction session. The client usually stores and sends the token as an HTTP cookie and/or sends it as a parameter in GET or POST queries. The reason to use session tokens is that the client only has to handle the identifier (a small piece of data which is otherwise meaningless and thus presents no security risk) - all session data is stored on the server (usually in a database, to which the client does not have direct access) linked to that identifier. Examples of the names that some programming languages use when naming their cookie include JSESSIONID (JSP), PHPSESSID (PHP), and ASPSESSIONID (Microsoft ASP).

    As the Wikipedia article mentioned, session data is usually stored in a database, which IMHO is the wrong thing to do.  So, you may think that I'd prefer to use a Distributed Cache, and Velocity does just that and lists it as one of its key features:

    Provides tight integration with ASP.NET to be able to cache ASP.NET session data in the cache without having to write it to source databases. It can also be used as a cache for application data to be able to cache application data across the entire Web farm.

    But, IMHO, using a caching engine for session, although better than a database, is still the wrong implementation for the problem.  I've mentioned before (but never in my blog), that it seems as though a message solution is a much better implementation for session data.  You see, what you are really doing when you writing some data out to session in a stateless system is sending a message to a future version of yourself.  Images of Star Trek: The Next Generation episode "Cause and Effect" come to mind.  In that episode, the Enterprise is stuck in a time loop, where it keeps get destroyed, until Data sends a message to a future version of himself, and breaks the loop.  I learned the trick of using Message Queues for Session Data back in my mainframe days, and I've found that if something scaled for the mainframe, using the same techniques on other platforms is usually the best way.  Back on the Mainframe, CICS is the transaction service used in online systems, and works in a stateless manner, very similar to the web.  To send data between each instance of a screen, one of the primary techniques is to use a Temp Storage Queue, and a queue is created for each session, based on the session id.

    I've always wanted to try to do the same thing with ASP.Net, using MSMQ as the Message Queue, but until MSMQ 4.0 (released with Vista and Win2k8 Server), it really wasn't feasible.  Creating a new queue for each ASP.Net session wasn't a simple and efficient thing to do, so I never tried it.  With MSMQ 4.0, they have added a subqueues, which are implicitly created local queues that are logical partitions of a physical queue.  This way, I can create one or more message queues for an ASP.Net application, and easily have them "indexed" by a sessionid.  The downside of using MSMQ is that very few companies have a network admin staff that know how to support MSMQ.   

    I always wondered why the ASP.Net team never released a MSMQ session provider, so I'm going to have a go at it and see what sort of perf gains I can get over using SQL Server Mode, or maybe even Out-of-process Mode.

    The first issue I've run across is that System.Messaging wasn't updated in .Net 3.5 to take advantage of MSMQ 4.0.  Reading from a subqueue is the same as reading from a regular queue, but you can't write to a subqueue using the System.Messaging namespace.  So, I'll have to implement that myself, and I'll publish the code.

    Posted Friday, June 06, 2008 5:32 PM by donxml | 5 Comments
  •  
     

    New York City IT Architect Regional Conference

    The NYC IASA chapter is holding an IT Architect Regional Conference in New York City on May 22-23 at the NYC Microsoft office.  The speaker list is quite impressive, and has a couple local Microsoft MVPs among the list (Mark Pollack, Ambrose Little and Steve Forte), along with local Microsoft Architect Evangelist, Bill Zack and Keith Pijanowski.  There is a $100 discount if you register by April 30th.

    Posted Saturday, April 26, 2008 8:49 PM by donxml | 0 Comments
  •  
     

    Mixing Object, Functional and Aspect Oriented Programming

    I spent the last week in Seattle and Redmond, attending both the MVP Summit and the ALT.Net Conference, and spent the majority of time discussing the future of programming, both on the .Net platform and other platforms.  By Saturday night, my brain was pretty much on extreme overload.  One of the things I've been doing a lot of over the last few months is pondering the effect of mixing functional programming with object oriented programming.  I've learned that functional programming twists your developer mindset.  For years, I've been using object oriented programming, and have developed the habit of thinking objects, first.  Functional programming tends to get you thinking in terms of, well, functions, first.  I've also been thinking a lot about Domain Specific Languages (both internal and external), and how they map to our traditional programming paradigms.  So, late last night, my brain popped out this little nugget:

    Within a DSL it would be cool if you could map its Nouns to Objects (described via OOP), its Verbs to Functions (described via FP), and its Adjectives and Adverbs to Aspects (via AOP).

    I have to do some research, but does this fit within the definition of a composable language?  I tried to fine a definition of what a composable language, but didn't seem to find one.

    Posted Sunday, April 20, 2008 11:57 PM by donxml | 6 Comments
  •  
     

    VSLive San Francisco Workshop - LINQ - One Query Syntax To Rule Them All

    Since I'm talking about conferences, I should also mention that I'll be giving a full day pre-conference workshop, LINQ — One Query Syntax to Rule Them All at VSLive! San Francisco 2008:

    By now you have probably already heard about LINQ and think it is all about querying SQL Server. Well, yes, with LINQ to SQL you can query SQL Server. But, LINQ is so much more. LINQ extends both C# and Visual Basic with native language syntax for queries, provides class libraries to take advantage of these capabilities, and you can even write your own query provider. In this workshop will cover the basics of how to use LINQ with in memory collections and the language constructs that make LINQ possible (for both C# 3.0 and Visual Basic 9.0). We will then explore the details of LINQ to SQL, LINQ to Entities and LINQ to XML, and even how to build your own query provider. Towards the end of the day we will go into best practices on where, when, how to use and take advantage of LINQ to SQL and LINQ to Entities. This workshop will use both C# 3.0 and Visual Basic 9.0

    It has been quite a few years since I've been to San Fran, and unfortunately I will not be there more than a couple days.  Just enough time to fly in for the workshop and have a few beers.  If you'll be there, let me know.

    Posted Monday, March 03, 2008 4:25 PM by donxml | 0 Comments
    Filed under:
  •  
     

    Devscovery 2008 - New York City April 1-3

    I can't believe it is March already.  For those of you in the New York City area, Devscovery be here, April 1st-3rd, and I'll be doing 2 talks, An Introduction to LINQ to SQL, and An Introduction to LINQ to Entities.  If you haven't heard about Devscovery, here's the details right from their FAQs

    Devscovery is a three-day multi-track in-depth technical conference produced by Wintellect. In 2008, Infragistics is collocating its user conference expanding Devscovery from 33 sessions to 55 for the same low price of just $900.

    Just check out the speakers list:

    • Andres Aguiar
    • Jason Beres
    • Roger Dahlman
    • Phil Haack
    • Scott Hanselman
    • Dennis Hurst
    • J. Ambrose Little
    • Anthony Lombardo
    • Paul Mehner
    • Jeff Prosise
    • Jeffrey Richter
    • Walt Ritscher
    • John Robbins
    • Josh Smith
    • Todd Snyder

    Not a bad little list ;)  Should be a lot of fun.

    The down side of the that list, my sessions are at the same time as Walt Ritscher and Jeff Prosise.  It will be hard for me to give a talk and try to sit in on their talks, too ;)

    Posted Monday, March 03, 2008 4:15 PM by donxml | 1 Comments
  •  
     

    Diskeeper 2008 Professional Review

    Disclaimer - the folks at Diskeeper gave me a free copy of Diskeeper 2008 Pro Premier. But, I've purchased previous versions of their product.

    I've been using Diskeeper for a couple years now, and I've got to say, I love this product.  Back before Vista was released, I had purchased and installed it on my Win XP Pro machine, and compared to the Windows Defrag utility, well, there is no comparison.  Where Windows Defrag takes forever to run, Diskeeper was finished in no time.  When I put Vista on my laptop, it was going back to the defrag dark ages until I got the new Vista ready version of Diskeeper.  Since then, they came out with Diskeeper 2008, which just keeps improving on a great tool.

    Diskeeper for Home/Home Office comes in 4 versions, Home, Pro, Pro Premier, and Home Server.  The Home Server edition is something that is going to be sorely needed, a version of a desktop utility that needs to run on a server, but not at the price of a server version.  The Home version is $29.95, and the Home Server version is $69.95, which is a very reasonable price.  When I was beta testing Home Server, one of the issues I had was the price of things like Antivirus and defrag utilities, because it is basically Windows Server, which most desktop OS utilities will not run, and the price of server versions are a lot more than what a hobbyist will want to spend.

    I have a HP 8510p notebook with Vista Ultimate installed, and Diskeeper is one of the first programs I installed.  As a developer, I tend to install and uninstall lots of programs.  Combine that with Source Control and versioning, and my harddrive tends to fragment pretty quickly, so a tool like Diskeeper keeps my drives from getting fragmented and performing up to their potential.  The only issue I have with Diskeeper (and it isn't so much of an issue with Diskeeper) is that it doesn't integrate with my Security/Anti-virus Utility of choice, Windows Live OneCare.  OneCare likes to schedule "Tune Ups", which basically consist of running things like virus scans and defrag.  The problem is that OneCare doesn't have a way to let it know that I don't use the Windows Defrag tool, and use Diskeeper instead (OneCare has the same problem with Backup Utilities).  So, it during the tune up, it tries to run the Windows Defrag Utility, which is slow, and doesn't seem to like the way Diskeeper defrags.  I also am not a big fan of the amount of time OneCare takes to scan my disk for viruses, but that is a whole other post (but OneCare is still my favorite Vista Security/Antivirus Utility).  Other than that slight issue, I love Diskeeper.  If you are a developer, or just abuse your harddrive with lots of new/updated/deleted files, Diskeeper is a must.

    Posted Monday, March 03, 2008 10:26 AM by donxml | 7 Comments
    Filed under:
  •  
     

    Petition To Get Chris Sells To Host Another SellsCon Before The End Of 2008

    M. David Peterson kickstarted the process to get Chris Sells to host another SellsCon by creating a new Facebook group.  I've got to say, the ALT.Net conference in Austin sort of reminded me of the spirit of a SellsCon (getting a bunch of bright passionate folks into one local for a couple days of deep dives and alcohol).  I'm not sure what Chris' schedule looks like for the rest of 2008, but maybe he can squeeze one in, just for old times sake.  I've only attended 2 SellCons, but I've got to say, they made a big impact in my professional life.

    If Chris throws a SellsCon, I'll be there.

    Posted Tuesday, February 26, 2008 8:38 PM by donxml | 1 Comments
    Filed under:
  •  
     

    Wanted: Developer Version Of Sharepoint

    Bil Simser asks the question "Do SharePoint Developers Want a Developer Version of SharePoint?", and I've got to say YES.  Yes, Sharepoint desperately needs a version that a developer can use on a desktop OS.  As Bil mentions, Biztalk has this, why not Sharepoint?  Developing on a Virtual Image (VPC or VMWare) so you can run Win2k3 Server is a pain, and not always possible (I know of some financial firms in the area that do not allow it).  If you try really hard, yes you can do some development using a desktop OS and use remote debugging, but all the development tools I've used seem to require Sharepoint to be installed along with Visual Studio.

    I was sort of, kind of, hoping that once the process of installing MOSS or WSS 3 on Windows Server 2008 was smoothed out, there would be some sort of announcement that WSS installed on Vista would be possible (and supported).  My thought process was, since Server 2k8 is running IIS 7, and Vista is running IIS 7, that it would be possible to install WSS 3 on Vista.  Now, I've never tried it, and I'm not sure if there are licensing issues, so I'm not going to try it.  It seems as though Andrew Connell had the same idea.  But if anyone is listening, yes, I'd really like to have a version of Sharepoint that can be installed on my desktop OS (aka Vista).  Until that time, I'll make do with a combination of remote debugging and/or developing on virtual machines.

    As always, these are just my opinions and I haven't heard officially or unofficially of any plans to have a developer edition of Sharepoint (or even the inverse, that there was no plans).

    Posted Saturday, February 23, 2008 2:42 PM by donxml | 5 Comments
    Filed under:
  •  
     

    My Comments On The D Language In Redmond Developer News

    In a recent article on the Redmond Developer News website about the new Microsoft Declarative Language D, I was quoted, but it is was slightly inaccurate.  The first part is corrected:

    "said he believes both the D language and Oslo will be featured at the Microsoft Professional Developers Conference (PDC) in October."

    Which clearly states that I believe (and hope) that the D Language will be featured at the PDC.  Right after the I also stated:

    "The D Language is the reason why the PDC was cancelled last year," Demsak said. "All I know is that they (Microsoft) have been very, very quiet about the D Language. I'm hoping to see more at the MVP summit, but I really don't hold out much hope for the language, if they have gone towards making it data-driven."

    The missing part is that it was my opinion that is was part of the reason PDC was canceled, along with my usual disclaimers (like if someone in Microsoft actually told me that, then I couldn't say it because of my NDAs).  So, yes, it is all my opinion, and not something I've been told by anyone in Microsoft.  I'm usually pretty good at being careful about what I say to the press, and make sure to phrase things as my opinion when I'm expressing just that.  And, yes that means I don't know anything about the D Language other than what has been officially published, which is why I felt that I could express my opinion.  Otherwise, there wouldn't have been a quote from me.

    Here's the official statement on why the PDC was canceled last year:

    Q: Why was the PDC canceled last fall?
    A: The PDC was actually rescheduled.  Microsoft tries to time the PDC to be in front of major platform milestones, and the size and scope of the PDC requires us to schedule a suitable venue far in advance. For 2007, we intended to align PDC with the next wave of platform technologies, such as Windows Server 2008, Visual Studio 2008, Silverlight and SQL Server (codenamed “Katmai”).  However, these platform deliverables were already in developers’ hands. Rather than hold a PDC focused on a review of those technologies, Microsoft chose to reschedule the PDC to align with the next wave of platform technologies to be released beyond 2008. 

    Posted Friday, February 22, 2008 3:12 PM by donxml | 0 Comments
  •  
     

    Raleigh Code Camp Slide Deck and Demo

    Melissa and I had a blast at the Raleigh Code Camp.  Thanks to all the folks that helped to coordinate this event!

    Here' the slide deck and the demo app.  It was a great opportunity to work on my material for the full day pre-conference on LINQ at VSLive San Fran.

    Posted Sunday, February 17, 2008 11:15 AM by donxml | 0 Comments
    Filed under:
  •  
     

    PDC08 Announced - Oct. 27-30

    Looks like Microsoft delayed the "next" Professional Developers Conference a whole year.  They just announced that it will be Oct. 27th-30th, 2008, back in LA (were else?).

    For some reason, I'm not excited.  I think that will change over the next couple months, especially if the Visual Basic team is really going to have a go and language extensions.  But, as with most non-MS employees, I have no idea what they have in mind for the next PDC.  I just hope it is worth the wait.

    Posted Thursday, December 06, 2007 3:03 PM by donxml | 0 Comments
  •  
     

    Rhode Island .Net User Group Dec. 5th

    I'm making my first INETA speaking gig on Wed. Dec. 5th, up at the Rhode Island User Group.  The topic will in LINQ (what else?)

    An Intro to the One Query Syntax to Rule Them All – LINQ

    An introduction to the new standard query syntax (LINQ) added to C# 3.0 and Visual Basic 9.0.  LINQ is much more than just LINQ to SQL, and in this session we will dispel the belief that LINQ is LINQ to SQL (and that LINQ to SQL is evil).  We will cover the basics of how to use LINQ with in memory collections, how to build your own query providers, and explore to 2 of the built in providers, LINQ to SQL and LINQ to XML.

    The idea behind the talk is to give the anti-LINQ talk.  Most LINQ discussions I've seen revolve around LINQ to SQL (as if it was the only LINQ query provider), with the occasional LINQ to XML and LINQ to Objects bit thrown in.  In this one I've revamped my old LINQ talk.  The old way was to talk about the language enhancements first, and then introduce LINQ to Objects/SQL/XML.  Instead, I'll invert it, and lead with the syntax, then how them implemented it, and then the specific implementations, only covering the new language features as needed.. The inspiration was from Ian Cooper's Architecting LINQ to SQL applications, part 2 post.  I really liked his "What Is LINQ" description.  It said all the things I was trying to convey, just in a different order than what I've been using.  I'll see how the audience takes to the new style.  Oh, and I think the Southern New England SQL Server Users Group has also been invited, so I'm sure we will have a lively discussion about the merits of LINQ to SQL.  We need to educate the SQL DBAs about the merits of ORMs (not so much about LINQ to SQL).  I still believe that LINQ to SQL is just methadone for the Access developer.  But, I've been trying to figure out how to use it in a maintainable fashion.  There is a place for just about every technology.  The key is to know when it is appropriate to use it.

    Posted Monday, December 03, 2007 8:19 PM by donxml | 1 Comments
  •  
     

    Zune V2 Is The Next Microsoft Bob

    Man, I sure screwed up when I upgraded my Zune to version 2, and it is too late to go back.  The Zune firmware upgrade really isn't too bad, but the Zune V2 software is totally useless.  Well, not totally, because it can sync your media from your PC to your Zune.  But, if you want to organize your media collection, well, you will have to find something else.  Me, I have a very large music based media collection (over 50GB and growing), and I like to organize my collection, my way.  Which is why I can't stand iTunes and its authoritarian style.  Yes, it works for the brain dead folks that don't organize their collections, and it looks like Microsoft took a page right out of the Apple handbook (and even made it worse).

    So, what's missing?  Well, if you had used WMP or Zune to edit your MP3 ID tags, well, that is (almost) gone.  About the only thing you can do is change the song name.  And you can't even edit most of the ID tags using Vista!  Totally useless.  Then, there is the "heart" rating system, which is basically a 3 star system.  What was wrong with the tried and true 5 star system?  Now I have the choices of not rated, hated, or loved.  Umm, I need more than 3 choices.  And the most missed option, the auto playlist.  The auto playlist was paritially bust in Zune 1 and WMP 11, since there was a null date bug (if you wanted to listen to song you hadn't heard in X number of days, and the song had never been played, the query would return the song because the date last played is null), but there was work-a-rounds.  But, auto playlist was cut from Zune 2.2 in order to ship (seems like people don't use this option or didn't complain enough to get it up the priority chain).

    Don't even get me started on the dumded down UI.  I couldn't figure out how to force it to rescan my folders, since, if you add music to your music folders and Zune isn't running, it didn't know it happened, so it isn't smart enough to look for changes.  Turns out you have to drag the folder onto the Zune software and it will add it too the library, if it doesn't already exist (that part they got right).  Actually I kind of like this feature, now that I know it.  It is faster than forcing WMP or Zune v1 to resync.  The problem is that it isn't intuitive.  But, if the tags are wrong, you are screwed, because never Zune or Vista gives you the ability to fix them (see the early comment).

    And then there is the still missing Software Developers Kit (SDK).  Microsoft is really missing the boat on this.  Get the hobbyists involved in making your product better.  Obviously, you can't figure out how to write a good media library, so why not let the hobbyist go to it.  Wasn't that part of the beauty of WinAmp, all the customizations?  I so wanted to write a LINQ provider for the new Zune v2 software.  Now, I just want Microsoft to open the Zune communication API so someone can write a real media library AND be able to sync it to the Zune device.  The hardware (and firmware) isn't bad, but the client side software, totally useless.  How I wish for the old ARCHOS days, when you could mount a MP3 player as an external harddrive and you were not tied to a proprietary, crappy media library.  What was even better, with MusicMatch, you could keep the hard drive's media library database on the drive.

    Update - A major part of the problem with the new Zune Software is that is 100% focused on organizing media collections purchased from an online store.  If you still buy CDs (like me), or create your own media files (like me), this software isn't designed for you.  I can understand where they were coming from when they designed it, but it was definitely written for a different market segment than the one I'm in.  I know I'm not in the majority, but I know there are others out there just like me.  I had my hopes that this upgrade would help make the Zune better for me, instead it just made it harder to use. 

    Technorati Tags:
    Posted Tuesday, November 13, 2007 11:55 PM by donxml | 16 Comments
  •  
     

    Visual Studio 2008 Beta 2 VPC Images to Timebomb on Nov 1st

    If you are using the Visual Studio 2008 Beta 2 Virtual PC images, you will want to backup your data to another location (you should be doing that anyway).  Microsoft is trying to get the word out about a major snafu - "that the current Visual Studio 2008 Beta 2 VPC images will expire on November 1, 2007, rather than March 15, 2008 as originally announced".  Yikes, that will be a problem for folks that don't backup their data, as there is a good chance that after Nov. 1, you will not be able to get back into your VPC.  So, if you are using the VPC images in question, backup your data. Definitely spread the word, and let others know about this problem.

    I've install Visual Studio 2008 Beta 2 on my machine (not my production machine), so I'm not affected.  But, I will tell you that .Net 3.5 Beta 2 does install some patches to the .Net 2.0 dlls.  I know of at least one case where the patches fixed a bug in ASP.Net, and the developer didn't realize it until they tried to deploy their code to a machine without the patch.  This is exactly why I love Virtual PCs, and continuous integration on "clean" build machines.  If you are not using a continuous integration product like CrusieControl.Net, it is easy to get started, and the benefits are immediate. 

    Posted Monday, October 29, 2007 1:17 PM by donxml | 1 Comments
More Posts Next page »
Powered by Community Server, by Telligent Systems