Comment par défaut une nouvelle classe est-elle publique lors de sa création dans Visual Studio?

111

Lorsque je clique avec le bouton droit sur la solution d'un projet C # Visual Studio et que je sélectionne Ajouter ...> Classe ..., cela crée une classe sans modificateur public. Comment obtenir Visual Studio (2008) pour que la classe par défaut soit une classe publique?

Gars
la source
1
Vous devez changer le modèle de classe, comme décrit ici . C'est un peu plus compliqué que de simplement éditer un seul fichier (ce à quoi vous pouvez vous attendre) mais cela ne sonne pas trop mal.
Jon Skeet

Réponses:

71

Vous devez modifier le fichier situé dans C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033.

Visual Studio 2010 (10.0) et versions antérieures : il y a un fichier zip appelé Class.zip. Décompressez-le, modifiez le fichier pour le mettre dans votre publicmot-clé, puis reconditionnez-le (assurez-vous de sauvegarder l'original).

Après cela, assurez-vous que VS reconstruit son cache (qui n'est que les fichiers zip décompressés dans les répertoires dans C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache) en ouvrant un shell de commande Visual Studio et exécutez la commande suivante:

devenv /installvstemplates

Visual Studio 2012 (11.0) et versions ultérieures: voyez la réponse de @JochemKempe , car il est beaucoup plus facile de changer cela maintenant, simplement en éditant un seul fichier (pas de décompression ou de rezipping).

MISE À JOUR: N'oubliez pas d'ouvrir votre éditeur de texte préféré avec des privilèges d'administrateur avant de faire toute modification.

Mitch Denny
la source
Grand merci. Sur une machine Windows 7 64 bits avec VS 2012, ce chemin se trouve dans C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Sudhanshu Mishra
Que faire si vous voulez changer le modèle d'article entre une équipe sur différentes machines, des idées?
DevDave
Dans VS2013, vous devrez exécuter cette invite de commandes de développeur pour VS2013 en tant qu'administrateur et exécuter la commande après la fermeture de Visual Studio - elle ne se terminera pas tant que VS est ouvert.
Chris Moschini
1
Pas besoin de visiter le billet de blog @Guy référencé, car l'article a été modifié pour inclure les informations qui s'y trouvent. Si vous souhaitez visiter ce billet de blog, il a maintenant été déplacé vers une nouvelle URL: guyellisrocks.com/2009/03
...
151

Dans VS2012, c'est aussi simple que d'accéder au C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Classfichier Class.cs et de le modifier.

Pas besoin de décompresser ou de reconstruire le cache. Un changement très positif si vous me demandez.

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

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

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

Dépassé

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

JochemKempe
la source
2
Cela ne semble pas fonctionner pour moi. J'ai même remplacé le fichier Class.cs dans le répertoire ItemTemplatesCache. Redémarré VS2012 à chaque fois. Existe-t-il peut-être un moyen de reconstruire le cache?
écraser le
7
Pour VS2013, utilisez cet emplacement: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan
6
Vous devrez peut-être ouvrir votre éditeur de texte en mode Admin pour mettre à jour le modèle de classe actuel.
david.barkhuizen
3
Pour VS2015, utilisez cet emplacement: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class Cependant, si Xamarin est installé, vous devrez peut-être également effectuer une recherche sur vous Windows conduisez pour "Class.cs". J'ai fini par changer tous les résultats en public.
JochemKempe
2
Visual Studio 2019 est maintenant disponible, donc Preview devrait changer pour indiquer la version. Je n'ai installé que Professional, mais je suppose que les deux autres seraient Community et Enterprise VS2019 Professional:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
Dave Thompson
10

Pour créer une classe publique par défaut pour Visual Studio 2012:

Modifiez ce fichier:

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

Pour ressembler à ceci:

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
la source
3

Voici un scriptlet PS rentrant qui mettra à jour le modèle d'élément de la classe de base C # . Le chemin change en fonction de la version / édition de Visual Studio que vous utilisez. Il sauvegarde également le modèle d'origine au cas où vous souhaiteriez revenir ultérieurement.

$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
la source
Mon chemin était ..\2017\Professional\...et je l'ai modifié manuellement, mais cela montrait la nouvelle structure de dossiers pour 2017. Merci.
ste-fu
2

En plus de la bonne réponse de JochemKempe, voici comment le faire pour les modèles de base .NET.


.NET Core

Au lieu d'éditer les modèles à l'intérieur du \CSharp\répertoire, vous devez éditer ceux qu'il contient \AspNetCore\.

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

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

Justin Lessard
la source
1

La réponse de JochemKempe fonctionne bien, mais est un peu difficile, car vous devez réécrire les fichiers protégés dans Program Files.

Seulement pour mettre à jour la réponse. Les modèles pour l'édition communautaire se trouvent dans le dossier:

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

Une autre solution

Mais il existe une autre possibilité de créer de nouveaux modèles. Copiez les fichiers du dossier source dans le dossier du modèle utilisateur.

Par exemple, pour l'application Windows Form, il peut s'agir de l'un de ces dossiers source (pour la communauté 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\

Le dossier de modèle utilisateur par défaut est (pour la communauté Visual Studio 2017) :

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

Et le dossier de destination du nouveau modèle d'application Windows Form serait:

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

Avec cela, vous aurez deux "Windows Form Application" lors de la création d'un nouveau projet. La distinction entre ces deux réside uniquement dans le nom de fichier par défaut. Pour faire une meilleure distinction, il est possible de changer le nom affiché du modèle. Pour modifier le nom du modèle, mettez à jour le .vstemplatefichier.

L'original csWindowsApplication.vstemplatecontient la ligne:

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

Pour changer le nom, vous devez changer la ligne en quelque chose comme ceci:

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

La partie négative de cette solution est que vous devez renommer votre nouveau modèle et ajouter un nouveau modèle aux modèles existants (l'ancien exemple «incorrect» restera et vous pourrez toujours l'utiliser à votre gré) .

Mais il y a aussi une bonne partie. Vous n'avez pas besoin d'être administrateur pour ajouter ou mettre à jour l'exemple. (Il n'est pas nécessaire de réécrire les fichiers dans le Program Filesdossier.)

Julo
la source