Create a no Form Wizard for children template, use static properties to take value from Main Wizard.
using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TemplateWizard;
using System.Windows.Forms;
using EnvDTE;

namespace CustomWizard
    public class NewWidgetTemplateWizard : IWizard
        private UserInputForm _inputForm;
        private string _projectName;
        private int _portNumber;
        private string _releaseSchema;
        private Guid _projectGuid;
        #region Implementation of IWizard

        public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)

                    _inputForm = new UserInputForm();
                    _projectName = _inputForm.ProjectName;
                    _portNumber = _inputForm.PortNumber;
                    _releaseSchema = _inputForm.ReleaseSchema;
                    _projectGuid = Guid.NewGuid();

                        _projectName );

            catch (Exception ex)

        private void SetUpChild()
            NewWidgetTemplateWizardChild.PortNumber = this._portNumber;
            NewWidgetTemplateWizardChild.ProjectName = this._projectName;
            NewWidgetTemplateWizardChild.ReleaseSchema = this._releaseSchema;
            NewWidgetTemplateWizardChild.ProjectGuid = this._projectGuid;
Supper simple solution..

Categories: Visual studio 10/up | VS 2005 | VS 2008

Custom Project Template with Wizard, create the new class with the name of custom value.
Categories: | C# | Visual studio 10/up | VS 2008

Tools--> Manage Add-ons--> Microsoft Corporation-->Microsoft Web Test Record
(and I noticed the Fiddler2 is not enable there either..)

After enable it, You can see the Web Test Recorder bar in the IE window's left.


Categories: UnitTest | VS 2008

ILmerge.exe download link from Microsoft.


For example, the following command could be issued to combine one primary assembly and two secondary assemblies into a single merged DLL file:

ilmerge /out:Merged.dll Primary.dll Secondary1.dll Secondary2.dll

using wildcard:
ilmerge /wildcards /out:Merged.dll Primary.dll Secondary*.dll

ilmerge /log:log.txt /out:Merged.dll Primary.dll Secondary1.dll Secondary2.dll

Categories: VS 2005 | VS 2008

September 22, 2010
@ 09:55 AM
Author: Carlos J. Quintero (Microsoft MVP) Applies to: Microsoft Visual Studio .NET 2002
Date: June 2008   Microsoft Visual Studio .NET 2003
Updated: March 2009   Microsoft Visual Studio 2005
      Microsoft Visual Studio 2008


This article provides a list of known project type Guids.

More Information

Every Visual Studio project has a project type (Windows project, Smart Device project, Web Site project, etc.) and in some cases more than one type (subtypes or flavors).

Every project type is identified by a unique Guid, so every project has one or more project type Guids.

Project type Guids are stored generally in the project file:


But for some special projects (such as some database projects) and projects lacking a file (such as Web Site projects), the project type is stored also in the solution file:

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "SqlServerProject1", "SqlServerProject1.vbproj", "{BE5F0BE0-93CD-4FCE-A853-9096A442DF1B}"

Note: Do not confuse the project type Guid with the project guid that identifies a project within a solution.

The main project type of a project is returned by the automation model through the EnvDTE.Project.Kind property, which is a string containing the Guid that identifies the project type. To get all the project type Guids of a project you have to read the project or solution file, or use the IVsAggregatableProject interface as described in the article HOWTO: Get the project flavor (subtype) of a Visual Studio project from an add-in.

The project type Guids are stored in the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<version>\Projects where <version> is:

  • 7.0 for Visual Studio .NET 2002
  • 7.1 for Visual Studio .NET 2003
  • 8.0 for Visual Studio 2005
  • 9.0 for Visual Studio 2008

