2011-09-12 7 views
9

यहाँ VS2010 परियोजना (विंडोज फोन) संरचना का कार्य-संबंधी हिस्सा है:Application.GetResourceStream एक सामग्री संसाधन पर बुलाया अभी भी वापसी अशक्त

enter image description here

कोड DummyMediaLibProvider.cs से क्रियान्वित किया जा रहा है:

public class DummyMediaLibProvider: IMediaLibProvider 
{ 
    ... 
    StreamResourceInfo albumArtPlaceholder = 
     Application.GetResourceStream(
      new Uri("../Images/artwork.placeholder.png", UriKind.Relative)); 

artwork.placeholder.pngबिल्ड कार्रवाईसामग्री को तैयार है।

फिर भी, जब भी मैं कोड चलाता हूं, Application.GetResourceStream शून्य देता है।

संसाधन को स्मृति में पढ़ने के लिए क्या कारण हो सकता है?

मैंने परियोजना की ओबीजे निर्देशिका को हटाने का प्रयास किया है, स्वच्छ और पुनर्निर्माण किया है, लेकिन अभी तक कुछ भी मदद नहीं की है।

अद्यतन:

अगर मैं कार्रवाई का निर्माण लागू करें: संसाधन artwork.placeholder.png, मैं हालांकि संसाधन धारा ठीक हो सकता है।

पीएस यह Application.GetContentStream returns null for content Uri का डुप्लिकेट नहीं है क्योंकि आखिरी विस्तार (particurarly .xml) संबंधित समस्या थी।

उत्तर

19

Application.GetResourceStream प्रदान किया गया पथ कक्षा की स्थिति से संबंधित नहीं है, लेकिन एप्लिकेशन पैकेज के सापेक्ष नहीं है।

StreamResourceInfo albumArtPlaceholder = 
    Application.GetResourceStream(
     new Uri("Images/artwork.placeholder.png", UriKind.Relative)); 

सही पथ होगा। आप एक पूर्ण पैक यूआरआई के साथ भी कोशिश कर सकते हैं। (see MSDN)

और अंत में, Resource इस के लिए सही Build Action होगा।

+6

आरंभिक '/' को छोड़ना मेरे लिए क्या था। मैंने 'संसाधन' की बजाय 'सामग्री' पर भी सेट किया है (फाइलों को सत्यापित करने के लिए बिल्ड के बाद 7-ज़िप के साथ एक्सप की जांच कर रहा है)। –

+0

जब तक मुझे पता चला कि मेरे लिए क्या समस्या है, तब तक मुझे लगभग एक घंटे का नुकसान हुआ: जहां आप बिल्ड एक्शन सेट करते हैं, आपको यह भी सुनिश्चित करना होगा कि "आउटपुट निर्देशिका में कॉपी करें" विकल्प सक्षम है। –

संबंधित मुद्दे