Как вы по умолчанию делаете новый класс общедоступным при его создании в Visual Studio?

111

Когда я щелкаю правой кнопкой мыши в решении проекта C # Visual Studio и выбираю Добавить ...> Класс ... он создает класс без общедоступного модификатора. Как мне заставить Visual Studio (2008) по умолчанию использовать публичный класс?

Парень
источник
1
Вам необходимо изменить шаблон класса, как описано здесь . Это немного сложнее, чем просто редактирование одного файла (чего и следовало ожидать), но звучит не так уж плохо.
Джон Скит,

Ответы:

71

Вам необходимо изменить файл, расположенный в C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033.

Visual Studio 2010 (10.0) и ниже: там есть zip-файл с именем Class.zip. Распакуйте это, отредактируйте файл, добавив publicключевое слово, затем снова упакуйте его (убедитесь, что вы сделали резервную копию оригинала).

После этого убедитесь, что VS перестраивает свой кеш (который представляет собой просто zip-файлы, распакованные в каталоги C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache), открыв командную оболочку Visual Studio и выполнив следующую команду:

devenv /installvstemplates

Visual Studio 2012 (11.0) и выше: см. Ответ @JochemKempe , так как сейчас это намного проще изменить, просто отредактировав один файл (без разархивирования или повторного сжатия).

ОБНОВЛЕНИЕ: не забудьте открыть предпочитаемый текстовый редактор с правами администратора, прежде чем вносить какие-либо изменения.

Митч Денни
источник
Большое спасибо. На 64-битной машине Windows 7 с VS 2012 этот путь находится в C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Судханшу Мишра
что, если вы хотите изменить шаблон элемента между командой на разных машинах, есть идеи?
DevDave
В VS2013 вам нужно будет запустить эту командную строку разработчика для VS2013 от имени администратора и выполнить команду после закрытия Visual Studio - она ​​не завершится, пока VS открыт.
Крис Москини
1
Нет необходимости посещать сообщение в блоге, на которое ссылается @Guy, поскольку сообщение было отредактировано, чтобы включить найденную там информацию. Если вы хотите посетить это сообщение в блоге, оно теперь переместилось на новый URL: guyellisrocks.com/2009/03/…
ErikE
151

В VS2012 это так же просто, как перейти к C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Classфайлу Class.cs и отредактировать его.

Не нужно распаковывать или восстанавливать кеш. Очень положительное изменение, если вы спросите меня.

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 (профессиональный) :C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

VS2019 (Предприятие) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

VS2019 (профессиональный) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

Устаревший

VS2019 (предварительная версия) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

ЙохемКемпе
источник
2
Похоже, у меня это не работает. Я даже заменил файл Class.cs в каталоге ItemTemplatesCache. Каждый раз перезагружал VS2012. Может быть, есть способ восстановить кеш?
Crush
7
Для VS2013 используйте это расположение: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Зар Шардан
6
Возможно, вам потребуется открыть текстовый редактор в режиме администратора, чтобы обновить фактический шаблон класса.
david.barkhuizen
3
Для VS2015 используйте это расположение: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class Однако, если у вас установлен Xamarin, вам также может потребоваться выполнить поиск по вы виндовс гоните за "Class.cs". В итоге я просто изменил все результаты на публичные.
JochemKempe
2
Visual Studio 2019 сейчас отсутствует, поэтому предварительный просмотр должен измениться, чтобы указать версию. У меня установлен только Professional, но я предполагаю, что двумя другими будут Community и Enterprise VS2019 Professional:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
Дэйв Томпсон,
10

Чтобы создать общедоступный класс по умолчанию для Visual Studio 2012:

Отредактируйте этот файл:

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

Чтобы выглядеть так:

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

Вы можете создать свой собственный шаблон проекта или изменить существующий. Все эти файлы проекта основаны на шаблонах, поэтому вы можете изменять их и / или добавлять свои собственные.

Ознакомьтесь с этими ссылками:

Марк

marc_s
источник
3

Вот повторный скриптлет PS, который обновит шаблон элемента базового класса C # . Путь меняется в зависимости от того, какую версию / выпуск Visual Studio вы используете. Он также создает резервную копию исходного шаблона на случай, если вы захотите вернуться к нему в будущем.

$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
источник
Мой путь был, ..\2017\Professional\...и я отредактировал его вручную, но он показал новую структуру папок на 2017 год. Спасибо.
ste-fu
2

В дополнение к отличному ответу JochemKempe, вот как это сделать для основных шаблонов .NET.


.NET Core

Вместо того, чтобы редактировать шаблоны внутри \CSharp\каталога, вам нужно редактировать те, что находятся внутри \AspNetCore\.

VS2019 (Предприятие) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\ItemTemplates\AspNetCore\Code\1033\Class\Class.cs

VS2019 (профессиональный) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\AspNetCore\Code\1033\Class\Class.cs

Джастин Лессард
источник
1

Ответ от JochemKempe работает нормально, но немного сложно, так как вам нужно перезаписать защищенные файлы в формате Program Files.

Только для обновления ответа. Шаблоны для редакции Community находятся в папке:

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

Другое решение

Но есть еще одна возможность создавать новые шаблоны. Скопируйте файлы из исходной папки в папку пользовательского шаблона.

например, для приложения Windows Form это может быть одна из следующих исходных папок (для сообщества 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\

Папка пользовательского шаблона по умолчанию (для сообщества Visual Studio 2017) :

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

И папка назначения для нового шаблона приложения Windows Form будет:

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

При этом у вас будет два «Приложения Windows Form» при создании нового проекта. Разница между ними только в имени файла по умолчанию. Чтобы лучше различать, можно изменить отображаемое имя шаблона. Чтобы изменить имя шаблона, обновите .vstemplateфайл.

В оригинале csWindowsApplication.vstemplateесть строчка:

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

Чтобы изменить имя, вам нужно изменить строку на что-то вроде этого:

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

Отрицательная часть этого решения заключается в том, что вам нужно переименовать свой новый шаблон и добавить новый шаблон к существующим шаблонам (старый «неправильный» пример останется, и вы все равно можете его неохотно использовать) .

Но есть и хорошая сторона. Вам не нужно быть администратором, чтобы добавить или обновить пример. (Нет необходимости перезаписывать файлы в Program Filesпапке.)

Julo
источник