Buongiorno a tutti,
Sto cimentandomi a provare di implementare degli script in un progetto Windows form, a tale proposito e a completezza di informazioni ecco il link dal quale ho “preso ispirazione”
https://medium.com/@mike_64083/c-scripting-with-roslyn-7df86fdb2b26
Ho fatto uno script più complesso ma, per isolare il problema, l'ho ridotto al minimo come segue
private string CodiceCSharpComplesso()
{
string code = @"
MessageBox.Show(""Vediamo se funziona"");
";
return code;
}
La valutazione dello script la faccio in un metodo nel modo seguente
var codeToEval = CodiceCSharpComplesso();
var options = ScriptOptions.Default;
options = options.WithImports("System", "System.Windows.Forms");
var result = CSharpScript.EvaluateAsync(codeToEval, options);
return result;
Il mio problema è che se creo una soluzione tradizionale Windows Forms App (.NET Framework) che utilizza il NET framework 4.8 il tutto funziona regolarmente, ma se creo una soluzione Windows Form App che utilizza il NET 8.0 (Long Term Support) sembra che non trovi la classe MessageBox, mi esce il messaggio
Microsoft.CodeAnalysis.Scripting.CompilationErrorException: '(2,28): error CS0103: Il nome 'MessageBox' non esiste nel contesto corrente'
Però anche in NET 8.0 la MessageBox mi risulta nello spazio dei nomi “System.Windows.Form” quindi non capisco…
C'è qualcuno che può aiutarmi a capire?
Grazie