Jak domyślnie nową klasę jako publiczną podczas tworzenia jej w programie Visual Studio?

111

Kiedy klikam prawym przyciskiem myszy rozwiązanie projektu C # Visual Studio i wybieram Dodaj ...> Klasa ... tworzy klasę bez publicznego modyfikatora. Jak uzyskać program Visual Studio (2008), aby domyślna klasa była klasą publiczną?

Chłopak
źródło
1
Musisz zmienić szablon klasy, jak opisano tutaj . Jest to nieco bardziej skomplikowane niż zwykła edycja pojedynczego pliku (czego można się spodziewać), ale nie brzmi tak źle.
Jon Skeet

Odpowiedzi:

71

Musisz zmodyfikować plik znajdujący się w C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033.

Visual Studio 2010 (10.0) i starsze : znajduje się tam plik zip o nazwie Class.zip. Rozpakuj to, edytuj plik, aby wstawić publicsłowo kluczowe, a następnie zapakuj go ponownie (upewnij się, że wykonałeś kopię zapasową oryginału).

Następnie upewnij się, że VS odbudowuje swoją pamięć podręczną (czyli tylko pliki zip rozpakowane do katalogów w C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache), otwierając powłokę poleceń programu Visual Studio i wykonując następujące polecenie:

devenv /installvstemplates

Visual Studio 2012 (11.0) i nowsze : Zobacz odpowiedź autorstwa @JochemKempe , ponieważ teraz znacznie łatwiej jest to zmienić, po prostu edytując pojedynczy plik (bez rozpakowywania lub ponownego pakowania).

AKTUALIZACJA: Nie zapomnij otworzyć preferowanego edytora tekstu z uprawnieniami administratora przed wykonaniem jakiejkolwiek edycji.

Mitch Denny
źródło
Wielkie dzięki. Na 64-bitowej maszynie z systemem Windows 7 z VS 2012 ta ścieżka znajduje się w C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Sudhanshu Mishra
co jeśli chcesz zmienić szablon przedmiotu między zespołem na różnych maszynach, jakieś pomysły?
DevDave,
W VS2013 musisz uruchomić ten wiersz polecenia dewelopera dla VS2013 jako administrator i uruchomić polecenie po zamknięciu programu Visual Studio - nie zakończy się, gdy program VS jest otwarty.
Chris Moschini
1
Nie ma potrzeby odwiedzania wpisu na blogu @Guy, do którego odwołuje się odwołanie, ponieważ post został zmieniony w celu uwzględnienia znalezionych tam informacji. Jeśli chcesz odwiedzić ten post na blogu, został on przeniesiony do nowego adresu URL: guyellisrocks.com/2009/03/…
ErikE
151

W VS2012 jest to tak proste, jak przejście do C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Classpliku Class.cs i jego edycja.

Nie ma potrzeby rozpakowywania ani odbudowywania pamięci podręcznej. Bardzo pozytywna zmiana, jeśli o mnie chodzi.

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 (profesjonalny) :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 (profesjonalny) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

Przestarzały

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

JochemKempe
źródło
2
To chyba nie działa dla mnie. Zastąpiłem nawet plik Class.cs w katalogu ItemTemplatesCache. Za każdym razem restartowano VS2012. Czy jest może sposób na odbudowanie pamięci podręcznej?
zmiażdżyć
7
W przypadku VS2013 użyj tej lokalizacji: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan
6
Aby zaktualizować rzeczywisty szablon zajęć, może być konieczne otwarcie edytora tekstu w trybie administratora.
david.barkhuizen
3
W przypadku VS2015 użyj tej lokalizacji: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class Jednak jeśli masz zainstalowaną platformę Xamarin, może być również konieczne wyszukanie dysk Windows dla "Class.cs". Skończyło się na tym, że zmieniłem wszystkie wyniki na publiczne.
JochemKempe
2
Program Visual Studio 2019 jest już dostępny, więc wersja zapoznawcza powinna się zmienić, aby wskazać wersję. Mam tylko zainstalowaną wersję Professional, ale myślę, że pozostałe dwa to Community i Enterprise VS2019 Professional:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
Dave Thompson
10

Aby domyślnie utworzyć klasę publiczną dla programu Visual Studio 2012:

Edytuj ten plik:

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

Aby wyglądać tak:

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
źródło
3

Oto skryptlet PS ponownie wchodzący, który zaktualizuje szablon elementu klasy bazowej C # . Ścieżka zmienia się w zależności od używanej wersji / wydania programu Visual Studio. Tworzy również kopie zapasowe oryginalnego szablonu na wypadek, gdybyś chciał przywrócić go w przyszłości.

$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
źródło
Moja ścieżka była ..\2017\Professional\...i edytowałem ją ręcznie, ale pokazało to nową strukturę folderów na rok 2017. Dzięki.
ste-fu
2

Oprócz świetnej odpowiedzi JochemKempe, oto jak to zrobić dla szablonów .NET core.


.NET Core

Zamiast edytować szablony w \CSharp\katalogu, musisz edytować te wewnątrz \AspNetCore\.

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

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

Justin Lessard
źródło
1

Odpowiedź od JochemKempe działa dobrze, ale jest trochę trudna, ponieważ musisz przepisać chronione pliki w formacie Program Files.

Tylko po to, aby zaktualizować odpowiedź. Szablony do edycji społecznościowej znajdują się w folderze:

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

Inne rozwiązanie

Ale jest inna możliwość tworzenia nowych szablonów. Skopiuj pliki z folderu źródłowego do folderu szablonów użytkownika.

np. dla aplikacji Windows Form może to być jeden z następujących folderów źródłowych (dla społeczności Visual Studio 2017) :

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\

Domyślny folder szablonów użytkownika to (dla społeczności programu Visual Studio 2017) :

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

Folderem docelowym dla nowego szablonu aplikacji Windows Form będzie:

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

Dzięki temu podczas tworzenia nowego projektu będziesz mieć dwie „aplikacje formularzy systemu Windows”. Różnica między tymi dwoma polega tylko na domyślnej nazwie pliku. Dla lepszego rozróżnienia istnieje możliwość zmiany wyświetlanej nazwy szablonu. Aby zmienić nazwę szablonu, zaktualizuj .vstemplateplik.

Oryginał csWindowsApplication.vstemplatezawiera wiersz:

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

Aby zmienić nazwę, musisz zmienić linię na coś takiego:

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

Wadą tego rozwiązania jest to, że musisz zmienić nazwę nowego szablonu i dodać nowy szablon do istniejących szablonów (stary „niepoprawny” przykład pozostanie i nadal będziesz mógł niechętnie go używać) .

Ale jest też dobra część. Nie musisz być administratorem, aby dodać lub zaktualizować przykład. (Nie ma potrzeby przepisywania plików w Program Filesfolderze).

Julo
źródło