2012-12-02 23 views
5

Ok, mam wrażenie, że odpowiedź na moje pytanie jest w trybie online, ale nie mogę go znaleźć. Wszystko, co próbuję zrobić, to dodać plik zasobów tekstowych do programu, który kompiluję przy pomocy CodeDom, a następnie uzyskać dostęp do tego pliku tekstowego w skompilowanym programie. Aby dodać osadzonego zasobu, używałem następujący kod:Dodawanie i pobieranie zasobów osadzonych kodedia

 System.Resources.ResourceWriter writer = new System.Resources.ResourceWriter("Resources.resx"); 
     writer.AddResource("EoS.txt", Form1.MasterEncoder.GetBytes(Properties.Resources.Eos)); 
     writer.Generate(); 
     writer.Close(); 
     Parameters.EmbeddedResources.Add("Resources.resx"); 

Here „Parametry” to moje parametry kompilatora sprzeciw i „Eos.txt” jest plik Próbuję napisać, który to zasób w podanie. nie rzucać żadnych błędów, kiedy zbudować program, ale gdy próbuję pobrać ten plik tekstowy w nowo skompilowany program przy użyciu tego kodu, które dodane do zdarzenia obciążenia forma:

  _assembly = Assembly.GetExecutingAssembly(); 
     _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("Resources.EoS.txt")); 
     TextFile = _textStreamReader.ReadToEnd(); 

otrzymuję ten błąd mniej więcej: "Wartość nie może być pusta Nazwa parametru: strumień." Próbowałem zmienić "Zasoby" na przestrzeń nazw programu i wiele innych drobnych poprawek i nic nie zadziałało. Nie jestem pewien, czy jestem na zupełnie niewłaściwym torze czy nie, ale myślę, że mój problem dotyczy CodeDom. Jakieś sugestie?

+0

Czy błąd informuje, w jakim wierszu się znajduje? – FoolishSeth

+1

Cóż, jestem prawie pewien, że jest w linii StreamReader. – user1869878

+0

Usunięto "osadzony" tag. Niezwiązane z osadzonym kodem/systemami – Neowizard

Odpowiedz

0

To prawie na pewno z powodu nieoczekiwanego sposobu utworzenia nazw zasobów. Jeden trick używam, kiedy nie pamiętam poza czubek mojej głowy, jest tymczasowo dodać ten wiersz kodu:

string[] resourceNames = _assembly.GetManifestResourceNames(); 

ustawić punkt przerwania na nim, a tym samym przypomnieć sobie właściwej nazwy, a następnie skopiować do kodu.