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の問題ではないので、うまく動作します。
バイナリファイルをテキストファイルのように読み込もうとしています。それをしないでください。ただ 'FileStream'を使用してください。アセンブリは文字列ではありません。 – Luaan
あなたが実際にやろうとしていることは何ですか? 'ModuleDefinition.ReadModule("/path/to/dll ")があなたのために十分な理由は何ですか?または、おそらく 'using(var s = File.OpenRead("/path/to/dll ")){var module = ModuleDefinition.ReadModule(s); } '? – svick
@Luaanデータベースに文字列としてDLLを格納し、後でファイルに書き込もうとせずにDLLを読み込んで解析する方法を理解する必要があります。ファイルストリームは使用できません。 –