Wie wird eine neue Klasse beim Erstellen in Visual Studio standardmäßig öffentlich?

111

Wenn ich mit der rechten Maustaste in die Lösung eines C # Visual Studio-Projekts klicke und Hinzufügen ...> Klasse ... auswähle, wird eine Klasse ohne öffentlichen Modifikator erstellt. Wie bringe ich Visual Studio (2008) dazu, die Klasse standardmäßig auf eine öffentliche Klasse zu setzen?

Kerl
quelle
1
Sie müssen die Klassenvorlage wie hier beschrieben ändern . Es ist etwas komplizierter als nur das Bearbeiten einer einzelnen Datei (was Sie vielleicht erwarten), aber es klingt nicht schlecht.
Jon Skeet

Antworten:

71

Sie müssen die Datei in ändern C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033.

Visual Studio 2010 (10.0) und niedriger : Dort befindet sich eine Zip-Datei namens Class.zip. Entpacken Sie diese Datei, bearbeiten Sie die Datei, um sie in Ihr publicSchlüsselwort einzufügen, und packen Sie sie erneut (stellen Sie sicher, dass Sie das Original sichern).

Stellen Sie anschließend sicher, dass VS den Cache neu erstellt (dies sind nur die in Verzeichnisse entpackten Zip-Dateien C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache), indem Sie eine Visual Studio-Befehlsshell öffnen und den folgenden Befehl ausführen:

devenv /installvstemplates

Visual Studio 2012 (11.0) und höher : Siehe die Antwort von @JochemKempe , da es jetzt viel einfacher ist, dies zu ändern, indem Sie nur eine einzelne Datei bearbeiten (kein Entpacken oder erneutes Entpacken).

UPDATE: Vergessen Sie nicht, Ihren bevorzugten Texteditor mit Administratorrechten zu öffnen, bevor Sie Änderungen vornehmen.

