Monday, December 11, 2006

C# free test

Actually I don't think these tests make sense. They check knowledge more then programmer's possibilities. Even erudite person may not give good result on job, because knowledge is not all. Yes, good knowledge may help to code effectively in the clean new project. But in the big existing projects, it doesn't make sense without other things.

We always know ourself very good, but in any moment that we can to get free exam, we going to get it. :) Even if the test is so stupid, like this one.
Free exams

Thursday, December 07, 2006

Visual Studio macro - collapse all projects

I have 125 project in solution, and it is hard to manage them without one-click macro. After migration to VS 2005 things are same - Microsoft just doesn't think about it, so I use old good macro again.
This macro collapses on top level only. I think, it is enough, anyway it takes time to collapse all.

Sub CollapseAll()

' Get the the Solution Explorer tree
Dim UIHSolutionExplorer As UIHierarchy
UIHSolutionExplorer = DTE.Windows.Item( _

' Check if there is any open solution
If (UIHSolutionExplorer.UIHierarchyItems.Count = 0) Then
' MsgBox("Nothing to collapse. You must have an open solution.")
End If

' Get the top node (the name of the solution)
Dim UIHSolutionRootNode As UIHierarchyItem
UIHSolutionRootNode = UIHSolutionExplorer.UIHierarchyItems.Item(1)

' Collapse each project node
Dim UIHItem As UIHierarchyItem
For Each UIHItem In UIHSolutionRootNode.UIHierarchyItems
UIHItem.UIHierarchyItems.Expanded = False

' Select the solution node, or else when you click
' on the solution window
' scrollbar, it will synchronize the open document
' with the tree and pop
' out the corresponding node which is probably not what you want.

End Sub

Wednesday, December 06, 2006

Setup web application on Windows 2003

Windows 2003 come with NET 1.1 preinstalled. However, ASP.NET web extension may be not installed by default. It is depends on checkbox ASP.NET in the "Windows Components" of the Add/Remove Programs.
Well, I can ask user to prepare the system, before install my web application.
However, I get clear right now, it doesn't help to me. Because it is ASP.NET 1.1 and nothing more. So, I leave user without stupid requirements and do following.

My setup installs .NET 2
My setup registers ASP.NET 2 through aspnet_regiis.exe
But ASP.NET web extension appears in the IIS settings as prohibited
Ok, another day for search/trying/insomnia and my C# application running from the setup, will do things right:

// if windows 2003
if (Environment.OSVersion.Version.Major == 5 &&
Environment.OSVersion.Version.Minor == 2)
DirectoryEntry folderRoot = new DirectoryEntry("IIS://localhost/W3SVC");
folderRoot.Invoke("EnableWebServiceExtension", "ASP.NET v2.0.50727");

User installs my web application setup, and doesn't complain. :)

I found also other usefull methods:
If we want to check, is ASP.NET installed at all
we should use ListWebServiceExtensions and search for ASP.NET in the returned list of extensions.
System.Array installedObj = (System.Array)folderRoot.Invoke("ListWebServiceExtensions", null);

Also we can check, is web extension restricted or not. If ASP.NET is restricted, then property WebSvcExtRestrictionList will return list containing ASP.NET:
System.Array restrictedObj = (System.Array)folderRoot.Properties["WebSvcExtRestrictionList"].Value;