Сообщение Re[5]: Ошибка Компиляция Scripting API от 05.09.2016 8:25
Изменено 05.09.2016 11:19 Serginio1
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Sinix, Вы писали:
S>Кстати работает в .Net Core и Scripting API
S>
Но более сложные не работают
Все работает
S>Здравствуйте, Sinix, Вы писали:
S>Кстати работает в .Net Core и Scripting API
S>
S>public static void TestRoslynScript()
S> {
S> object result = Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript.EvaluateAsync("1 + 2").Result;
S> Console.WriteLine(result.ToString());
S> Console.ReadLine();
S> }
S>
Но более сложные не работают
static String ПолучитьСтрокуДелегата()
{
string returnStr = @"return (MatchEvaluator)((match) =>
{
string x = match.Value;
// If the first char is lower case...
if (char.IsLower(x[0]))
{
// Capitalize it.
return char.ToUpper(x[0]) + x.Substring(1, x.Length - 1);
}
return x;
});";
return returnStr;
}
static MatchEvaluator ПолучитьДелегат()
{
return (MatchEvaluator)((match) =>
{
string x = match.Value;
// If the first char is lower case...
if (char.IsLower(x[0]))
{
// Capitalize it.
return char.ToUpper(x[0]) + x.Substring(1, x.Length - 1);
}
return x;
});
}
public static void ТестRegex()
{
string words = "надо заменить все первые буквы в словах на заглавные";
string pattern = @"\w+";
var scr = Microsoft.CodeAnalysis.Scripting.ScriptOptions.Default;
// Добавил ссылку на mscrlib
var scr = Microsoft.CodeAnalysis.Scripting.ScriptOptions.Default;
var mscrlib = Assembly.Load(System.Runtime.Loader.AssemblyLoadContext.GetAssemblyName(@"c:\Users\Smirnov_SA\.nuget\packages\Microsoft.NETCore.Portable.Compatibility\1.0.0\ref\netcore50\mscorlib.dll"));
scr =scr.WithReferences(mscrlib,typeof(MulticastDelegate).GetTypeInfo().Assembly, typeof(System.Runtime.CompilerServices.IStrongBox).GetTypeInfo().Assembly, typeof(MatchEvaluator).GetTypeInfo().Assembly);
scr = scr.WithImports("System", "System.Text.RegularExpressions");
var result = Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript.EvaluateAsync(ПолучитьСтрокуДелегата(), scr).Result;
MatchEvaluator evaluator = (MatchEvaluator)result;
// MatchEvaluator evaluator = ПолучитьДелегат();
Console.WriteLine(Regex.Replace(words, pattern, evaluator)); }
Все работает
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Sinix, Вы писали:
S>Кстати работает в .Net Core и Scripting API
S>
И более сложные работают
Все работает
S>Здравствуйте, Sinix, Вы писали:
S>Кстати работает в .Net Core и Scripting API
S>
S>public static void TestRoslynScript()
S> {
S> object result = Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript.EvaluateAsync("1 + 2").Result;
S> Console.WriteLine(result.ToString());
S> Console.ReadLine();
S> }
S>
И более сложные работают
static String ПолучитьСтрокуДелегата()
{
string returnStr = @"return (MatchEvaluator)((match) =>
{
string x = match.Value;
// If the first char is lower case...
if (char.IsLower(x[0]))
{
// Capitalize it.
return char.ToUpper(x[0]) + x.Substring(1, x.Length - 1);
}
return x;
});";
return returnStr;
}
static MatchEvaluator ПолучитьДелегат()
{
return (MatchEvaluator)((match) =>
{
string x = match.Value;
// If the first char is lower case...
if (char.IsLower(x[0]))
{
// Capitalize it.
return char.ToUpper(x[0]) + x.Substring(1, x.Length - 1);
}
return x;
});
}
public static void ТестRegex()
{
string words = "надо заменить все первые буквы в словах на заглавные";
string pattern = @"\w+";
var scr = Microsoft.CodeAnalysis.Scripting.ScriptOptions.Default;
// Добавил ссылку на mscrlib
var scr = Microsoft.CodeAnalysis.Scripting.ScriptOptions.Default;
var mscrlib = Assembly.Load(System.Runtime.Loader.AssemblyLoadContext.GetAssemblyName(@"c:\Users\Smirnov_SA\.nuget\packages\Microsoft.NETCore.Portable.Compatibility\1.0.0\ref\netcore50\mscorlib.dll"));
scr =scr.WithReferences(mscrlib,typeof(MulticastDelegate).GetTypeInfo().Assembly, typeof(System.Runtime.CompilerServices.IStrongBox).GetTypeInfo().Assembly, typeof(MatchEvaluator).GetTypeInfo().Assembly);
scr = scr.WithImports("System", "System.Text.RegularExpressions");
var result = Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript.EvaluateAsync(ПолучитьСтрокуДелегата(), scr).Result;
MatchEvaluator evaluator = (MatchEvaluator)result;
// MatchEvaluator evaluator = ПолучитьДелегат();
Console.WriteLine(Regex.Replace(words, pattern, evaluator)); }
Все работает