Mitch Denny
quelle
Großes Dankeschön. Auf einem 64-Bit-Windows 7-Computer mit VS 2012 befindet sich dieser Pfad unter C: \ Programme (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Sudhanshu Mishra
Was ist, wenn Sie die Artikelvorlage zwischen einem Team auf verschiedenen Maschinen ändern möchten, irgendwelche Ideen?
DevDave
In VS2013 müssen Sie diese Entwickler-Eingabeaufforderung für VS2013 als Administrator ausführen und den Befehl nach dem Schließen von Visual Studio ausführen. Er wird nicht ausgeführt, solange VS geöffnet ist.
Chris Moschini
1
Es ist nicht erforderlich, den Blog-Beitrag zu besuchen, auf den @Guy verwiesen wird, da der Beitrag so bearbeitet wurde, dass er die dort gefundenen Informationen enthält. Wenn Sie diesen Blog-Beitrag besuchen möchten , wurde er jetzt auf eine neue URL verschoben
ErikE
151

In VS2012 ist es so einfach wie C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Classdas Aufrufen und Bearbeiten der Class.cs-Datei.

Der Cache muss nicht entpackt oder neu erstellt werden. Eine sehr positive Veränderung, wenn Sie mich fragen.

VS2015 :C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

VS2017 (RC) :C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

VS2017 (Professional) :C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

VS2019 (Enterprise) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

VS2019 (Professional) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

Veraltet

VS2019 (Vorschau) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

JochemKempe
quelle
2
Das scheint bei mir nicht zu funktionieren. Ich habe sogar die Class.cs-Datei im ItemTemplatesCache-Verzeichnis ersetzt. VS2012 jedes Mal neu gestartet. Gibt es eine Möglichkeit, den Cache möglicherweise neu zu erstellen?
Crush
7
Verwenden Sie für VS2013 diesen Speicherort: C: \ Programme (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan
6
Möglicherweise muss Ihr Texteditor im Admin-Modus geöffnet sein, um die eigentliche Klassenvorlage zu aktualisieren.
David.Barkhuizen
3
Verwenden Sie für VS2015 diesen Speicherort: C: \ Programme (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class Wenn Sie jedoch Xamarin installiert haben, müssen Sie möglicherweise auch eine Suche durchführen Sie Windows-Laufwerk für "Class.cs". Am Ende habe ich nur alle Ergebnisse öffentlich gemacht.
JochemKempe
2
Visual Studio 2019 ist jetzt verfügbar, daher sollte sich die Vorschau ändern, um die Version anzugeben. Ich habe nur Professional installiert, aber ich denke, die anderen beiden wären Community und Enterprise VS2019 Professional:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
Dave Thompson
10

So erstellen Sie standardmäßig eine öffentliche Klasse für Visual Studio 2012:

Bearbeiten Sie diese Datei:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

Um so auszusehen:

using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
$endif$using System.Text;
$if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks;
$endif$
namespace $rootnamespace$
{
    public class $safeitemrootname$
    {
    }
}
Aaron Hoffman
quelle
3

Hier ist eine einspringende PS scriptlet, die die C # Basisklasse aktualisiert Elementvorlage . Der Pfad ändert sich je nachdem, welche Version / Edition von Visual Studio Sie verwenden. Außerdem wird die ursprüngliche Vorlage gesichert, falls Sie in Zukunft zurückkehren möchten.

$csharpClassTemplates = @("C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs",
                          "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\1033\Class\Class.cs",
                          "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs")

$csharpClassTemplates | % {
    Write-Output("Updating template $_")
    Copy-Item $_ -Destination "$_.backup"
    (get-content $_).Replace('public ', '').Replace('class ', 'public class ') | Set-Content $_
 }
SliverNinja - MSFT
quelle
Mein Pfad war ..\2017\Professional\...und ich habe ihn manuell bearbeitet, aber dies zeigte die neue Ordnerstruktur für 2017. Danke.
Ste-Fu
2

Neben der großartigen Antwort von JochemKempe erfahren Sie hier, wie Sie dies für die .NET-Kernvorlagen tun.


.NET Core

Anstatt die Vorlagen im \CSharp\Verzeichnis zu bearbeiten, müssen Sie die Vorlagen im Verzeichnis bearbeiten \AspNetCore\.

VS2019 (Enterprise) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ItemTemplates\AspNetCore\Code\1033\Class\Class.cs

VS2019 (Professional) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\AspNetCore\Code\1033\Class\Class.cs

Justin Lessard
quelle
1

Die Antwort von JochemKempe funktioniert einwandfrei , ist jedoch etwas schwierig, da Sie geschützte Dateien neu schreiben müssen Program Files.

Nur um die Antwort zu aktualisieren. Vorlagen für die Community Edition befinden sich im Ordner:

c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ProjectTemplates

Eine andere Lösung

Es gibt jedoch noch eine andere Möglichkeit, neue Vorlagen zu erstellen. Kopieren Sie die Dateien aus dem Quellordner in den Benutzervorlagenordner.

Beispiel: Für Windows Form-Anwendungen kann es sich um einen dieser Quellordner handeln (für Visual Studio 2017 Community) :

c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ProjectTemplates\CSharp\Windows Root\Windows\1033\WindowsApplication\
c:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplates\CSharp\Windows Root\Windows\1033\WindowsApplication\
c:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplatesCache\CSharp\Windows Root\Windows\1033\WindowsApplication\

Der Standardordner für Benutzervorlagen lautet (für Visual Studio 2017 Community) :

C:\Users\<username>\Documents\Visual Studio 2017\Templates\ProjectTemplates\

Der Zielordner für die neue Windows Form-Anwendungsvorlage lautet:

C:\Users\<username>\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\Windows\1033\MyWindowsApplication\

Damit haben Sie beim Erstellen eines neuen Projekts zwei "Windows Form-Anwendungen". Die Unterscheidung zwischen diesen beiden erfolgt nur im Standarddateinamen. Zur besseren Unterscheidung kann der angezeigte Name der Vorlage geändert werden. Aktualisieren Sie die .vstemplateDatei, um den Vorlagennamen zu ändern .

Das Original csWindowsApplication.vstemplateenthält Zeile:

    <Name Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2318" />

Um den Namen zu ändern, müssen Sie die Zeile wie folgt ändern:

    <Name ID="2318">My Windows Form Application</Name>

Der negative Teil dieser Lösung besteht darin, dass Sie Ihre neue Vorlage umbenennen und vorhandenen Vorlagen eine neue Vorlage hinzufügen müssen (das alte "falsche" Beispiel bleibt erhalten und Sie können es weiterhin unfreiwillig verwenden) .

Aber es gibt auch einen guten Teil. Sie müssen kein Administrator sein, um das Beispiel hinzuzufügen oder zu aktualisieren. (Es ist nicht erforderlich, Dateien im Program FilesOrdner neu zu schreiben .)

Julo
quelle