現在、私が作業しているXamarin.iOSコードエディタアプリケーションから直接C#コードを生成して実行しようとしています。すべてのコンパイル手順でRoslynを使用しますが、残念ながら、Monoでは、iOSの実行時にアセンブリを読み込むことはできません。Xamarin.iOSからランタイムで生成されたアセンブリを実行
このコードでは、通常、Attempting to JIT compile method while running with --aot-only
例外がスローされます。
var tree = CSharpSyntaxTree.ParseText(@"public Foo
{
public void Bar() { Console.WriteLine(""""foo"""");
}");
var compilation = CSharpCompilation.Create(
"Generated." + Guid.NewGuid(),
syntaxTrees: new[] { tree },
references: references,
options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
using (var ms = new MemoryStream())
{
var result = compilation.Emit(ms);
var assembly = Assembly.Load(ms); // <- Thrown here
}
私はFrank A. Kruegerが彼の素晴らしいContinuousアプリケーションのILのカスタム通訳をしたことを知っています。
同様のアプローチをとっていますが、私はC#をサポートしたいので、Roslynが出力するSemanticModel
とSyntaxTrees
から直接的に想像しています。
ロザリンのかなり巨大なコードベースについては、私の通訳の基礎を築くためにいくつかのビットがありますか?
タイプを動的に生成する可能性がない別の質問として、実行時に動的に宣言されたタイプをどのように表現できますか?
ありがとうございます!
フランクのContinuous github https://github.com/praeclarum/Continuousプロジェクトを見たことがありますか? –