2011-08-13 7 views
1

CodeDomでは、CompilerParameters.EmbeddedResourcesプロパティを使用して、埋め込みリソースを動的に作成されたファイルに追加することができます。私のプロジェクトでは、動的に作成されたファイルに埋め込みリソースとしていくつかのバイトのデータを追加しています(下記参照)。C#CodeDom最初にファイルをディスクにドロップしないで埋め込みリソースを追加します。

Byte[] bytes = new byte[] {1,2,3,4,5}; 

// Write the data to disk (I would like to avoid this step!). 
File.WriteAllBytes(@"C:\EmbeddedResource.exe", bytes); 

CompilerParameters cp; 
cp.EmbeddedResources.Add(@"C:\EmbeddedResource.exe"); 

私はメモリ内の「バイト」のデータを格納し、メモリから直接埋め込まれたリソースとして追加することができますいくつかの方法があります。

は、私はあなたがすることはできません怖い

エヴァン

答えて

0

、何かアドバイスをありがとうございます。 (TelerikのJustDecompileやレッドゲートの.NETリフレクター付き)CSharpCodeGeneratorを見ると、私は、CompilerParametersクラスの使用方法を発見した:

private string CmdArgsFromParameters(CompilerParameters options) 
{ 
    StringBuilder stringBuilder = new StringBuilder(128); 
    // ... 
    StringEnumerator stringEnumerator = options.EmbeddedResources.GetEnumerator(); 
    try 
    { 
     while (stringEnumerator.MoveNext()) 
     { 
      string str = stringEnumerator.Current; 
      stringBuilder.Append("/res:\""); 
      stringBuilder.Append(str); 
      stringBuilder.Append("\" "); 
     } 
    } 
    finally 
    { 
     IDisposable disposable2 = stringEnumerator as IDisposable; 
     if (disposable2 != null) 
     { 
      disposable2.Dispose(); 
     } 
    } 
    // ... 
    return stringBuilder.ToString(); 
} 

彼らは、C#に渡されるすべてのコマンドラインパラメータを使用して文字列を作成するために使用しますコンパイラexe(http://msdn.microsoft.com/en-us/library/6ds95cz0%28v=VS.100%29.aspx)。だから、最後に、あなたのコードは単にcsc.exeでコンパイルされていると思います。

[] '

+0

「いいえ。応答していただきありがとうございます。 –

関連する問題