2015-05-09 9 views
5

Da molti esempi di compilazione di un Roslyn SyntaxTree, ho visto come ad esempio:Emit per DynamicAssembly con il codice di Roslyn RC

[... create tree and compilation ...] 
var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("foo"), AssemblyBuilderAccess.RunAndCollect); 
var module = assembly.DefineDynamicModule("foo"); 

var result = compilation.Emit(module); 

Ma quando provo a fare questo nella corrente Roslyn rilasciato con Visual Studio 2015 RC, Non vedo Emit() che accetta un modulo. Devo scrivere su un flusso e caricarlo in un normale AppDomain -locked Assembly.

ho poi vedere questa risposta da Tomas Matousek: https://stackoverflow.com/a/22977158

dove dice che questo è stato rimosso perché era "problematico".

Ho difficoltà a trovare altre informazioni su questo su Internet. Qualcuno sa se:

  • C'è un altro modo in Roslyn per compilare in un assembly che può essere garbage collection?
  • O questo sarà supportato nella versione finale di VS/Roslyn?
  • Dove dovrei dirigere questa domanda se nessuno lo sa (ha avuto problemi a trovare un forum ufficiale di Roslyn attivo)?
+2

Il sito ufficiale di Roslyn attivo [è su github] (https://github.com/dotnet/roslyn). Se vuoi iniziare una discussione su qualcosa, crea un problema. – svick

+1

Roslyn non è possibile finché il CLR non supporta gli assembly da collezione. Puoi votare per loro qui: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6120992-support-for-collectible-assemblies Su GitHub: https://github.com/dotnet/CoreCLR/temi/552 – JoshVarty

risposta

0

Come hanno detto svick e JoshVarty nei commenti, questo non è attualmente possibile. Ho anche creato un problema (https://github.com/dotnet/roslyn/issues/2621) per questo che potrebbe o non potrebbe finire con alcune ulteriori informazioni dal team di Microsoft.