सवाल संसाधन फ़ाइलों को बदलना (resx) नेमस्पेस और एक्सेस संशोधक


मेरे वेबप्रोजेक्ट में मैं 4 संसाधन फ़ाइलों का उपयोग कर रहा हूं App_GlobalResources फ़ोल्डर। उनमें से एक (lang.resx) परियोजना पर आने से पहले बनाया गया है। इसमें सही नामस्थान है (WebApplication.App_GlobalResources) और उपयोग संशोधक: public

दूसरी तरफ, तीन अन्य संसाधन फाइल जो मैंने अभी बनाई हैं, उनके पास एक अलग नेमस्पेस है (Resources) तथा internal एक्सेस संशोधक, और मैं इसे विजुअल स्टूडियो से संसाधन फ़ाइल प्रपत्र पर नहीं बदल सकता क्योंकि यह अक्षम है। अगर मैं इसे सीधे डिजाइनर.cs फ़ाइल में बदलने की कोशिश करता हूं, तो फ़ाइल की अगली सहेज पर संशोधन रद्द कर दिए जाते हैं।

यह एक महत्वपूर्ण बग नहीं है लेकिन यह प्रोजेक्ट पर अन्य डेवलपर्स के लिए भ्रामक हो सकता है ताकि वे विभिन्न नामस्थान ढूंढ सकें और उन संसाधन फ़ाइलों के लिए संशोधक संशोधक एक्सेस कर सकें।


44
2017-08-26 09:08


मूल




जवाब:


मुझे पूरी तरह से यकीन नहीं है कि समस्या अभी तक कहां है, लेकिन मैं आपको बता सकता हूं कि आप कोड उत्पन्न करने के लिए उपयोग किए गए टूल को बदलकर इसे हल कर सकते हैं।

जब मैंने पालन करने की कोशिश की यह लेख, मैं भी इस समस्या पर ठोकर खाई। स्रोत फ़ाइलों को डाउनलोड करने के बाद लेखक ने सुझाव दिया, मैंने देखा कि संसाधन फ़ाइल जो पहले से मौजूद थी, "कस्टम टूल" प्रॉपर्टी में निम्न श्रेणी थी: "PublicResXFileCodeGenerator"। साथ ही, "बिल्ड एक्शन" संपत्ति "एम्बेडेड संसाधन" पर सेट की गई थी, लेकिन मुझे यकीन नहीं है कि यह समस्या का हिस्सा है या नहीं।

मैंने जो भी नई संसाधन फ़ाइल बनाई है, वह कस्टम टूल "ग्लोबल रिसोर्सप्रॉक्सिजेनरेटर" का उपयोग करती है। उपर्युक्त "PublicResXFileCodeGenerator" के साथ इसे ओवरराइट करने के बाद समस्या को हल करना प्रतीत होता है, जो भी वास्तविक समस्या हो सकती है।

मैंने यह भी देखा कि वर्तमान संसाधन फ़ाइल "2.0" प्रारूप में थी, जबकि नई फाइलें "1.3" प्रारूप में थीं। जब आप किसी XML संपादक का उपयोग कर resx फ़ाइल खोलते हैं (या दृश्य स्टूडियो से "खुले" का उपयोग करके आप इसे देख सकते हैं)।

मुझे उम्मीद है कि आप इसे इस तरह काम कर सकते हैं, हालांकि यह आदर्श नहीं है। यह विजुअल स्टूडियो 2008 और एसपी 1, या ऐसा कुछ के साथ एक स्थापना मुद्दा होने की संभावना है।

अद्यतन करें:

यह ब्लॉग प्रविष्टि मदद भी कर सकते हैं।


44
2017-09-24 07:45



बहुत उपयोगी ब्लॉग प्रविष्टि। धन्यवाद! - ongle
यह वीएस -2010 में भी होता है: प्रोजेक्ट में एक resx फ़ाइल चिपकाना + समस्या हो सकती है, यह हो सकता है कि यह .resx फ़ाइल को GlobalResourceProxyGenerator पर सेट करता है यदि आप ऐसा करते हैं। - Chris S


