У меня есть приложение для Android в Xamarin Studio. Я хочу выполнить код, помещенный в текст (строка). Например, this вопрос помогите мне в приложении Visual Studio Windows. Но я не могу использовать этот ответ в Xamarin Android. Это мой пример в приложении C# Windows:Как выполнить код C# во время выполнения в Xamarin Android?
public class CodeLuncher
{
public static void LunchCSCode(string site, string typeName, string methosName)
{
try
{
var provider = CSharpCodeProvider.CreateProvider("c#");
var options = new CompilerParameters();
string text = new System.Net.WebClient().DownloadString(site);
foreach (var item in GetRefrences(text))
{
options.ReferencedAssemblies.Add(item);
}
string code = GetCode(text);
var results = provider.CompileAssemblyFromSource(options, new[] { code });
if (results.Errors.Count > 0)
{
foreach (var error in results.Errors)
{
Console.WriteLine(error);
}
}
else
{
var t = results.CompiledAssembly.GetType(typeName);
t.GetMethod(methosName).Invoke(null, null);
}
}
catch
{
}
}
static string[] GetRefrences(string text)
{
Regex regExp = new Regex("<Refrences>(.*?)</Refrences>", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);
string str = regExp.Match(text).Groups[1].Value;
List<string> retText = new List<string>();
foreach (var item in str.Trim().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
{
retText.Add(item);
}
return retText.ToArray();
}
static string GetCode(string text)
{
Regex regExp = new Regex("<CSharpCode>(.*?)</CSharpCode>", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline);
string str = regExp.Match(text).Groups[1].Value;
return str.Trim();
}
}
Как выглядит ваш код? (который вы хотите скомпилировать) – eMi
Это довольно нерегулярное требование, вы обычно можете работать без таких методов. Не могли бы вы описать, чего вы пытаетесь достичь? Может быть, есть более простой способ для вашего дела. –
благодарит друга за повтор. Я хочу проверить новую версию в своем приложении из Интернета и загрузить код C# из Интернета и показать сообщение в своем приложении Android –