¿Cómo establece una nueva clase como pública al crearla en Visual Studio?

111

Cuando hago clic derecho en la Solución de un proyecto C # Visual Studio y selecciono Agregar ...> Clase ... crea una clase sin un modificador público. ¿Cómo consigo que Visual Studio (2008) cambie la clase por defecto a una clase pública?

Chico
fuente
1
Necesita cambiar la plantilla de la clase, como se describe aquí . Es un poco más complicado que simplemente editar un solo archivo (que es lo que cabría esperar), pero no suena tan mal.
Jon Skeet

Respuestas:

71

Necesita modificar el archivo ubicado en C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033.

Visual Studio 2010 (10.0) y versiones inferiores: hay un archivo zip llamado Class.zip. Desempaquete esto, edite el archivo para poner su publicpalabra clave y luego vuelva a empaquetarlo (asegúrese de hacer una copia de seguridad del original).

Después de esto, asegúrese de que VS reconstruya su caché (que son solo los archivos zip descomprimidos en los directorios C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache) abriendo un shell de comandos de Visual Studio y ejecutando el siguiente comando:

devenv /installvstemplates

Visual Studio 2012 (11.0) y versiones posteriores: vea la respuesta de @JochemKempe , ya que es mucho más fácil cambiar esto ahora, simplemente editando un solo archivo (sin descomprimir ni volver a comprimir).

ACTUALIZAR: No olvide abrir su editor de texto preferido con privilegios de administrador antes de realizar cualquier edición.

Mitch Denny
fuente
Muchas gracias. En una máquina con Windows 7 de 64 bits con VS 2012, esta ruta está en C: \ Archivos de programa (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Sudhanshu Mishra
¿Qué pasa si desea cambiar la plantilla de elementos entre un equipo en diferentes máquinas, alguna idea?
DevDave
En VS2013, deberá ejecutar ese símbolo del sistema de desarrollador para VS2013 como administrador y ejecutar el comando después de cerrar Visual Studio; no se completará mientras VS esté abierto.
Chris Moschini
1
No es necesario visitar la publicación del blog a la que se hace referencia @Guy, ya que la publicación ha sido editada para incluir la información que se encuentra allí. Si desea visitar esa publicación de blog, ahora se ha movido a una nueva URL: guyellisrocks.com/2009/03/…
ErikE
151

En VS2012 es tan fácil como ir aC:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class acceder y editar el archivo Class.cs.

No es necesario descomprimir o reconstruir la caché. Un cambio muy positivo si me preguntas.

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

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

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

Anticuado

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

JochemKempe
fuente
2
Esto no parece funcionar para mí. Incluso reemplacé el archivo Class.cs en el directorio ItemTemplatesCache también. Reiniciado VS2012 cada vez. ¿Hay alguna manera de reconstruir la caché?
aplastar el
7
Para VS2013, utilice esta ubicación: C: \ Archivos de programa (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan
6
Es posible que deba tener su editor de texto abierto en modo de administrador para actualizar la plantilla de clase real.
david.barkhuizen
3
Para VS2015 use esta ubicación: C: \ Archivos de programa (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class Sin embargo, si tiene Xamarin instalado, es posible que también deba hacer una búsqueda en Windows conduce para "Class.cs". Terminé cambiando todos los resultados a públicos.
JochemKempe
2
Visual Studio 2019 ya está disponible, por lo que la Vista previa debería cambiar para indicar la versión. Solo tengo instalado Professional, pero supongo que los otros dos serían Community y Enterprise VS2019 Professional:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
Dave Thompson
10

Para crear una clase pública de forma predeterminada para Visual Studio 2012:

Edite este archivo:

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

Para verse así:

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
fuente
3

Aquí hay un scriptlet de PS reentrante que actualizará la plantilla de elemento de la clase base C # . La ruta cambia según la versión / edición de Visual Studio que use. También hace una copia de seguridad de la plantilla original en caso de que desee revertirla en el 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 $_
 }
SliverNinja - MSFT
fuente
Mi ruta fue ..\2017\Professional\...y la edité manualmente, pero esto mostró la nueva estructura de carpetas para 2017. Gracias.
ste-fu
2

Además de la gran respuesta de JochemKempe, aquí se explica cómo hacerlo para las plantillas principales de .NET.


.NET Core

En lugar de editar las plantillas dentro del \CSharp\directorio, debe editar las que están dentro \AspNetCore\.

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

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

Justin Lessard
fuente
1

La respuesta de JochemKempe funciona bien, pero es un poco difícil, ya que necesita reescribir archivos protegidos en formato Program Files.

Solo para actualizar la respuesta. Las plantillas para la edición comunitaria se encuentran en la carpeta:

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

Otra solución

Pero existe otra posibilidad de crear nuevas plantillas. Copie los archivos de la carpeta de origen a la carpeta de plantillas de usuario.

Por ejemplo, para la aplicación Windows Form, puede ser una de estas carpetas de origen (para la comunidad de 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 carpeta de plantilla de usuario predeterminada es (para la comunidad de Visual Studio 2017) :

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

Y la carpeta de destino para la nueva plantilla de aplicación de Windows Form sería:

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

Con esto tendrá dos "Aplicación de Windows Form" al crear un nuevo proyecto. La distinción entre estos dos está solo en el nombre de archivo predeterminado. Para hacer una mejor distinción, es posible cambiar el nombre mostrado de la plantilla. Para cambiar el nombre de la plantilla, actualice el.vstemplate archivo.

El original csWindowsApplication.vstemplatecontiene la línea:

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

Para cambiar el nombre, debe cambiar la línea a algo como esto:

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

La parte negativa de esta solución es que debe cambiar el nombre de su nueva plantilla y agregar una nueva plantilla a las plantillas existentes (el antiguo ejemplo 'incorrecto' permanecerá y aún puede usarlo sin querer) .

Pero también hay una buena parte. No es necesario ser administrador para agregar o actualizar el ejemplo. (No es necesario volver a escribir los archivos en la Program Filescarpeta).

Julo
fuente