However, not all the Guids stored in that registry key are actual project types. Some of them are used only to provide project templates (for C# and VB.NET projects) and others have other purposes. The following table lists known project type Guids.

Note: The Guids are provided all uppercase because the case in the registry doesn't always match the case in the project file.

Project Type Description Project Type Guid
Windows (C#) {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET) {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C++) {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Web Application {349C5851-65DF-11DA-9384-00065B846F21}
Web Site {E24C65DC-7377-472B-9ABA-BC803B73C61A}
Distributed System {F135691A-BF7E-435D-8960-F99683D2D49C}
Windows Communication Foundation (WCF) {3D9AD99F-2412-4246-B90B-4EAA41C64699}
Windows Presentation Foundation (WPF) {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}
Visual Database Tools {C252FEB5-A946-4202-B1D4-9916A0590387}
Database {A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124}
Database (other project types) {4F174C21-8C12-11D0-8340-0000F80270F8}
Test {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
Legacy (2003) Smart Device (C#) {20D4826A-C6FA-45DB-90F4-C717570B9F32}
Legacy (2003) Smart Device (VB.NET) {CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8}
Smart Device (C#) {4D628B5B-2FBC-4AA6-8C16-197242AEB884}
Smart Device (VB.NET) {68B1623D-7FB9-47D8-8664-7ECEA3297D4F}
Workflow (C#) {14822709-B5A1-4724-98CA-57A101D1B079}
Workflow (VB.NET) {D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8}
Deployment Merge Module {06A35CCD-C46D-44D5-987B-CF40FF872267}
Deployment Cab {3EA9E505-35AC-4774-B492-AD1749C4943A}
Deployment Setup {978C614F-708E-4E1A-B201-565925725DBA}
Deployment Smart Device Cab {AB322303-2255-48EF-A496-5904EB18DA55}
Visual Studio Tools for Applications (VSTA) {A860303F-1F3F-4691-B57E-529FC101A107}
Visual Studio Tools for Office (VSTO) {BAA0C2D2-18E2-41B9-852F-F413020CAA33}
SharePoint Workflow {F8810EC1-6754-47FC-A15F-DFABD2E3FA90}
XNA (Windows) {6D335F3A-9D43-41b4-9D22-F6F17C4BE596}
XNA (XBox) {2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2}
XNA (Zune) {D399B71A-8929-442a-A9AC-8BEC78BB2433}
SharePoint (VB.NET) {EC05E597-79D4-47f3-ADA0-324C4F7C7484}
SharePoint (C#) {593B0543-81F6-4436-BA1E-4747859CAAE2}
Silverlight {A1591282-1198-4647-A2B1-27E5FF5F6F3B}

Categories: VS 2005 | VS 2008

After installed and tested Vault/Fortress. I think Vault has many features very useful for our team:

  1. Vault can import the data from database of VSS, and you can compare the update histories between VSS and Vault  
  2. Cheap branching, very fast and height efficiency. Atomic check in support. All the files you check in same time regard as one unit, if one of them commit failed then all the files will be rollback.
  3. You can shelve you unfinished change, and you can un-shelve it any where.
  4. Client User GUI is supper friendly and straightforward. Much easier to use than VSS or any other revision tools.

It has Integrated GUI with VS and Eclipse. In Visual Studio, only need 3 steps you can switch the opened solution from control of VSS to Vault.


  1. Supper easy to merge, it has similar functions like Beyond Compare, but integrated in its GUI. The tools of compare  branches and folders is also very useful when we do branch merge.
  2. It use SqlServer database as its backend, so it is easy to management.

It has Programming API, we can do some integration work ourselves if need.

7         Fortress is a Project Management and Bug tracking system. It integrated with VauLt, when you check in, you can easily broswer the project/bug items you are working on, and associate the “Bug_Id” with the checkin. All description in project/Bug item can be load to check in comments with out “Copy\paste”. You can force all check in must need a bug_Id.

8         Higher Security, you can set different privilege for projects/branches with different developers and groups.


There are more features I didn’t list.

More information available at

Categories: Agile | ProjectManagement | VS 2005 | VS 2008

What is TestContext?

TestContext is a abstract class of Microsoft.VisualStudio.TestTools.UnitTesting namespace that provides various information about the current test run. Purposes that has been served by TestContext Class -

1.  To store information and provide information to the unit tests during Unit Test Run.

2.  Provide a mechanism to measure performance of your code being tested by the Unit Test.

3.  In Testing the web service it stores the additional information, like server's URL.

4.  In Asp.Net unit tests, it get holds of the Page object.

5.  For Data Driven Unit Tests , it provides access to the data rows.

Categories: Agile | C# | UnitTest | VS 2008

1. you need create a web deploy project, if you didn't have that,please install the web deployment plug-in.

For Visual Studio 2005, the plug-in can be downloaded here.

For Visual Studio 2008, the plug-in can be downloaded here.

2. Configure your deploy project properties like below.

3. after build, you will get a single assembly CommonVoiceUC.dll,
in you new web site, add it to your reference.

4. in your aspx page, use it like regular Customer Controls.
<%@ Register Assembly="CommonVoiceUC" Namespace="CVUC" TagPrefix="cvuc" %>
<cvuc:CvDistributionGroupUpdateUC runat="server" ID="test" />

so this way you can very easy create a lot of customer controls with lots of Html tag or css in it. and it very easy for other application to use it.
the bad thing is if the control have other components, for example "Telerik.Web.UI.dll", and other site want to reuse this control was using a different version of Telerik control.
the conflicts will happen.

Categories: | VS 2005 | VS 2008

Currently I am working on a project are using ASP.NET MVC, and I need reuse some user controls with Telerik Controls,
As you know, many of those user controls for WebForm need enable ViewSate.
So I had combined both new MVC and old WebForm pages in this project.
and I had encountered and solved many issues both for integration and MVC
I write some key points here as my collections and want to share with my visitors.
Here is an article about adding MVC to regular website :link

 1. setup Route in Global.asax

public static void RegisterRoutes(RouteCollection routes)

// routes.IgnoreRoute("Classic/{resource}.aspx?{*requestUrl}"); //the ? is not allow in the route config
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); //All .aspx regard as webform.
routes.IgnoreRoute("{resource}.ash/{*pathInfo}"); //other type need escape
routes.IgnoreRoute("Classic/{resource}.aspx/{*pathInfo}"); //I put my webform files in classic folder


"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults

2. Make your old UserControls work

3. Fix those weird problems of Visual Studio 2008
After copy the Classes such as "BaseUserControl.cs" to MVC project, whatever how many times I clean and rebuild the project, Those classes always can't be found by other classes.
And another issue happen frequently is the Pages have using Telerik controls, always have error message 'Error Creating Control' at design time.
After some research, I found  those step will solve these issues like a magic.

   step 1. Close your Visual studio 2008 .
   step 2. Go to C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\ folder, delete all sub directories.
   step 3. Go to C:\Documents and Settings\yourname\Local Settings\Application Data\Microsoft\VisualStudio\9.0\ProjectAssemblies\
              Delete all sub diretories.
   step 4. Restart.

And some people said, if copy the Telerik dlls to Global assembly will fix Telerik issue.

Categories: | MVC | Telerik Controls | VS 2008