Сообщение Re: CSharpCodeProvider - как заюзать новые фичи языка (ответ от 24.04.2019 19:02
Изменено 24.04.2019 19:10 alexzzzz
Re: CSharpCodeProvider - как заюзать новые фичи языка (ответ)
Здравствуйте, Kolesiki, Вы писали:
K>в нововышедшем FW 4.8 выНЕ МОЖЕТЕ использовать свежий компилятор!
Можно было не писать гневную простыню, а просто спросить. Современный Розлин обитает на nuget и к фреймвоку не привязан. А то что во фреймвоке лежит что-то старое, за 20 лет там много чего лежит старого, например типа ArrayList.
1. Подключаешь к проекту пакет Microsoft.CodeDom.Providers.DotNetCompilerPlatform
2. Пользуешься:
K>в нововышедшем FW 4.8 вы
Можно было не писать гневную простыню, а просто спросить. Современный Розлин обитает на nuget и к фреймвоку не привязан. А то что во фреймвоке лежит что-то старое, за 20 лет там много чего лежит старого, например типа ArrayList.
1. Подключаешь к проекту пакет Microsoft.CodeDom.Providers.DotNetCompilerPlatform
2. Пользуешься:
using System;
using System.CodeDom.Compiler;
using System.Reflection;
using Microsoft.CodeDom.Providers.DotNetCompilerPlatform;
public class Program
{
private static void Main()
{
string code = "class Foo { static void Hello(string name) { System.Console.WriteLine($\"Hello, {name}!\"); } }";
var assembly = Compile(code);
var hello = (Action<string>)assembly.GetType("Foo").GetMethod("Hello", BindingFlags.Static | BindingFlags.NonPublic).CreateDelegate(typeof(Action<string>));
hello("Vasya");
}
private static Assembly Compile(string code)
{
var codeProvider = new CSharpCodeProvider();
var parameters = new CompilerParameters { GenerateInMemory = true };
var compilerResults = codeProvider.CompileAssemblyFromSource(parameters, code);
return compilerResults.CompiledAssembly;
}
}
Hello, Vasya!
Press any key to continue . . .
Re: CSharpCodeProvider - как заюзать новые фичи языка (ответ
Здравствуйте, Kolesiki, Вы писали:
K>в нововышедшем FW 4.8 выНЕ МОЖЕТЕ использовать свежий компилятор!
Можно было не писать гневную простыню, а просто спросить. Современный Розлин обитает на nuget и к фреймвоку не привязан. А то что во фреймвоке лежит что-то старое, за 20 лет там много чего лежит старого, например тип ArrayList.
1. Подключаешь к проекту пакет Microsoft.CodeDom.Providers.DotNetCompilerPlatform
2. Пользуешься:
K>в нововышедшем FW 4.8 вы
Можно было не писать гневную простыню, а просто спросить. Современный Розлин обитает на nuget и к фреймвоку не привязан. А то что во фреймвоке лежит что-то старое, за 20 лет там много чего лежит старого, например тип ArrayList.
1. Подключаешь к проекту пакет Microsoft.CodeDom.Providers.DotNetCompilerPlatform
2. Пользуешься:
using System;
using System.CodeDom.Compiler;
using System.Reflection;
using Microsoft.CodeDom.Providers.DotNetCompilerPlatform;
public class Program
{
private static void Main()
{
string code = "class Foo { static void Hello(string name) { System.Console.WriteLine($\"Hello, {name}!\"); } }";
var assembly = Compile(code);
var hello = (Action<string>)assembly.GetType("Foo").GetMethod("Hello", BindingFlags.Static | BindingFlags.NonPublic).CreateDelegate(typeof(Action<string>));
hello("Vasya");
}
private static Assembly Compile(string code)
{
var codeProvider = new CSharpCodeProvider();
var parameters = new CompilerParameters { GenerateInMemory = true };
var compilerResults = codeProvider.CompileAssemblyFromSource(parameters, code);
return compilerResults.CompiledAssembly;
}
}
Hello, Vasya!
Press any key to continue . . .