10 Cool Things You Can Do In Visual Studio 2010

 

 

This one is so useful and helpful that I think it deserved a replicated post.

Found it here and original is here.

1. Pin variables when debugging

At debugging when hovering over variables the “Pin variable” option appears. Clicking on this makes the variable stick next to the source code until removed (and the pin stays there between debugging sessions). It is a really hand utility eliminating having to add variables to the Watch window one by one or search through the Locals window to find the variable one’s looking for. Definitely one of the top 3 new features I use on a day to day basis!

clip_image001

2. Box selection

While holding down the Alt key box selection can be made on the screen. At first glance this feature doesn’t seem to useful. However when typing anything in the selection the same text appears in all lines. So this selection is extremely useful for mass renaming of e.g. visibilities or anything else that involves changing the same thing in all lines.

clip_image002

3. Search on-the-fly

When pressing Crtl and , (comma) the new Navigate To window appears. This is a real-time search window offering basically the same functionality as the Find and Replace window (opened by Crtl + Shift + F) but doing it on-the fly, without having to wait seconds for search results. So the list of results updates the moment you type the next letter in your search expression. Scott said that the search database used by this window is built continously in the background by Visual Studio.

4. Zooming

There’s a small zoom drop down box on the left bottom of the application. It’s barely noticeable but is really useful when showing your code to someone else or doing presentations. Not a function you’ll use too often but comes handy every once in a while!

clip_image003

(Note: zooming can also be used with Crtl + mouse scroll)

5. View Call Hierarchy

Exploring code has been made much easier with the new View Call Hierarchy command in the context menu when right clicking a method. The Call Hierarchy window shows calls from the method, calls to the method and overrides of the method (if any). This little add-on makes exploring someone else’s code so much easier.

clip_image004

6. Sequence Diagrams

The professional and above versions of Visual Studio 2010 come with built-in sequence diagram generation functionality. Simply right click on the method and select Generate Sequence Diagram to get a nifty call sequence diagram.

clip_image005

7. Dependency Graphs

The professional and above versions of Visual Studio 2010 come with a built-in dependency graph generator that generates an interactive, browsable dependency graph. When there is a large number of object this graph can get overwhelmingly large. However the fact that it can track dependencies at assembly, namespace and class level as well make it a useful tool for getting an idea for the project dependencies.

clip_image006

8. IntelliTrace and Dump Debugging

Ever had clients submitting bug reports that you were unable to reproduce and made you wish you could just debug right on their machine? IntelliTrace brings this to reality. When running an application with IntelliTrace enabled it records the series of events happening within it and lets the developer play these back. Note however that IntelliTrace collects less information than one might need at debugging and also has a slight performance overhead when turned on. IntelliTrace is only available in Visual Studio 2010 Ultimate. For more information on Intellitrace see MSDN.

Dump Debugging is the feature that enables to open dump files from production machines and debug those. This is a great feature to use for debugging crashes happening on a production machine. See a video on how to use this feature on Channel 9.

9. Multi-monitor support

Few people knew that Visual Studio 2008 actually had multi-monitor support. You just had to launch an instance on each monitor! Aside from this joke, this feature was one that was really wanted. Now windows can be positioned across monitors making developing and debugging a much better overview on dual screens.

10. Intellisense – lots of small improvements

Intellisense has gone through lots of small improvements. The most important ones are:

  • When selecting any variable all instances of it are highlighted – a well needed improvement that has been around for in lots of text editors
  • Search is not limited to prefixes any more, it is done within strings. So when typing time for example, DateTime will be offered as well (previously only names starting with time were)
  • Intellisense can search just knowing the capital letters of a class. When searching e.g. for HttpCachePolicy it’s enough to type HCP - nice!
  • Javascript intellisense is extensive: all major Javascript libraries are supported (JQuery, Ext.JS, Prototype). Expressions are also evaluated on the fly and Intellisense is offered accordingly.

IntelliTrace

Finding how you go to that deep class method that failed…

