2017-02-21 18 views
0

Cecilの文字列ベースのストリームからアセンブリをロードしようとしていますが、私はSystem.BadImageFormatExceptionを取得し続けています。Mono.Cecilでストリームから読み取ることができません

私は何をしようとしている:私も試した

return new MemoryStream(Encoding.UTF8.GetBytes(s ?? "")); 

var data = File.ReadAllText("/path/to/dll"); 
using(Stream s = StreamFromString(data)) { 
    var module = ModuleDefinition.ReadModule(s); 
} 

そしてStreamFromStringすることと定義されて

MemoryStream stream = new MemoryStream(); 
StreamWriter writer = new StreamWriter(stream); 
writer.Write(s); 
writer.Flush(); 
stream.Position = 0; 
return stream; 

使用して、最新のセシル、.NET 4.5 Windows Server 2012上。任意のアイデアですか?ありがとう:)

編集:ModuleDefinition.ReadModule("/path/to/dll")それは壊れたDLLの問題ではないので、うまく動作します。

+1

バイナリファイルをテキストファイルのように読み込もうとしています。それをしないでください。ただ 'FileStream'を使用してください。アセンブリは文字列ではありません。 – Luaan

+0

あなたが実際にやろうとしていることは何ですか? 'ModuleDefinition.ReadModule("/path/to/dll ")があなたのために十分な理由は何ですか?または、おそらく 'using(var s = File.OpenRead("/path/to/dll ")){var module = ModuleDefinition.ReadModule(s); } '? – svick

+0

@Luaanデータベースに文字列としてDLLを格納し、後でファイルに書き込もうとせずにDLLを読み込んで解析する方法を理解する必要があります。ファイルストリームは使用できません。 –

答えて

0

なぜそれがうまくいったのかわかりませんが、File.ReadAllBytesを使用してバイト配列に読み込んで、MemoryStreamに直接書き込むと、StreamWriterが解決されたようです。

関連する問題