Tuesday, September 11, 2007

Installing an Assembly in the Global Assembly Cache.

The steps are follows:-
1)Create a Class Library project in VS.net and name it as GACShow.
2)Generating a public name:
To generate this cryptographic key pair use the SN tool.This tool is located in the \bin subdirectory where the .net framework Software Development Kit(SDK) is installed.
The command-line statement takes the following :
form:sn -k "[DriveLetter]:\[DirectoryToPlaceKey]\[KeyName].snk"
3)Create a directory named GACKey in the C: drive so that you can easily locate and access the key from the command prompt.
Note: For most users, the .NET tools are located in C:\Program Files\Microsoft.NET\FrameworkSDK\Bin. Before you type the following SN command, you may want to copy this similar path on your computer to the .NET bin directory. Type cd from the command prompt, right-click to paste the path, and then press ENTER to quickly change to the directory where the SN Tool is located.
Type the following:
sn -k "C:\GACKey\GACkey.snk"
4)Placing the KeyFile into the Assembly:
A key is generated, but it is not yet associated with the assembly of the project. To create this association, double-click the AssemblyInfo.cs file in Visual Studio .NET Solution Explorer. This file has the list of assembly attributes that are included by default when a project is created in Visual Studio .NET. Modify the AssemblyKeyFile assembly attribute in the code as follows:
[assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
5)Compile the project by clicking CTRL+SHIFT+B. You do not have to have any additional code to install a .dll file in the GAC.
6)Placing the Assemby into the GAC:
There are two ways by which you can place the assembly in the GAC-
i)You can install the .dll file by using the Gacutil Tool. If you use the Gacutil Tool, you can use the following command:
c:\>gacutil -I "[DriveLetter]:\[PathToBinDirectoryInVSProject]\projname.dll" It means that place the .dll that you can find in the bin subdirectory of your project.
ii)If you want to drag the file, use Microsoft Windows Explorer. Open two instances of Windows Explorer. In one instance, find the location of the .dll file output for your console project.
In the other instance, find c:\[SystemRoot]\Assembly. Drag your .dll file to the Assembly folder- c:\WINDOWS\Assembly

Monday, September 10, 2007

Sending Email with attachment using ASP.NET & VB.NET.

The following code can be used successfully to send email:-

Dim objEmail As New MailMessage
objEmail.To = strComm 'to whom
objEmail.From = "sumit_daripa@mindtree.com"
objEmail.BodyFormat = MailFormat.Text
objEmail.Subject = "Checking"
objEmail.Body = "Thank you for visiting my website"
objEmail.Body = "Regards-Sumit Daripa"
objEmail.Priority =MailPriority.High
Dim oAttch As MailAttachment = New MailAttachment("c:\Customer.xls")
objEmail.Attachments.Add(oAttch)
SmtpMail.SmtpServer = "indiamail.mindtree.com"
Try
SmtpMail.Send(objEmail)
Response.Write("Your E-mail has been sent sucessfully.")
Catch exc As Exception
Response.Write("Sendfailure: " + exc.ToString())
End Try

Friday, September 7, 2007

Golden Rules For Career Success.

1. Business is made up of ambiguous victories and nebulous defeats. Claim them all as victories.
2. Keep track of what you do; someone is sure to ask You.Make a list of what you are going to do that particular day in the office.
3. Be comfortable around Senior managers, or learn to fake it.
4. Never bring your boss a problem without some solution.
5. You are getting paid to think, not to whine.
6. Long hours don’t mean anything; results count, and not the efforts.
7. Write down ideas; or else they will get lost, like good pens.
8. Always arrive at work 30 minutes before your boss.
9. Help other people network for jobs. You never know when your turn will come.
10. Don’t take days off sick-unless you are.
11. Assume no one will / can keep a secret.
12. Know when you do your best: - morning, night, under pressure, relaxed; schedule and prioritize your work accordingly.
13. Treat everyone who works in the organization with respect and dignity, whether it be the Cleaner or the Managing director. Don’t ever be patronizing.
14. Never appear stressed in front of a client, a customer or your boss. Take a deep breath and ask yourself - In the course of human events, how important is this?
15. If you get the entrepreneurial urge, visit someone who has his own business. It will certainly cure you.
16. Acknowledging someone else’s contribution will always repay you doubly.
17. Career planning is an oxymoron. The most exciting opportunities tend to be unplanned.
18. Always choose to do what you’ll remember ten years from now.
19. The size of your office is not as important as the size of your pay cheque.
20. Understand what finished work looks like and deliver your work only when it is finished.
21.. The person who spends all of his or her time is not hard-working; he or she is boring.
22. Know how to write business letter including “Thank You” notes as well as Proposals.
23. Never confuse a Memo with reality. Most memos from the top are political fantasy.
24. Eliminate guilt. Don’t fiddle with expenses, taxes or benefits, and don’t cheat your colleagues.
25. Reorganizations mean that someone will lose his or her job. Get on the committee that will make the recommendations.
26. Job security does not exist anywhere.
27. Always have an answer to the question “What would I do if I lost my job tomorrow?”
28. Go to the company party.
29. Don’t get drunk at the party.
30. Avoid working at weekends. Work longer during the week if you have to.
31. The most successful people in business are interesting.
32. Sometimes you’ll be on a winning streak and everything will click; take maximum advantage. When the opposite is true, hold steady and wait for it to be out.
33. Never in your life say, “It’s not my job.”
34. Be loyal to your career, your interests and yourself.
35. Understand the skills and abilities that set you apart. Use them whenever you have an opportunity.
36.People remember the end of the project. As they say in boxing, “Always finish stronger than you start.”

