विजुअल स्टूडियो में इसे बनाते समय आप एक नए वर्ग को कैसे सार्वजनिक करते हैं?


111

जब मैं C # Visual Studio प्रोजेक्ट के समाधान में राइट क्लिक करता हूँ और Add ...> Class ... का चयन करता हूँ, तो वह बिना सार्वजनिक संशोधक के एक वर्ग बनाता है। क्लास को पब्लिक क्लास में डिफॉल्ट करने के लिए मुझे विज़ुअल स्टूडियो (2008) कैसे मिलेगा?


1
आपको क्लास टेम्पलेट बदलने की आवश्यकता है, जैसा कि यहां वर्णित है । यह केवल एक फ़ाइल को संपादित करने (जो आप उम्मीद कर सकते हैं) की तुलना में थोड़ा अधिक शामिल है, लेकिन यह बहुत बुरा नहीं लगता है।
जॉन स्कीट

जवाबों:


71

आपको इसमें स्थित फ़ाइल को संशोधित करना होगा C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033

विजुअल स्टूडियो 2010 (10.0) और नीचे: वहाँ एक ज़िप फ़ाइल है जिसे Class.zip कहा जाता है। इसे अनपैक करें, फ़ाइल को अपने publicकीवर्ड में डालने के लिए संपादित करें फिर इसे फिर से पैक करें (सुनिश्चित करें कि आप मूल बैकअप लें)।

इसके बाद, C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCacheविज़ुअल स्टूडियो कमांड शेल को खोलकर वीएस कैश (जो कि सिर्फ zipfiles निर्देशिकाओं में अनज़िप्ड है ) को फिर से बनाता है और निम्न कमांड निष्पादित करें:

devenv /installvstemplates

विजुअल स्टूडियो 2012 (11.0) और ऊपर: @JochemKempe द्वारा उत्तर देखें , क्योंकि अब इसे बदलना बहुत आसान है, केवल एक फ़ाइल को संपादित करके (कोई अनजिपिंग या रीज़िपिंग) नहीं।

अद्यतन: इससे पहले कि आप कोई भी संपादन करें व्यवस्थापक विशेषाधिकार के साथ अपने पसंदीदा पाठ संपादक को खोलने के लिए मत भूलना।


आपका बहुत बहुत धन्यवाद। VS 2012 के साथ 64 बिट विंडोज 7 मशीन पर यह पथ C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSharp
सुधांशु मिश्रा

क्या होगा यदि आप अलग-अलग मशीनों, किसी भी विचार पर एक टीम के बीच आइटम टेम्पलेट को बदलना चाहते हैं?
DevDave

VS2013 में, आपको VS2013 के लिए डेवलपर कमांड प्रॉम्प्ट को प्रशासक के रूप में चलाने की आवश्यकता होगी, और विजुअल स्टूडियो को बंद करने के बाद कमांड चलाएं - यह पूरा नहीं होगा जबकि वीएस खुला है।
क्रिस मोसचिनी

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
यह मेरे लिए काम करने लगता नहीं है। मैं भी ItemTemplatesCache निर्देशिका में Class.cs फ़ाइल को बदल दिया। हर बार VS2012 को रिबूट किया गया। क्या कैश को फिर से बनाने का एक तरीका है?
क्रश

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" के लिए विंडोज़ ड्राइव करते हैं। मैंने सभी परिणामों को सार्वजनिक करने के लिए बदल दिया।
जोकेमकेपे

2
विजुअल स्टूडियो 2019 अभी बाहर है इसलिए संस्करण को इंगित करने के लिए पूर्वावलोकन को बदलना चाहिए। मेरे पास केवल व्यावसायिक स्थापित है, लेकिन मुझे लगता है कि अन्य दो सामुदायिक और एंटरप्राइज़ VS2019 व्यावसायिक होंगे:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs
डेव थॉम्पसन

10

विज़ुअल स्टूडियो 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 के लिए नया फ़ोल्डर संरचना दिखाया। धन्यवाद।
चरण-फू

2

JochemKempe महान जवाब के अलावा, यह कैसे करना है। यह .NET कोर टेम्प्लेट के लिए है।


.NET कोर

\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

एक और समाधान

लेकिन नए टेम्पलेट बनाने की एक और संभावना है। स्रोत फ़ोल्डर से उपयोगकर्ता टेम्पलेट फ़ोल्डर में फ़ाइलों की प्रतिलिपि बनाएँ।

विंडोज फॉर्म एप्लिकेशन के लिए यह इन सोर्स फोल्डर में से एक हो सकता है (विजुअल स्टूडियो 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\

डिफ़ॉल्ट उपयोगकर्ता टेम्प्लेट फ़ोल्डर है (विज़ुअल स्टूडियो 2017 समुदाय के लिए) :

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

और नए विंडोज फॉर्म एप्लीकेशन टेम्पलेट के लिए गंतव्य फ़ोल्डर होगा:

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

इसके साथ नई परियोजना बनाते समय आपके पास दो "विंडोज फॉर्म एप्लीकेशन" होंगे। इन दोनों के बीच का अंतर केवल डिफ़ॉल्ट फ़ाइल नाम में है। एक बेहतर अंतर बनाने के लिए टेम्पलेट के प्रदर्शित नाम को बदलना संभव है। टेम्प्लेट का नाम बदलने के लिए, .vstemplateफ़ाइल को अपडेट करें ।

मूल csWindowsApplication.vstemplateमें पंक्ति है:

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

नाम बदलने के लिए आपको लाइन को कुछ इस तरह बदलना होगा:

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

इस समाधान का नकारात्मक हिस्सा यह है, कि आपको अपने नए टेम्प्लेट का नाम बदलना है और आप मौजूदा टेम्प्लेट में एक नया टेम्प्लेट जोड़ते हैं (पुराना 'गलत' उदाहरण रहेगा और आप अभी भी अनिच्छा से इसका उपयोग कर सकते हैं)

लेकिन एक अच्छा हिस्सा भी है। आपको उदाहरण जोड़ने या अपडेट करने के लिए व्यवस्थापक होने की आवश्यकता नहीं है। ( Program Filesफ़ोल्डर में फ़ाइलों को फिर से लिखने की आवश्यकता नहीं है ।)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.