Як ти за умовчанням публікуєш новий клас, створюючи його у 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 відновлює кеш-пам'ять (що є лише zipfiles, розпакованими до каталогів 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
Sudhanshu Mishra

що робити, якщо ви хочете змінити шаблон елемента між командою на різних машинах, будь-які ідеї?
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 кожен раз. Чи є спосіб відновити кеш?
розчав

7
Для VS2013 використовуйте таке розташування: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan

6
Вам може знадобитися відкрити текстовий редактор у режимі адміністратора, щоб оновити фактичний шаблон класу.
david.barkhuizen

3
Для VS2015 використовуйте таке місце розташування: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class Однак, якщо у вас встановлений Xamarin, вам може знадобитися здійснити пошук у ви керуєте Windows для "Class.cs". Я закінчила лише зміну всіх результатів на загальнодоступні.
JochemKempe

2
Visual Studio 2019 не працює, тому попередній перегляд повинен змінитись, щоб вказати версію. У мене встановлено лише Професіонал, але, мабуть, інші два будуть співтовариством та підприємством 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

Ви можете або створити власний шаблон проекту, або змінити існуючий. Усі ці файли проекту керуються шаблонами, тому ви можете змінити їх та / або додати свої власні.

Перевірте ці посилання:

Марк


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

Мій шлях був, ..\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.

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

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 буде:

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

Завдяки цьому у вас буде два "додатки для форми Windows" при створенні нового проекту. Відмінність цих двох лише у назві файлу за замовчуванням. Для кращого розрізнення можна змінити відображуване ім'я шаблону. Щоб змінити назву шаблону, оновіть .vstemplateфайл.

Оригінал csWindowsApplication.vstemplateмістить рядок:

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

Щоб змінити ім'я, потрібно змінити рядок на щось подібне:

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

Негативна частина цього рішення полягає в тому, що вам потрібно перейменувати новий шаблон, і ви додасте новий шаблон до існуючих шаблонів (старий "неправильний" приклад залишиться, і ви все ще можете не бажаючи ним користуватися) .

Але є і хороша частина. Вам не потрібно бути адміністратором, щоб додати або оновити приклад. (Немає необхідності переписувати файли у Program Filesпапку.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.