2012-12-02 26 views
5

Ok, tôi cảm thấy câu trả lời cho câu hỏi của tôi là trực tuyến, nhưng tôi không thể tìm thấy nó. Tất cả những gì tôi đang cố gắng làm là thêm một tệp tài nguyên văn bản vào chương trình tôi đang biên dịch với CodeDom và sau đó truy cập tệp văn bản đó trong chương trình đã biên dịch. Để thêm tài nguyên nhúng, tôi đã sử dụng đoạn mã sau:Thêm và truy xuất tài nguyên nhúng 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"); 

đây "Parameters" là đối tượng thông số trình biên dịch của tôi và "Eos.txt" là tập Tôi đang cố gắng để viết, mà là một nguồn lực trong ứng dụng. này không ném bất kỳ lỗi nào khi tôi xây dựng chương trình, nhưng khi tôi cố gắng để lấy tập tin văn bản này trong chương trình mới được biên soạn sử dụng mã này, mà tôi thêm vào sự kiện dưới hình thức tải:

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

tôi nhận được lỗi này gần đúng: "Giá trị không thể là null Tên tham số: luồng". Tôi đã thử thay đổi "Tài nguyên" cho không gian tên của chương trình và nhiều chỉnh sửa nhỏ khác và không có gì có hiệu quả. Tôi không chắc liệu mình có theo dõi hoàn toàn sai hay không, nhưng tôi nghĩ vấn đề của tôi là với CodeDom. Bất kỳ đề xuất?

+0

Lỗi có cho bạn biết dòng đó đang bật không? – FoolishSeth

+1

Vâng, tôi chắc chắn nó nằm trong dòng StreamReader. – user1869878

+0

Đã xóa thẻ "được nhúng". Không liên quan đến mã/hệ thống nhúng – Neowizard

Trả lời

0

Gần như chắc chắn là do cách bất ngờ mà tên tài nguyên được tạo. Một mẹo nhỏ tôi sử dụng khi tôi không thể nhớ ra khỏi đỉnh đầu của tôi, là để tạm thời thêm dòng mã này:

string[] resourceNames = _assembly.GetManifestResourceNames(); 

Đặt một breakpoint vào nó, và do đó nhắc nhở bản thân của tên chính xác, sau đó sao chép vào mã.

Các vấn đề liên quan