विज़ुअल स्टूडियो - रेक्स फ़ाइल 'आंतरिक' को 'जनता' के लिए


165

जब भी मैं वीएस में एक संसाधन फ़ाइल को संपादित करता हूं, तो यह संबंधित कोड को पुन: प्राप्त करता है और आंतरिक तक क्लास एक्सेस संशोधक सेट करता है।
हर बार जब मैं resx को संपादित करता हूं तो Ctrl-F -> ReplaceAll के लिए दर्द होता है। क्या कोई संपत्ति / सेटिंग है ताकि मैं इसे सार्वजनिक रूप से डिफ़ॉल्ट कर सकूं?

internal class MyResource {

     internal static global::System.Resources.ResourceManager ResourceManager {...}

}

मैं उन सभी की जरूरत internalहोने के लिए publicहर समय।


@jvanrhyn: क्योंकि मुझे समाधान में किसी अन्य प्रोजेक्ट से इसके संसाधन प्रबंधक तक पहुंचने की आवश्यकता है।
रॉबिन माबेन

जवाबों:


335

इसके बजाय ResXFileCodeGenerator, का उपयोग करें PublicResXFileCodeGenerator

आप इसे उस सार्वजनिक विंडो में प्रॉपर्टी विंडो में कस्टम टूल प्रॉपर्टी के रूप में सेट कर सकते हैं , जिसके लिए आप पब्लिक एक्सेस चाहते हैं।

संपादित करें : जब आप Visual Studio में रेक्स फ़ाइल खोलते हैं, तो वैकल्पिक रूप से आप Access Modifier को सार्वजनिक कर सकते हैं। प्रवेश संशोधक ड्रॉपडाउन बॉक्स फॉर्म के शीर्ष पर पाया जा सकता है।


13
(अच्छा जवाब है, लेकिन अभी कुछ नोट, यह भी हो सकता है GlobalResourceProxyGenerator, बस नहीं ResXFileCodeGeneratorहै, और नोट भी है कि "प्रवेश Modofier" ड्रॉपडाउन अक्सर अक्षम है)
मार्क Gravell

@ एटन: धन्यवाद, मेरे मामले में काम करता है। इसके अलावा, मैंने देखा कि ड्रॉप डाउन से एक्सेस मॉडिफायर को बदलते हुए इसी टूल को बदल देता है।
रॉबिन माबेन

1
@conqenator: यही कारण है कि मैंने एक ही परिणाम तक पहुंचने के वैकल्पिक तरीके के रूप में एक्सेस संशोधक ड्रॉपडाउन का उपयोग करने का प्रस्ताव दिया :)
एंटोन

2
BTW अगर एक्सेस मॉडिफ़ायर ड्रॉपडाउन अक्षम है, तो आप कस्टम टूल प्रॉपर्टी को ResXFileCodeGenerator में बदलने का प्रयास कर सकते हैं, यदि यह मान नहीं है। वीएस 2010 के एमवीसी प्रोजेक्ट में कम से कम मेरे लिए वह काम है।
मैनुअल नवारो

1
मेरे लिए विजुअल स्टूडियो 2017 के साथ PublicResXFileCodeGeneratorकेवल संसाधन वर्ग को सार्वजनिक करता है, इसके निर्माता को नहीं।
लॉरेंट मिशेल

13
  1. संसाधन फ़ाइल ( resource.resx) => गुण पर राइट क्लिक करें ।

  2. कस्टम उपकरण => में बदलेंPublicResXFileCodeGenerator


-7

शायद सबसे आसान तरीका है एक सार्वजनिक ctor के साथ एक व्युत्पन्न वर्ग बनाना?

उत्पन्न वर्ग:

 [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    internal Strings() {
    }

व्युत्पन्न वर्ग:

public class PublicStrings : Strings
{
    /// <summary>
    /// Public localization Strings.
    /// </summary>
    public PublicStrings()
    {

    }
}

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