IntelliTrace cool 2010 feature, if you are debugging the app and it fails on its own, it will show you everything that was called up until that point. Even but button’s you clicked on the website.

Pretty cool. Can’t attach to a process, have to actually run debug.  It’s window on the right or you can open it via, Debug/Windows/IntelliEvents.

It’s shows more usefulness if the app fails a few classes deep.

Note: Only works if you run Debugger

clip_image002

 

image

 

 

IntelliTrace Events Only Option Gives You This:

image
image

IntelliTrace Events and Call Information Give You This:

image
You can see how I got to the error now, which methods call which other methods.
image

Windows 7 Genuine Validation Fails on Genuine Install

 

I was having problems trying to download XPMode because the website tries to validate your Windows 7 operation system.  Even though I activated successfully and I ran the MGA Diagnostic Tool locally and it said Genuine. It still failed the online check.

image

I even called Microsoft to see if they could figure it out. No luck. They tried the obvious stuff, re-entering my product key, re-activating.  They couldn’t figure it out. Even gave me a new product key and still no luck.  Then I told them I had to go.

Found the answer on my own..

I was getting Event Errors in my Application Log.

Source: CAPI2
Event ID: 257

The Cryptographic Services service failed to initialize the Catalog Database. The ESENT error was: -1011.

Then I caught online something on bypassing XP Genuine has to do with the Cryptographic services. Putting two and two together, I figured this error was the source of my problem.

After a little digging I found this article which gave me steps to wipe out my System Catalog Database. 

This fixed my error and allowed me to validate my windows online.

  1. Click Start, point to Administrative Tools, and then click Services.
  2. Right-click Cryptographic Services, and then click Stop.
  3. Click Start, and then click Computer.
  4. Navigate to %systemroot%\System32.

    By default, %systemroot% is located at C:\Windows.

  5. Rename the catroot2 folder to catroot2.old.
  6. In the Services snap-in console, right-click Cryptographic Services, and then click Start.

Information Architecture for Beginners

 

Great blog post on Information Architecture.

 

Complete Beginner’s Guide to Information Architecture

Information architecture is an often misunderstood job title. Are they Designers? Developers? Managers? All of the above? In this article we’ll discuss what information architecture is, why it’s related to usability, and what are the common tools/programs used in information architecture.

 

Information architecture encompasses a wide range of problems. But regardless of the specific context or objectives of a given information architecture project, our concern is always with creating structures to facilitate effective communication. This notion is the core of our discipline.

Jessie James Garrett

What does an Information Architect do?  What tools do they use?

Read More..

Are Easter Eggs in Software a thing of the past?

Was reading a post that Office Easter eggs no longer exist due to the government regulating that every software feature has to be documented.   I was developing a silverlight app and wanted to place in my own Easter egg.

Basically holding down Shift-Ctrl-Windows Key and clicking on the Logo, brings up my face :)

 

image

Silverlight & WCF Debugging and using Fiddler!

 

Fiddler2 Best program out there I think for debugging WCF errors in silverlight when you get “NotFound” error messages.

 

Example. I had a Silverlight application where I had to enable it work over https and change the host headers. As many of you may know, WCF on .NET 3.5 you can not bind to website with multiple headers. You have to hardcode the WCF Address in the web.config. (I’ve read that .Net 4.0 will allow this but still not for ssl).

All my setting from what I can tell in my web.config and my clientConfig were correct, and the app worked fine in http mode only, however I would get the most generic message ever.

image

This is my custom error window I use to have users send the errors to the server.  As you can see the error is “The remote server returned an error: NotFound.”  this is basically the equivalent of the old server error message “An Unexpected Error Occurred”.  Basically who knows. Something’s wrong.  The WCF service is not responding. Could be your firewall, your IIS, your service is erroring out or 100 other things. 

Download and install Fiddler2 and let the magic begin.  I did try WebDevHelper which is like FireBug for FireFox but it works in IE.  It’s pretty good, but like FireBug, doesn’t give you that WCF error.

