2012-12-02 19 views
5

Tamam, sorumun yanıtının çevrimiçi olduğunu düşünüyorum, ancak bulamıyorum. Tek yapmaya çalıştığım, CodeDom ile derlediğim programa bir metin kaynağı dosyası eklemek ve sonra bu metin dosyasına derlenmiş programda erişmek. Gömülü kaynak eklemek için aşağıdaki kodu kullandı: BuradaGömülü kaynakları ekleme ve alma codedom

 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"); 

"Parametreler" Benim derleyici parametreleri nesne ve "Eos.txt" bir kaynak olduğunu ben yazmaya çalışıyorum dosyasıdır uygulama. Bu Programa oluştururken hataları atmak değil, ben formu yük etkinliğe eklenen bu kodu kullanarak yeni derlenen programda bu metin dosyasını kapmak çalıştığınızda: Ben olsun

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

Bu hata kabaca: "Değer null olamaz Parametre adı: akış." Programın ad alanına "Kaynaklar" değiştirmeyi ve diğer pek çok ince ayarlamayı denedim ve hiçbir şey işe yaramadı. Tamamen yanlış yolda olduğumdan emin değilim, fakat sorunumun CodeDom ile olduğunu düşünüyorum. Baska öneri?

+0

Hata, hangi hattın açık olduğunu söylüyor mu? – FoolishSeth

+1

Eh, StreamReader satırında olduğundan eminim. – user1869878

+0

"Gömülü" etiketi kaldırıldı. Gömülü kod/sistemlerle ilgili değil – Neowizard

cevap

0

Bu, kaynak isimlerinin oluşturulmasının beklenmedik bir şekilde olmasından kaynaklanıyor. kopyalayıp doğru ismin kendim

string[] resourceNames = _assembly.GetManifestResourceNames(); 

üzerinde bir kesme noktası ayarlayın ve böylece hatırlatmak: Kafamın üst kapalı hatırlamıyorum kullanabileceğim bir hile, geçici kod satırını eklemektir Bu kod içine.

İlgili konular