Come si imposta come predefinita una nuova classe come pubblica quando la si crea in Visual Studio?


111

Quando faccio clic con il pulsante destro del mouse sulla soluzione di un progetto Visual Studio in C # e seleziono Aggiungi ...> Classe ... viene creata una classe senza un modificatore pubblico. Come ottengo Visual Studio (2008) per impostare come predefinito la classe su una classe pubblica?


1
È necessario modificare il modello di classe, come descritto qui . È leggermente più complicato della semplice modifica di un singolo file (che è quello che potresti aspettarti) ma non suona troppo male.
Jon Skeet

Risposte:


71

È necessario modificare il file che si trova in C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033.

Visual Studio 2010 (10.0) e versioni precedenti : è presente un file zip denominato Class.zip. Disimballalo, modifica il file per inserire la tua publicparola chiave, quindi reimballalo (assicurati di eseguire il backup dell'originale).

Dopodiché, assicurati che VS ricostruisca la sua cache (che sono solo i file zip decompressi nelle directory in C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache) aprendo una shell dei comandi di Visual Studio ed esegui il seguente comando:

devenv /installvstemplates

Visual Studio 2012 (11.0) e versioni successive: vedi la risposta di @JochemKempe , poiché ora è molto più facile cambiarlo, semplicemente modificando un singolo file (senza decompressione o ricompressione).

AGGIORNAMENTO: non dimenticare di aprire il tuo editor di testo preferito con i privilegi di amministratore prima di apportare qualsiasi modifica.


Un grande grazie. Su una macchina Windows 7 a 64 bit con VS 2012 questo percorso si trova in C: \ Programmi (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Sudhanshu Mishra

cosa succede se si desidera modificare il modello di elemento tra un team su macchine diverse, qualche idea?
DevDave

In VS2013, dovrai eseguire il Prompt dei comandi per sviluppatori per VS2013 come amministratore ed eseguire il comando dopo aver chiuso Visual Studio: non verrà completato mentre VS è aperto.
Chris Moschini

1
Non è necessario visitare il post del blog @Guy a cui si fa riferimento, poiché il post è stato modificato per includere le informazioni trovate lì. Se vuoi visitare quel post del blog, ora è stato spostato a un nuovo URL: guyellisrocks.com/2009/03/…
ErikE

151

In VS2012 è facile come C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Classaccedere e modificare il file Class.cs.

Non è necessario decomprimere o ricostruire la cache. Un cambiamento molto positivo se me lo chiedi.

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

outdated

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


2
Questo non sembra funzionare per me. Ho anche sostituito il file Class.cs nella directory ItemTemplatesCache. Riavviato VS2012 ogni volta. C'è un modo per ricostruire la cache forse?
schiacciare il

7
Per VS2013 utilizzare questo percorso: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan

6
Potrebbe essere necessario che il tuo editor di testo sia aperto in modalità amministratore, al fine di aggiornare il modello di classe effettivo.
david.barkhuizen

3
Per VS2015 utilizzare questo percorso: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class Tuttavia, se è installato Xamarin, potrebbe essere necessario eseguire una ricerca anche su si Windows guida per "Class.cs". Ho finito per modificare tutti i risultati in pubblico.
JochemKempe

2
Visual Studio 2019 è ora disponibile, quindi Anteprima dovrebbe cambiare per indicare la versione. Ho solo Professional installato ma immagino che gli altri due sarebbero Community ed Enterprise VS2019 Professional:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
Dave Thompson,

10

Per creare una classe pubblica per impostazione predefinita per Visual Studio 2012:

Modifica questo file:

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

Per assomigliare a questo:

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$
    {
    }
}


3

Ecco uno scriptlet PS rientrante che aggiornerà il modello di elemento della classe base C # . Il percorso cambia a seconda della versione / edizione di Visual Studio che usi. Esegue anche il backup del modello originale nel caso in cui si desideri ripristinare in futuro.

$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 $_
 }

Il mio percorso era ..\2017\Professional\...e l'ho modificato manualmente, ma questo mostrava la nuova struttura delle cartelle per il 2017. Grazie.
ste-fu

2

Oltre all'ottima risposta di JochemKempe, ecco come farlo per i modelli core .NET.


.NET Core

Invece di modificare i modelli all'interno della \CSharp\directory, è necessario modificare quelli all'interno \AspNetCore\.

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

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


1

La risposta di JochemKempe funziona bene, ma è un po 'difficile, poiché è necessario riscrivere i file protetti inProgram Files .

Solo per aggiornare la risposta. I modelli per l'edizione Community si trovano nella cartella:

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

Un'altra soluzione

Ma c'è un'altra possibilità per creare nuovi modelli. Copia i file dalla cartella di origine alla cartella dei modelli utente.

ad esempio per l'applicazione Windows Form può essere una di queste cartelle di origine (per la community di 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\

La cartella dei modelli utente predefinita è (per la community di Visual Studio 2017) :

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

E la cartella di destinazione per il nuovo modello di applicazione Windows Form sarebbe:

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

Con questo avrai due "Applicazioni Windows Form" quando crei un nuovo progetto. La distinzione tra questi due è solo nel nome file predefinito. Per fare una migliore distinzione è possibile cambiare il nome visualizzato del template. Per modificare il nome del modello, aggiorna il .vstemplatefile.

L'originale csWindowsApplication.vstemplatecontiene la riga:

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

Per cambiare il nome devi cambiare la linea in qualcosa di simile:

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

La parte negativa di questa soluzione è che devi rinominare il tuo nuovo modello e aggiungere un nuovo modello ai modelli esistenti (il vecchio esempio "errato" rimarrà e potrai ancora usarlo involontariamente) .

Ma c'è anche una buona parte. Non è necessario essere amministratore per aggiungere o aggiornare l'esempio. (Non è necessario riscrivere i file nella Program Filescartella.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.