Динамическая компиляция через CodeDom

204
25 февраля 2018, 22:42

Почему CodeDom Compiler не может скомпилировать файл в котором присутствует данный символ $ и подобные var?

При компиляции пишет: Неожиданный символ '$'

Подскажите может ли Roslyn компилировать с данной строкой? Или же есть какие-нибудь уловки в CodeDom для компиляции данного символа?!

Вот класс компилятора:

using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using Microsoft.CSharp;
namespace Builder
{
    internal class Compil
    {
        public static bool Compiler(string source, string saveFileName, string outVersion, string resource, string icon = null)
        {
            var compil = new CompilerParameters
            {
                GenerateExecutable = true,
                OutputAssembly = saveFileName
            };
            var options = "/optimize+ /platform:x86 /target:winexe /unsafe";
            if (icon != null)
            {
                options += $" /win32icon:\"{icon}\"";
            }
            compil.CompilerOptions = options;
            compil.ReferencedAssemblies.Add("System.dll");
            compil.ReferencedAssemblies.Add("System.Windows.Forms.dll");
            compil.EmbeddedResources.Add(resource);
            var Results = new CSharpCodeProvider(new Dictionary<string, string>
            {
                {
                    "CompilerVersion", outVersion
                }
            }).CompileAssemblyFromSource(compil, source);
            if (Results.Errors.Count > 0)
            {
                MessageBox.Show($"Имеются {Results.Errors.Count} ошибок", "Ошибка компиляции", MessageBoxButtons.OK,MessageBoxIcon.Error);
                foreach (CompilerError Err in Results.Errors)
                {
                    File.WriteAllText(path: "Error_Compiler.txt", contents: $"Ошибка: {Err.ToString()} \r\nСтрока: {Err.Line}\r\n");
                }
                return false;
            }
            else
            {
                return true;
            }
        }
    }
}
READ ALSO
Как я могу передать значение переменной в событие?

Как я могу передать значение переменной в событие?

Есть событие кликаПо нажатии на кнопку, мне необходимо проверить нажата ли кнопка с верным ответом или нет

192
Совместить похожие изображения

Совместить похожие изображения

Имеется несколько похожих изображений, точнее фотографийКаждое немного отличается от других

151
запуск javascript из крон

запуск javascript из крон

Не будет ли phantomjs конфликтовать с уже установленным веб-сервером? Мне нужно запускать js файл через cron для работыДоступ из интернета к phantomjs...

220