2012-12-02 6 views
5

私の質問に対する答えはオンラインだと思うが、見つけられない。私がやろうとしているのは、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"); 

を「パラメータ」私のコンパイラのパラメータがオブジェクトであり、「Eos.txtは、」リソースがである私が書くしようとしているファイルは、あります応用。 私はプログラムのビルド時にこれがすべてのエラーをスローしませんが、私は、フォームのLoadイベントに追加し、このコードを使用して、新しくコンパイルされたプログラムでこのテキストファイル、つかむしようとすると:

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

を私が手このエラーはおおよそ: "値はnullにはできませんパラメータ名:ストリーム"私は "リソース"をプログラムの名前空間に変更しようとしましたが、他の多くの小さな調整や何も効果がありませんでした。完全に間違っているかどうかはわかりませんが、私の問題はCodeDomにあると思います。助言がありますか?

+0

エラーが発生している行が表示されますか? – FoolishSeth

+1

さて、私はそれがStreamReaderの行にあると確信しています。 – user1869878

+0

"埋め込み"タグを削除しました。埋め込みコード/システムとは無関係 – Neowizard

答えて

0

これは、リソース名が形成されるという予期せぬ現象が原因です。それにブレークポイントを設定し

string[] resourceNames = _assembly.GetManifestResourceNames(); 

、ひいてはコピーし、正しい名前の自分を思い出させる:私は私の頭の上をオフに思い出すことができないときに私が使用して1つのトリックは、一時的にこのコード行を追加することですそれをコードに追加します。

関連する問題