8 Stimmen

Automatisches Hinzufügen eines Namensraums beim Hinzufügen eines neuen Elements

Beim Hinzufügen eines neuen Elements (Klasse, Steuerelement usw.) in C# wird der Datei je nach Position im Projekt automatisch ein Namespace hinzugefügt.

Ist dies auch für VB.NET verfügbar?

Der Code "Namespace DataClasses.AX" und "End Namespace" würde generiert werden.

Namespace DataClasses.AX
    <Serializable()> _
    Public Class AxInventItem

#Region " Constructors "
        Sub New()

        End Sub
#EndRegion
    End Class
End Namespace

14voto

Pondidum Punkte 11289

Sie sagen nicht, welche Version von Visual Studio Sie verwenden, aber es ist standardmäßig mit VS2008 machbar.

Gehe zu : C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\VisualBasic\Code\1033\Class.zip (falls es diese nicht gibt, werde ich Ihnen den Inhalt meiner Datei zusenden).

Darin finden Sie zwei Dateien: Class.vb y Class.vstemplate

Öffnen Sie Class.vb (ich habe es extrahiert und in Notepad++ bearbeitet, aber es geht auch anders). Ändern Sie es zu lesen:

Namespace $itemfolder$

    Public Class $safeitemname$

    End Class

End Namespace

Beenden Sie Visual stuid (alle Instanzen)

Speichern und ersetzen Sie die in der Zip-Datei enthaltene Datei.

Öffnen Sie eine Eingabeaufforderung (am einfachsten ist es, die Visual Studio-Eingabeaufforderung zu verwenden), und führen Sie Folgendes aus:

devenv.exe /InstallVSTemplates

Öffnen Sie Visual Studio erneut, erstellen Sie ein leeres Projekt, fügen Sie dem Projekt einen Ordner hinzu und fügen Sie innerhalb des Ordners eine Klasse hinzu, damit Ihr Namespace automatisch zu Ihrer Klassendatei hinzugefügt wird.

bearbeiten

Klasse.vb:

Namespace $itemfolder$

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <remarks>Class Created by $username$ on $date$</remarks>
    Public Class $safeitemname$

    End Class

End Namespace

Klasse.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>

0 Stimmen

Ich verwende VS2008. Der templete Parameter $itemfolder$ wird nicht gefunden, aber Sie haben mich in die richtige Richtung schauen lassen, ich verwende jetzt $rootnamespace$ wie C#. Nur C# fügt auch die Ordner als Teil des Namespace.

0 Stimmen

Könnten Sie den Inhalt der Dateien Class.vb und Class.vstemplate veröffentlichen?

1 Stimmen

Ich hasse es, einen Necro-Post zu verfassen, aber wenn ich mich nicht irre, füge ich hinzu Namespace $rootnamespace$ ist eine schlechte Idee, da in VB.Net der Root-Namespace automatisch zu allem hinzugefügt wird. Sie werden am Ende mit MyProjectNS.MyProjectNS.MyClass

1voto

chrissie1 Punkte 4954

Dies ist als Teil von Resharper verfügbar, wo Sie Vorlagen für diese Aufgabe erstellen können.

Dies ist die Standardvorlage.

Namespace $NAMESPACE$
    Public Class $CLASS$ 
        $END$
    End Class
End Namespace

0 Stimmen

Schade, dass ich nur die C#-Ausgabe erworben habe. Hätte nie gedacht, dass ich bei VB.NET mitmachen würde :-). Vielleicht kann ich ja upgraden. Wie funktioniert das Templating?

0 Stimmen

Die gleichen wie die C#-Dateivorlagen.

0 Stimmen

K, funktioniert sogar in VB.NET. Es ist nicht genau das, was ich suchte, aber nett als Alternative.

0voto

chrissie1 Punkte 4954

Und ich schätze, Sie könnten eine T4-Vorlage verwenden, um das Gleiche zu tun, oder die vorhandene Vorlage anpassen. Aber T4 ist noch nicht sehr offen. So weit ich weiß.

-1voto

Marcell Punkte 609

Visual Studio 2012: In den Projekteigenschaften auf der Registerkarte Anwendung gibt es ein Feld mit dem Namen Standard-Namensraum. Dieser wird automatisch zu den Dateien im Projekt hinzugefügt.

Wenn Sie also auf etwas in einem anderen Projekt verweisen wollen, können Sie den dort definierten Namespace importieren. Es besteht also im Grunde keine Notwendigkeit, eine Vorlage zu manipulieren, denke ich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X