Bagaimana Anda default kelas baru ke publik saat membuatnya di Visual Studio?

111

Ketika saya klik kanan dalam Solusi dari proyek C # Visual Studio dan pilih Tambah ...> Kelas ... itu membuat kelas tanpa pengubah publik. Bagaimana cara mendapatkan Visual Studio (2008) sebagai default kelas kelas publik?

Orang
sumber
1
Anda perlu mengubah template kelas, seperti yang dijelaskan di sini . Ini sedikit lebih terlibat daripada hanya mengedit satu file (yang mungkin Anda harapkan) tetapi kedengarannya tidak terlalu buruk.
Jon Skeet

Jawaban:

71

Anda perlu mengubah file yang terletak di C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033.

Visual Studio 2010 (10.0) dan di bawahnya: Ada file zip di sana bernama Class.zip. Buka paket ini, edit file untuk dimasukkan ke dalam publickata kunci Anda lalu kemas ulang (pastikan Anda membuat cadangan yang asli).

Setelah ini, pastikan VS membangun kembali cache-nya (yang hanya file zip yang dibuka ke direktori C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache) dengan membuka shell perintah Visual Studio dan menjalankan perintah berikut:

devenv /installvstemplates

Visual Studio 2012 (11.0) dan yang lebih baru: Lihat jawaban dari @JochemKempe , karena jauh lebih mudah untuk mengubahnya sekarang, hanya dengan mengedit satu file (tidak ada unzip atau rezipping).

PEMBARUAN: Jangan lupa untuk membuka editor teks pilihan Anda dengan hak istimewa admin sebelum Anda melakukan pengeditan.

Mitch Denny
sumber
Terima kasih banyak. Pada Mesin Windows 7 64 bit dengan VS 2012, jalur ini ada di C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Sudhanshu Mishra
bagaimana jika Anda ingin mengubah template item antara tim di mesin yang berbeda, ada ide?
DevDave
Di VS2013, Anda harus menjalankan Developer Command Prompt untuk VS2013 sebagai Administrator, dan menjalankan perintah setelah menutup Visual Studio - tidak akan selesai saat VS terbuka.
Chris Moschini
1
Tidak perlu mengunjungi postingan blog yang dirujuk @Guy, karena postingan telah diedit untuk menyertakan informasi yang ada di sana. Jika Anda ingin mengunjungi postingan blog tersebut, sekarang telah dipindahkan ke URL baru: guyellisrocks.com/2009/03/…
ErikE
151

Di VS2012 , semudah membuka C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Classdan mengedit file Class.cs.

Tidak perlu membuka zip atau membangun kembali cache. Perubahan yang sangat positif jika Anda bertanya kepada saya.

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 (Perusahaan) :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

Usang

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

JochemKempe
sumber
2
Ini sepertinya tidak berhasil untuk saya. Saya bahkan mengganti file Class.cs di direktori ItemTemplatesCache juga. VS2012 reboot setiap kali. Apakah mungkin ada cara untuk membangun kembali cache?
hancurkan
7
Untuk VS2013 gunakan lokasi ini: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan
6
Anda mungkin perlu membuka editor teks dalam mode Admin, untuk memperbarui template kelas yang sebenarnya.
david.barkhuizen
3
Untuk VS2015 gunakan lokasi ini: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class Namun, jika Anda memiliki Xamarin diinstal, Anda mungkin juga perlu melakukan pencarian di Anda windows drive untuk "Class.cs". Saya akhirnya hanya mengubah semua hasil ke publik.
JochemKempe
2
Visual Studio 2019 keluar sekarang jadi Pratinjau harus berubah untuk menunjukkan versi. Saya hanya menginstal Professional tetapi saya kira dua lainnya adalah Community and Enterprise VS2019 Professional:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
Dave Thompson
10

Untuk membuat kelas publik secara default untuk Visual Studio 2012:

Edit file ini:

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

Agar terlihat seperti ini:

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

Berikut ini adalah skriplet PS peserta ulang yang akan memperbarui Templat Item kelas dasar C # . Jalan berubah tergantung pada versi / edisi Visual Studio yang Anda gunakan. Ini juga mencadangkan template asli jika Anda ingin mengembalikannya di masa mendatang.

$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
sumber
Jalur saya dulu ..\2017\Professional\...dan saya mengeditnya secara manual tetapi ini menunjukkan struktur folder baru untuk 2017. Terima kasih.
ste-fu
2

Selain jawaban bagus JochemKempe, berikut adalah cara melakukannya untuk template inti .NET.


.NET Core

Alih-alih mengedit template di dalam \CSharp\direktori, Anda perlu mengedit template di dalamnya \AspNetCore\.

VS2019 (Perusahaan) :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
sumber
1

Jawaban dari JochemKempe berfungsi dengan baik, tetapi agak sulit, karena Anda perlu menulis ulang file yang dilindungi Program Files.

Hanya untuk memperbarui jawabannya. Template untuk edisi Komunitas ada di dalam folder:

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

Solusi lain

Tetapi ada kemungkinan lain untuk membuat template baru. Salin file dari folder sumber ke folder template pengguna.

misalnya untuk aplikasi Formulir Windows, ini dapat menjadi salah satu folder sumber berikut (untuk Komunitas 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\

Folder templat pengguna default adalah (untuk Komunitas Visual Studio 2017) :

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

Dan folder tujuan untuk templat Aplikasi Formulir Windows baru adalah:

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

Dengan ini Anda akan memiliki dua "Aplikasi Formulir Windows" saat membuat proyek baru. Perbedaan antara keduanya hanya terletak pada nama file default. Untuk membuat perbedaan yang lebih baik dimungkinkan untuk mengubah nama template yang ditampilkan. Untuk mengubah nama template, perbarui .vstemplatefile.

Asli csWindowsApplication.vstemplateberisi baris:

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

Untuk mengubah nama, Anda perlu mengubah baris menjadi seperti ini:

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

Bagian negatif dari solusi ini adalah, Anda harus mengganti nama template baru dan menambahkan template baru ke template yang sudah ada (contoh 'salah' lama akan tetap ada dan Anda masih dapat menggunakannya dengan enggan) .

Tapi ada juga bagian yang bagus. Anda tidak perlu menjadi administrator untuk menambah atau memperbarui contoh. (Tidak perlu menulis ulang file di Program Filesfolder.)

Julo
sumber