त्वरित उत्तर है: बस संसाधन फ़ाइल की गुणों को खोलें और बदलें Custom Tool Namespace आपको जिस नामस्थान की आवश्यकता है।
इतना ही आसान।


52
2017-09-14 13:30



वीएस2012 के लिए सरल जवाब - Jeff Paquette


या आप कस्टमटूल विशेषता (VS2010 में परीक्षण) बदल सकते हैं।

आपको बस संसाधन फ़ाइल के फ़ाइल गुणों को खोलना होगा और   "GlobalResourceProxyGenerator" से "कस्टम टूल" को बदलें   "PublicResXFileCodeGenerator", जो स्थानीय के लिए डिफ़ॉल्ट उपकरण है   संसाधन फाइलें इसके बाद आपको "बिल्ड एक्शन" को बदलना होगा   "एम्बेडेड संसाधन"। आप एक उचित कस्टम उपकरण भी असाइन करना चाहते हैं   फ़ाइल को ठीक से एक्सेस करने के लिए नेमस्पेस "संसाधन" की तरह है, लेकिन   यह जरूरी नहीं है ...

स्रोत


11
2017-07-02 07:45



देखभाल करें जो ASP.NET का उपयोग करते हैं, क्योंकि "एम्बेडेड संसाधन" के साथ प्रकाशन करते समय यह सर्वर पर प्रकाशित नहीं हो सकता है। हालांकि "कंटेंट बिल्ड करें" के रूप में "कंटेंट" ठीक काम करता है - Wagner Leonardi


रेसक्स आपके विजुअल स्टूडियो प्रोजेक्ट कॉन्फ़िगरेशन में निर्दिष्ट नेमस्पेस के आधार पर नेमस्पेस को उठाता है। सही प्रोजेक्ट रखने के लिए अपनी प्रोजेक्ट को अपडेट करें, और रेक्स को इसका उत्तराधिकारी होना चाहिए (सुनिश्चित करने के लिए नए, सुनिश्चित नहीं हैं कि मौजूदा वाले तय किए जाएंगे - उन्हें चाहिए)।


6
2017-08-26 10:06



डिफ़ॉल्ट प्रोजेक्ट नेमस्पेस अच्छा लगता है: WebApplication - Michael Pereira


संसाधन फ़ाइलें एक्सेस संशोधक में हैं .csproj;

सीधे बदल रहा है .csproj फ़ाइल को इस समस्या को हल करना चाहिए।

के लिए देखो <Generator> तत्व और इसके मान नीचे दिए गए उदाहरणों के अनुसार सेट करें:

एक संसाधन फ़ाइल के साथ internal संशोधक इस तरह दिखता है,

<ItemGroup>
 <EmbeddedResource Update="resources.resx">
  <Generator>ResXFileCodeGenerator</Generator>
  <LastGenOutput>resources.Designer.cs</LastGenOutput>
 </EmbeddedResource>
</ItemGroup>

जहां एक संसाधन फ़ाइल के साथ public संशोधक इस तरह दिखता है।

<ItemGroup>
 <EmbeddedResource Update="resources.resx">
  <Generator>PublicResXFileCodeGenerator</Generator>
  <LastGenOutput>resources.Designer.cs</LastGenOutput>
 </EmbeddedResource>
</ItemGroup>

4
2018-03-21 13:32



यदि आप अपना जवाब बढ़ाते हैं तो यह सहायक होगा, इसलिए यह भी कहता है कहा पे में .csproj एक को देखना चाहिए। जहां तक ​​मैं कह सकता हूं, यह बस एक अलग जनरेटर का उपयोग किया जाता है (PublicResXFileCodeGenerator के बजाय ResXFileCodeGenerator)। इसके लिए वीएस 'प्रॉपर्टी विंडो में भी संपादन योग्य होना चाहिए .resx परियोजना वस्तु - stakx
धन्यवाद @ स्टैकएक्स; मैंने सुझाए गए उदाहरण जोड़े - Luis Filipe