When adding a new item (class, control, etc) in C# it will automatically add a namespace to the file depending on the location in the project.
Is this also available for VB.NET?
The code 'Namespace DataClasses.AX' and 'End Namespace' would be generated.
Namespace DataClasses.AX
<Serializable()> _
Public Class AxInventItem
#Region " Constructors "
Sub New()
End Sub
#EndRegion
End Class
End Namespace
You dont say what version of visual studio you are using, but it is doable by default with VS2008.
Goto : C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\VisualBasic\Code\1033\Class.zip
(if this doesnt exist i will post you the contents of mine).
Inside you will find two files: Class.vb
and Class.vstemplate
Open Class.vb
(i extracted it and edited in notepad++ but anything will do).
Change it to read:
Namespace $itemfolder$
Public Class $safeitemname$
End Class
End Namespace
Shut Visual stuid (all instances)
Save and replace the one inside the zip.
Openup a command prompt (easiest is to use the visual studio command prompt), and run the following:
devenv.exe /InstallVSTemplates
Open Visual Studio again, create a blank project and add a folder to the project, and add a class inside the folder and you will have your namespace automagically added to your class file.
Edit
Class.vb:
Namespace $itemfolder$
''' <summary>
'''
''' </summary>
''' <remarks>Class Created by $username$ on $date$</remarks>
Public Class $safeitemname$
End Class
End Namespace
Class.vstemplate:
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name Package="{164B10B9-B200-11D0-8C61-00A0C91E29D5}" ID="3020" />
<Description Package="{164B10B9-B200-11D0-8C61-00A0C91E29D5}" ID="3021" />
<Icon Package="{164B10B9-B200-11D0-8C61-00A0C91E29D5}" ID="4510" />
<ProjectType>VisualBasic</ProjectType>
<SortOrder>100</SortOrder>
<DefaultName>Class.vb</DefaultName>
<NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
<TemplateID>Microsoft.VisualBasic.Code.Class</TemplateID>
<RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
</TemplateData>
<TemplateContent>
<ProjectItem ReplaceParameters="true">Class.vb</ProjectItem>
</TemplateContent>
<WizardExtension>
<Assembly>VBClassTemplateWizard, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=f12a64f29cf5aee5</Assembly>
<FullClassName>VBClassTemplates.VBClassReplacements</FullClassName>
</WizardExtension>
</VSTemplate>
This is available as part of Resharper where you can create templates to do this.
This is the standard template.
Namespace $NAMESPACE$
Public Class $CLASS$
$END$
End Class
End Namespace
And I guess you could use a T4 template to do the same thing, or adapt the one that is there. But T4 is not very open yet. AS far as I know.
Visual Studio 2012:
In the project properties in the application tab there is a field named default namespace. This is automatically added to the files inside the project.
So when you want to reference something in a different project you can import the namespace that is defined there. So there is basically no need to manipulate any template, I guess.