Como você padroniza uma nova classe para pública ao criá-la no Visual Studio?

111

Quando eu clico com o botão direito na solução de um projeto C # Visual Studio e seleciono Adicionar ...> Classe ..., ele cria uma classe sem um modificador público. Como faço para que o Visual Studio (2008) padronize a classe para uma classe pública?

Cara
fonte
1
Você precisa alterar o modelo de classe, conforme descrito aqui . É um pouco mais complicado do que apenas editar um único arquivo (que é o que você pode esperar), mas não parece tão ruim.
Jon Skeet

Respostas:

71

Você precisa modificar o arquivo localizado em C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033.

Visual Studio 2010 (10.0) e abaixo: Há um arquivo zip chamado Class.zip. Descompacte-o, edite o arquivo para colocar sua publicpalavra-chave e re-empacote-o (certifique-se de fazer backup do original).

Depois disso, certifique-se de que o VS reconstrua seu cache (que são apenas os arquivos zip descompactados em diretórios C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache) abrindo um shell de comando do Visual Studio e execute o seguinte comando:

devenv /installvstemplates

Visual Studio 2012 (11.0) e superior: Veja a resposta de @JochemKempe , já que é muito mais fácil mudar isso agora, apenas editando um único arquivo (sem descompactar ou rezipar).

ATUALIZAÇÃO: Não se esqueça de abrir seu editor de texto preferido com privilégios de administrador antes de fazer qualquer edição.

Mitch Denny
fonte
Muito obrigado. Em uma máquina Windows 7 de 64 bits com VS 2012, este caminho está em C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Sudhanshu Mishra
e se você quiser mudar o modelo de item entre uma equipe em máquinas diferentes, alguma ideia?
DevDave
No VS2013, você precisará executar o Prompt de Comando do Desenvolvedor para VS2013 como Administrador e executar o comando após fechar o Visual Studio - ele não será concluído enquanto o VS estiver aberto.
Chris Moschini
1
Não há necessidade de visitar a postagem do blog @Guy referenciada, pois a postagem foi editada para incluir as informações lá encontradas. Se você quiser visitar aquela postagem do blog, ela foi movida para um novo URL: guyellisrocks.com/2009/03/…
ErikE
151

No VS2012 , é tão fácil quanto C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Classacessar e editar o arquivo Class.cs.

Não há necessidade de descompactar ou reconstruir o cache. Uma mudança muito positiva se você me perguntar.

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

Desatualizado

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

JochemKempe
fonte
2
Isso não parece estar funcionando para mim. Até substituí o arquivo Class.cs no diretório ItemTemplatesCache também. VS2012 reiniciado todas as vezes. Existe uma maneira de reconstruir o cache, talvez?
esmagamento de
7
Para VS2013, use este local: C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan
6
Você pode precisar ter seu editor de texto aberto no modo Admin, a fim de atualizar o modelo de aula real.
david.barkhuizen
3
Para VS2015, use este local: C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class No entanto, se você tiver o Xamarin instalado, também poderá precisar fazer uma pesquisa em seu windows dirige para "Class.cs". Acabei mudando todos os resultados para o público.
JochemKempe,
2
O Visual Studio 2019 foi lançado, portanto, a visualização deve mudar para indicar a versão. Só tenho o Professional instalado, mas acho que os outros dois seriam Community e 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 criar uma classe Pública por padrão para Visual Studio 2012:

Edite este arquivo:

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

Para ficar assim:

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

Aqui está um scriptlet PS reentrante que atualizará o modelo de item da classe base C # . O caminho muda dependendo de qual versão / edição do Visual Studio você usa. Ele também faz backup do modelo original no caso de você desejar reverter no 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
fonte
Meu caminho foi ..\2017\Professional\...e editei manualmente, mas isso mostrou a nova estrutura de pastas para 2017. Obrigado.
ste-fu
2

Além da ótima resposta da JochemKempe, aqui está como fazer isso para os modelos do núcleo .NET.


.NET Core

Em vez de editar os modelos dentro do \CSharp\diretório, você precisa editar os que estão dentro \AspNetCore\.

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

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

Justin Lessard
fonte
1

A resposta do JochemKempe funciona bem, mas é um pouco difícil, já que você precisa reescrever os arquivos protegidos em Program Files.

Apenas para atualizar a resposta. Os modelos para edição da comunidade estão na pasta:

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

Outra solução

Mas existe outra possibilidade de criar novos modelos. Copie os arquivos da pasta de origem para a pasta de modelo do usuário.

por exemplo, para o aplicativo Windows Form, pode ser uma dessas pastas de origem (para a Comunidade 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\

A pasta de modelo de usuário padrão é (para Visual Studio 2017 Community) :

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

E a pasta de destino para o novo modelo de aplicativo do Windows Form seria:

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

Com isso você terá dois "Windows Form Application" ao criar um novo projeto. A distinção entre esses dois está apenas no nome do arquivo padrão. Para fazer uma distinção melhor, é possível alterar o nome exibido do modelo. Para alterar o nome do modelo, atualize o .vstemplatearquivo.

O original csWindowsApplication.vstemplatecontém linha:

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

Para alterar o nome, você precisa alterar a linha para algo assim:

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

A parte negativa desta solução é que você tem que renomear seu novo modelo e adicionar um novo modelo aos modelos existentes (o antigo exemplo 'incorreto' permanecerá e você ainda pode usá-lo contra sua vontade) .

Mas também tem uma parte boa. Você não precisa ser administrador para adicionar ou atualizar o exemplo. (Não há necessidade de reescrever os arquivos na Program Filespasta.)

Julo
fonte