Làm cách nào để bạn mặc định một lớp mới là công khai khi tạo nó trong Visual Studio?


111

Khi tôi nhấp chuột phải vào Giải pháp của dự án C # Visual Studio và chọn Thêm ...> Lớp ... nó sẽ tạo một lớp mà không có công cụ sửa đổi công khai. Làm cách nào để lấy Visual Studio (2008) mặc định lớp thành lớp công khai?


1
Bạn cần thay đổi mẫu lớp, như được mô tả ở đây . Nó liên quan nhiều hơn một chút so với việc chỉ chỉnh sửa một tệp duy nhất (đó là những gì bạn có thể mong đợi) nhưng nó không có vẻ quá tệ.
Jon Skeet,

Câu trả lời:


71

Bạn cần sửa đổi tệp nằm trong C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033.

Visual Studio 2010 (10.0) trở xuống: Có một tệp zip trong đó có tên là Class.zip. Giải nén tệp này, chỉnh sửa tệp để đưa vào publictừ khóa của bạn sau đó đóng gói lại (đảm bảo bạn sao lưu bản gốc).

Sau đó, hãy đảm bảo VS xây dựng lại bộ nhớ cache của nó (chỉ là các tệp zip được giải nén vào các thư mục trong C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache) bằng cách mở trình bao lệnh Visual Studio và thực hiện lệnh sau:

devenv /installvstemplates

Visual Studio 2012 (11.0) trở lên: Xem câu trả lời của @JochemKempe , vì giờ đây, việc thay đổi điều này dễ dàng hơn nhiều, chỉ bằng cách chỉnh sửa một tệp duy nhất (không cần giải nén hoặc giải nén).

CẬP NHẬT: Đừng quên mở trình soạn thảo văn bản ưa thích của bạn với các đặc quyền của quản trị viên trước khi bạn thực hiện bất kỳ chỉnh sửa nào.


Cảm ơn bạn rất nhiều. Trên 64 bit Windows 7 máy với VS 2012 con đường này là C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
Sudhanshu Mishra

Điều gì sẽ xảy ra nếu bạn muốn thay đổi mẫu vật phẩm giữa một nhóm trên các máy khác nhau, bất kỳ ý tưởng nào?
DevDave,

Trong VS2013, bạn sẽ cần chạy Dấu nhắc lệnh dành cho nhà phát triển cho VS2013 với tư cách Quản trị viên và chạy lệnh sau khi đóng Visual Studio - nó sẽ không hoàn tất khi VS đang mở.
Chris Moschini

1
Không cần phải truy cập bài đăng trên blog mà @Guy tham khảo, vì bài đăng đã được chỉnh sửa để bao gồm thông tin được tìm thấy ở đó. Nếu bạn muốn đến thăm rằng bài đăng blog, bây giờ nó đã chuyển đến một URL mới: guyellisrocks.com/2009/03/...
ErikE

151

Trong VS2012 , việc truy cập C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Classvà chỉnh sửa tệp Class.cs dễ dàng như vậy.

Không cần giải nén hoặc xây dựng lại bộ nhớ cache. Một sự thay đổi rất tích cực nếu bạn hỏi tôi.

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

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

VS2019 (Chuyên nghiệp) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs

Lỗi thời

VS2019 (Xem trước) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs


2
Điều này dường như không hiệu quả với tôi. Tôi thậm chí còn thay thế tệp Class.cs trong thư mục ItemTemplatesCache. Khởi động lại VS2012 mỗi lần. Có cách nào để xây dựng lại bộ nhớ cache không?
nghiền nát

7
Đối với VS2013, hãy sử dụng vị trí này: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class
Zar Shardan

6
Bạn có thể cần mở trình soạn thảo văn bản của mình ở chế độ Quản trị để cập nhật mẫu lớp thực tế.
david.barkhuizen

3
Đối với VS2015, hãy sử dụng vị trí này: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033 \ Class Tuy nhiên, nếu bạn đã cài đặt Xamarin, bạn cũng có thể cần thực hiện tìm kiếm trên cửa sổ bạn lái cho "Class.cs". Cuối cùng tôi chỉ thay đổi tất cả các kết quả thành công khai.
JochemKempe

2
Visual Studio 2019 hiện đã ra mắt vì vậy Bản xem trước sẽ thay đổi để chỉ ra phiên bản. Tôi chỉ cài đặt Professional nhưng tôi đoán hai cái còn lại sẽ là Community và Enterprise VS2019 Professional:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
Dave Thompson

10

Để tạo một lớp Công khai theo mặc định cho Visual Studio 2012:

Chỉnh sửa tệp này:

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

Để trông như thế này:

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

Đây là một tập lệnh PS tái nhập sẽ cập nhật Mẫu mục lớp cơ sở C # . Đường dẫn thay đổi tùy thuộc vào phiên bản / phiên bản Visual Studio bạn sử dụng. Nó cũng sao lưu mẫu ban đầu trong trường hợp bạn muốn hoàn nguyên trong tương lai.

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

Đường dẫn của tôi là ..\2017\Professional\...và tôi đã chỉnh sửa nó theo cách thủ công nhưng điều này cho thấy cấu trúc thư mục mới cho năm 2017. Cảm ơn.
ste-fu,

2

Ngoài câu trả lời tuyệt vời của JochemKempe, đây là cách thực hiện điều đó cho các mẫu lõi .NET.


.NET Core

Thay vì chỉnh sửa các mẫu bên trong \CSharp\thư mục, bạn cần chỉnh sửa các mẫu bên trong \AspNetCore\.

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

VS2019 (Chuyên nghiệp) :C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\AspNetCore\Code\1033\Class\Class.cs


1

Câu trả lời từ JochemKempe hoạt động tốt, nhưng hơi khó, vì bạn cần phải viết lại các tệp được bảo vệ trong Program Files.

Chỉ để cập nhật câu trả lời. Các mẫu cho phiên bản Cộng đồng có trong thư mục:

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

Giải pháp khác

Nhưng có một khả năng khác để tạo các mẫu mới. Sao chép các tệp từ thư mục nguồn vào thư mục mẫu người dùng.

ví dụ: đối với ứng dụng Windows Form, nó có thể là một trong các thư mục nguồn này (đối với Visual Studio 2017 Community) :

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\

Thư mục mẫu người dùng mặc định là (dành cho Cộng đồng Visual Studio 2017) :

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

Và thư mục đích cho mẫu Ứng dụng Windows Form mới sẽ là:

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

Với điều này, bạn sẽ có hai "Windows Form Application" khi tạo dự án mới. Sự khác biệt giữa hai tệp này chỉ nằm ở tên tệp mặc định. Để phân biệt rõ hơn, có thể thay đổi tên hiển thị của mẫu. Để thay đổi tên mẫu, hãy cập nhật .vstemplatetệp.

Bản gốc csWindowsApplication.vstemplatechứa dòng:

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

Để thay đổi tên, bạn cần thay đổi dòng thành như thế này:

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

Phần tiêu cực của giải pháp này là bạn phải đổi tên mẫu mới của mình và thêm mẫu mới vào các mẫu hiện có (ví dụ cũ 'không chính xác' sẽ vẫn còn và bạn vẫn có thể không muốn sử dụng nó) .

Nhưng cũng có một phần tốt. Bạn không cần phải là quản trị viên để thêm hoặc cập nhật ví dụ. (Không cần phải viết lại các tệp trong Program Filesthư mục.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.