Loading up Fiddler, I can inspect the traffic and actually see the .Net error. It even highlights it in red for me.  (Had to block out the app names).

image

From this I was able to expand the information like below to see the real error message.

image

Cannot be process at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher.  Check that the sender and receiver’s EndPointAddresses agree

After I realized what the problem was I was able to fix my service by adding the attribute AddressFilterMode:=AddressFilterMode.Any to my WCF class.

<ServiceContract(Namespace:="")> _
<ServiceBehavior(IncludeExceptionDetailInFaults:=True, AddressFilterMode:=AddressFilterMode.Any)> _
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _
Public Class xxxxxxxxxxxService

 

Problem Solved.

 

WCF logging:

You can also log all your WCF Traffic to a Log file on your server.

  <system.diagnostics>
      <sharedListeners>
          <add name="WcfListener"
                  type="System.Diagnostics.XmlWriterTraceListener"
                    initializeData="C:\logs\wcfLog.svclog"/>
      </sharedListeners>
      <sources>
          <!-- switchValue attribute has no impact on MessageLogging -->
          <source name="System.ServiceModel.MessageLogging">
              <listeners>
                  <add name="WcfListener" />
              </listeners>
          </source>
          <source name="System.ServiceModel"
                        switchValue="Warning, ActivityTracing"
                        propagateActivity="true" >
              <listeners>
                  <add name="WcfListener" />
              </listeners>
          </source>
      </sources>
  </system.diagnostics>

 

<system.serviceModel>
    <diagnostics>
        <messageLogging
             logEntireMessage="true"
             logMalformedMessages="false"
             logMessagesAtServiceLevel="true"
             logMessagesAtTransportLevel="false"
             maxMessagesToLog="3000"
             maxSizeOfMessageToLog="2000"/>
    </diagnostics>
</system.serviceModel>

 

Other useful posts..

Silverlight and WCF – WCF Logs and Debugging

Service Trace Viewer Tool (SvcTraceViewer.exe)

Silverlight & WCF - HTTPS

My Customized version of ClarkLab’s Animated Drop Down Menu with jQuery

 

I found this post on Clarklab.net, Animated Drop Down Menu with jQuery.  Looked simple to use and I loved that I didn’t need any plug-in files like other “plug-ins”. I guess this really isn’t a plug-in.  Just nice, basic jquery and css.

They give the step by step and why you nee each line of code.

This is their version and their demo is here.

Row colors

 

 

My Need for it and How I Used

I had an application that had two date pickers.  The goal was to make it easy for the user to be able to set the date on the second date picker based on the date from the first date picker. Adding X days to the date in the first date picker.

I’m using Telerik’s AJAX Calendar control for my date picker so some of the Javascript you’ll see is specific to their Client API.

image

I followed their steps but altered the CSS and UL list of course.

My CSS:

<style type="text/css">

.menu_head{border:0; margin-top:10px}
.menu_body ul, li{margin:0; padding:0; list-style:none;}
.menu_body {display:none; width:100px; margin-left:-40px; font-size:small;}
.menu_body li a:hover{font-weight:bold;}

</style>

Added my UL list..

<img src="/Images/BlueArrowRight.png" alt="Copy Date Over" height="24px" width="24px" class="menu_head" />
<ul class="menu_body">
    <li><a href="javascript:CopyDate(0);">Copy Date</a></li>
    <li><a href="javascript:CopyDate(15);">Add 15 days</a></li>
    <li><a href="javascript:CopyDate(30);">Add 30 days</a></li>
    <li><a href="javascript:CopyDate(45);">Add 45 days</a></li>
    <li><a href="javascript:CopyDate(60);">Add 60 days</a></li>
    <li><a href="javascript:CopyDate(90);">Add 90 days</a></li>
    <li><a href="javascript:CopyDate(120);">Add 120 days</a></li>
</ul>

 

Then added my jQuery.. I’m sure there is a better way to close the menu, but I threw it in my CopyDate() method. Again, note that picker.get_textBox() and get_selectedDate() are Telerik Client API methods on their controls.