Using BreadCrumbs in ASP.Net.

The BreadCrumb is used to maintain the list or keep trail of the pages that one has visited along the way to the present page.
As the breadcrumb is used in the entire project ,so use it as a usercontrol.
Following steps are needed to create a BreadCrumb:-
1)Create a usercontrol and paste the following code in the .ascx.vb page:-
' This class represents a usercontrol helps to implement a breadcrump system
' Usage : Ad the user control to the page where bread crumb system to be implemented
' Add this page tro the DefaultLinks property if it not exiss there
Imports System.Text
Imports System.Collections
Imports System.Collections.Specialized
Public Class BreadCrumb
Inherits System.Web.UI.UserControl

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
Private Sub InitializeComponent()

End Sub
Protected WithEvents lblTrail As System.Web.UI.WebControls.Label

'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

'Variable holding the Link name of the page
Private _tailName As String
'Variable holding the level of the page
Private _level As Short
'The pagecrumb object of the current page
Private _pageCrumb As New BreadCrumb
'We will use a sorted list as we can use the level as key
Private _crumbList As SortedList

'Each page has a level. The page should declare its level
Public Property Level() As Short
' TO DO : We can check for some constraints here
Get
Return _level
End Get
Set(ByVal Value As Short)
_level = Value
End Set
End Property

Public Structure BreadCrumb

Private _level As Short
Private _url As String
Private _linkName As String

'//We are setting all the properties at the time of construction

Public Sub New(ByVal level As Short, ByVal url As String, ByVal linkName As String)

_level = level
_url = url
_linkName = linkName
End Sub

'//We are making all the properties as read-only.
'//We are not expecting it to change once it is set.
Public ReadOnly Property Level() As Short
Get
Return _level
End Get
End Property

Public ReadOnly Property Url() As String
Get
Return _url
End Get
End Property

Public ReadOnly Property LinkName() As String
Get
Return _linkName
End Get
End Property
End Structure


'Each page needs a meaningful name of it. Let them declare it
Public Property TailName() As String
' TO DO : We can check for some constraints here
Get
Return _tailName
End Get
Set(ByVal Value As String)
_tailName = Value
End Set
End Property

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'We are not disabling viewstate
If Not (Page.IsPostBack) Then

'Minimum level is 1
If (_level <= 0) Then
_level = 1
End If

'If no friendly name gives Untitled as default
If (_tailName = "") Then
_tailName = "Untitled"
End If

'Create a Crumb object based on the properties of this page
_pageCrumb = New BreadCrumb(_level, Request.RawUrl, _tailName)

'Check our Crumb is there in the session...if not create and add it...else get it
If Session.Item("HASH_OF_CRUMPS") Is Nothing Then
_crumbList = New SortedList
Session.Add("HASH_OF_CRUMPS", _crumbList)
Else
_crumbList = Session.Item("HASH_OF_CRUMPS")
End If

'Now modify the List of the breadcrumb
ModifyList()
' Put the breadcrumb from the session of sortlist
PutBreadCrumbs()
End If


End Sub

Private Sub ModifyList()
'Remove all Entries from the list which is higher or equal in level
'Because at a level there can be max 1 entry in the list
RemoveLowerLevelCrumbs()
'If level is 1 set the Crumb as home
If _pageCrumb.Level = 1 Then
_crumbList.Clear()
_crumbList.Add(CType(1, Short), New BreadCrumb(1, "/Home.aspx", "Home"))

Else
'If nothing in the list adds the home link first
If _crumbList.Count = 0 Then
_crumbList.Add(CType(1, Short), New BreadCrumb(1, "/Home.aspx", "Home"))
End If
'Now add the present list also no other check is required here as we have cleaned up the
'List at the start of the function
_crumbList.Add(_level, _pageCrumb)
End If
End Sub

'Function will remove all the entries from the list which is higher or equal to the
'present level
Private Sub RemoveLowerLevelCrumbs()

Dim level As Short
Dim removalList As New ArrayList(_crumbList.Count)
For Each level In _crumbList.Keys
If (level >= _level) Then
removalList.Add(level)
End If
Next
'Now remove all keys in the list
For Each level In removalList
_crumbList.Remove(level)
Next
End Sub


Private Sub PutBreadCrumbs()
Dim linkString As New StringBuilder

Dim pageCrumb As New BreadCrumb
Dim index As Integer

For index = 0 To _crumbList.Count - 2
pageCrumb = _crumbList.GetByIndex(index)
linkString.Append(String.Format("{1} ", pageCrumb.Url, pageCrumb.LinkName))
linkString.Append(" > ")
Next index
'Add the tail also
pageCrumb = _crumbList.GetByIndex(index)
linkString.Append(pageCrumb.LinkName)

lblTrail.Text = linkString.ToString()

End Sub
End Class

Now add a label which will display the pages .
So the html part of the usercontrol for the label is:-


Now use the following in the aspx pages which needs the BreadCrumb:-


The level and the tailname changes according to the page that is to be displayed.
So better prepare a sitemap first.

Hope this article will provide a help to you.

Happy Coding,
Sumit Daripa