<script type="text/javascript">
    $(document).ready(function() {
        $("ul.menu_body li:even").addClass("alt");

        $('img.menu_head').click(function() {
            $('ul.menu_body').slideToggle('medium');
        });

        function CopyDate(TotalDays) {
            AddDueDate(TotalDays);
            $('ul.menu_body').slideToggle('medium');
        }

        function AddDueDate(TotalDays) {
            if (TotalDays >= 0) {
                var picker = $find("<%= calDateOfLetter.ClientID %>");
                var textBox = picker.get_textBox();
                var destination = $find("ctl00_ContentPlaceHolder1_calDueDate_calDatePicker");
                var destTextbox = destination.get_textBox();

                var CurrentDate = picker.get_selectedDate();
                CurrentDate.setDate(CurrentDate.getDate() + parseInt(TotalDays));
                destination.set_selectedDate(CurrentDate);
                picker.hidePopup();
            }
        }
    });
</script>

 

Finished Version (yes the dates are old, the record I’m testing on happens to be old)

image

Clicking on the arrow you get the menu..

image

Click on a date and it gets added and the menu closes..

image

Works great! I love it, client loves it, end-user loves it.  Thanks Clarklabs!

Some New VB.NET 10 (VS2010) Features

 

Autoimplemented Properties (yes C# already had this)

Previous VB.Net 9 (Or VS 2008)

    Private _Name As String
    Public Property Name() As String
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            _Name = value
        End Set
    End Property

    Private _Addresses As List(Of Car)
    Public Property Addresses() As List(Of Car)
        Get
            Return _Addresses
        End Get
        Set(ByVal value As List(Of Car))
            _Addresses = value
        End Set
    End Property

New VB.Net 10 (Or VS 2010)

Public Property Name() As String

Public Property AddressList() As List(Of Car) = New List(Of Car)

Or (Setting a Default Value)

Public Property Name() As String = "Fred"

Public Property Addresses() As New List(Of Car)

 

Collection Initializers:

 

Public Property Cars As New List(Of Car) from {
                                                New Car With (.Color = “Red", .Make = "Ford"),
                                                New Car With (.Color = “Blue", .Make = "Mazda")
                                              }
 

 

Implicit Line Continuation:

 

No more need for the underscore _ to continue a VB line. You can see from code sample above and from this. 

    Dim Statement As String = "Hello"
        & "World"
        & " All Considered One Line"

 

Watch Video: http://msdn.microsoft.com/en-us/vbasic/ee681550.aspx

Want to Learn BI and Cube Creation? (Business Intelligence)

 

I’ve been toying around with the possibly getting more into BI and Cube design, aka Business Intelligence. From Wiki..

Business Intelligence (BI) refers to computer-based techniques used in spotting, digging-out, and analyzing business data, such as sales revenue by products or departments or associated costs and incomes. [1]

BI technologies provide historical, current, and predictive views of business operations. Common functions of Business Intelligence technologies are reporting, online analytical processing, analytics, data mining, business performance management, benchmarking, text mining, and predictive analytics.

Business Intelligence often aims to support better business decision-making.[2] Thus a BI system can be called a decision support system (DSS).[3] Though the term business intelligence is often used as a synonym for competitive intelligence, because they both support decision making, BI uses technologies, processes, and applications to analyze mostly internal, structured data and business processes while competitive intelligence, is done by gathering, analyzing and disseminating information with or without support from technology and applications, and focuses on all-source information and data (unstructured or structured), mostly external to, but also internal to a company, to support decision making.

 

I’ve looked into a few books but find I am already swamped with reading up on Team Foundation Server, Silverlight, WCFRIA, Windows Workflow, Azure Cloud Services and a few other technologies.

With that, I find it sometimes easier to listen or watch a video while I work on something else. I came across an interesting site from CIOBriefings. LearnMicrosoftBI.Com.

They have an excellent list of BI videos and searching the “cube”, and they are free if you register.

Note: You MUST Register Free on Site Before you can access these videos.

Title

Description

 

Basics 101 - What is Business Intelligence?

This introductory video discusses what is meant by Business Intelligence (BI) and why businesses pursue BI projects. (12 minutes)

 

Basics 102 - Delivering Business Intelligence

With a properly designed data warehouse, a BI solution can deliver value to almost any user in an organization. This video explores the different users and various tools in a BI solution. (34 minutes)

 

Basics 103 - The Data Warehousing Process

Business Intelligence is a process, and the main component is building a data warehouse. This video discusses the process of building a data warehouse from problem definition through the delivery of the data. (19.5 minutes)

 

Basics 104 - Why BI Projects Fail (and what you can do about it)

Learn about the primary reasons BI projects fail and what you can do to address these problems. This session is based on Craig Utley's experiences with BI projects at approximately forty companies worldwide. (32.5 minutes)

 

Basics 105 - Introduction to Business Intelligence Development Studio

See the primary tool used during the development of a data warehousing solution, Business Intelligence Development Studio (BIDS). BIDS is used to create SSIS packages, SSAS cubes, and SSRS reports. (15.5 minutes)

 

SSAS 101 - Introduction to Analysis Services

This short video introduces Analysis Services to those who aren't familiar with it. It discusses the two primary areas of Analysis Services: building multidimensional cubes and building data mining models. (6.5 minutes)

 

SSAS 102 - Creating Projects and Data Sources

This video covers the creation of both projects and data sources. A discussion of the options and decision points is included. (17 minutes)

 

SSAS 103 - Data Source Views

Data Source Views are an incredibly powerful concept in SSAS projects that represent logical views of one or more data sources and allow developers to manipulate the schema. (21 minutes)

 

SSAS 104 - The Cube Wizard - SSAS 2005

This video discusses the Cube Wizard in Analysis Services 2005 The Cube Wizard creates cubes but can also create dimensions, and populate those dimensions with attributes and hierarchies. (16.5 minutes)

 

SSAS 105 - The Cube Wizard - SSAS 2008

This video shows the significantly enhanced Cube Wizard in SSAS 2008. The wizard has been streamlined and creates much simpler dimensions. (12.5 minutes)

 

SSAS 106 - Basic Deploying, Processing, and Browsing

Following up on the Cube Wizard videos, this shows how to deploy and process the simple cubes just created, and then browse the data to verify the cube structure. (23 minutes)

 

SSAS 107 - Creating Dimensions

This video covers dimension creation using the Dimension Wizard in both SSAS 2005 and 2008. A discussion of database dimensions and cube dimensions follows, as well as an examination of some of the properties of dimensions and attributes. (42.5 minutes)

 

SSAS 108 - Creating Hierarchies

This video follows up the previous video by showing how to create hierarchies in the new dimensions. Hierarchies are created and the All member is changed and removed, among other topics. (25 minutes)

 

SSAS 109 - Attribute Relationships

This video covers attribute relationships: what they are, how they work, and why they are so important. You'll see how to create them and some of the problems you might have. (57.5 minutes)

 

SSAS 110 - Dimension Usage

Learn how a cube supports multiple fact tables through the use of dimensions and measure groups. You'll discover how to tie dimensions to measure groups and how to handle unrelated dimensions. (19 minutes)

 

SSAS 111 - Aggregation Basics in SSAS 2005

This video shows how to create aggregations in SSAS 2005. It covers the aggregation wizard, the "one-third" rule, and aggregation counts. (24 minutes)

 

SSAS 112 - Aggregation Basics in SSAS 2008

This covers why you want to create aggregations and how to use the aggregation wizard. A discussion of the "one-third rule" is included. (25 minutes)

 

PPS 101 - Introduction to PerformancePoint Server

This video discusses PerformancePoint Server and its three modules: Monitoring, Analytics, and Planning. You'll learn what the three modules do and how they fit together to form a comprehensive solution. (21 minutes)

 

MDX 101 - MDX: Basics and Structure

This video is the first in an introductory series about MDX. This video discusses the basics of MDX including usage, tuples, sets, and the basic structure of an MDX query. (27.5 minutes)

 

QuickHit #1 - Ignore Unrelated Dims and Calculated Measures

This video discusses how IgnoreUnrelatedDimensions works with calculated measures. (5 minutes)

 

MDX 102 - Hierarchy Navigation

This video describes how to navigate attribute and user hierarchies. Set and Member Functions are discussed, and all code is shown running in SSMS. (19.5 minutes)

 

QuickHit #2 - Attributes, Keys, and Hierarchies

Adding an attribute to a natural hierarchy sometimes involves setting up a compound key in the KeyColumns property. What if you also want that attribute available without the effects of the compound key? (6.5 minutes)

 

QuickHit #3 - Incremental Fact Processing

How do you perform incremental measure group/partition processing without duplicating data? See how to use the ProcessAdd XMLA command and modify the query to accurately load facts incrementally. (11 minutes)

 

SSAS 113 - Working with Slowly Changing Dimensions

This video describes slowly changing dimensions, both Type I and Type II, and how to work with them in SSAS. (26.5 minutes)

 

SSAS 114 - Calculations

This video covers calculations in an SSAS database including calculated members, named sets, and the SCOPE statement. (35.5 minutes)

 

SSAS 115 - KPIs

This video covers Key Performance Indicators (KPIs). Learn how to create KPIs, including the value, goal, status, and trend. (27 minutes)

 

PC 101 - ProClarity Overview

This video is an overview of the ProClarity products. See what products exist, their uses, and their likely futures. (11 minutes)

 

PC 102 - ProClarity Basics

Learn the basics of analysis with ProClarity Desktop Professional, including drilling down/up, expanding/collapsing, and the four basic views. (20.5 minutes)

 

PC 103 - The Setup Panel

This video dives into the Setup Panel in ProClarity Desktop Professional. You'll see how to manipulate the rows, columns, and background, as well as create slicers, sets, and members. (32 minutes)

 

PC 104 - Decomposition Tree

Discover the ProClarity Decomposition Tree. See how to launch it and use it to analyze data. (13.5 minutes)

 

SSAS 116 - Introduction to Actions

This video introduces actions in Analysis Services. It discusses the types of actions and shows examples of a couple of actions in use. (10 minutes)

 

SSAS 117 - Drillthrough Actions

This video covers drillthrough actions in Analysis Services. It shows how to set them up and describes fact dimensions and their use in drillthrough. (19 minutes)

 

SSAS 118 - Standard Actions

This video is about standard actions in Analysis Services. It shows the creation and use of a URL action. (12.5 minutes)

 

SSAS 119 - Reporting Actions

This video covers reporting actions in Analysis Services. It shows how to call a report in SSRS and pass parameters. (16.5 minutes)

 

SSAS 120 - Storage Modes

This video covers storage modes in Analysis Services. You'll learn about MOLAP, ROLAP, and HOLAP and see how to change the settings for dimensions and cube partitions. (16.5 minutes)

 

SSAS 121 - Partitions

Learn what partitions are, how to create partitions using table or query binding, and how to merge partitions. (22 minutes)

 

SSAS 122 - Translations

This video covers translations in Analysis Services. After a quick overview of translations, you will learn how to create them for both the cube and dimensions. You'll see how to change captions as well as dimension data. (14.5 minutes)

 

SSAS 123 - Perspectives

This video covers perspectives in Analysis Services. You'll learn what perspectives are, see how to create them, and then use them in a client tool. The video also compares perspectives to views in a relational database. (10.5 minutes)

 

QuickHit #4 - Cube Sparsity and Query Performance

This video is a QuickHit covering the concept of cube sparsity and how it can affect calculations in a query. You'll see examples of a simple query change and the dramatic impact it can have on performance, and how to monitor the cells being calculated. (