c # - компилировать код c # во время выполнения с roslyn - PullRequest
0 голосов
/ 25 января 2019

Я проверил некоторый ресурс о roslyn, и я не нашел, как скомпилировать исходники c # в исполняемый файл с Roslyn. Я ​​могу легко скомпилировать некоторые файлы .cs в .exe, используя CodeDom:

    /// <summary>
    /// "anycpu" || "anycpu32bitpreferred" || "x86" || "x64" || "ARM" || "Itanium"
    /// </summary>
    public static string param = "anycpu";

    public static string BCS(string[] sources,string[] libs,string outPath,bool exef)
    {
        var options = new Dictionary<string, string> {
         { "CompilerVersion", "v4.0.0" }
        };
        CSharpCodeProvider codeProvider = new CSharpCodeProvider(options);
        CompilerParameters parameters = new CompilerParameters(libs);
        parameters.GenerateExecutable = exef;
        parameters.OutputAssembly = outPath;
        parameters.CompilerOptions = "-platform:" + param;
        CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, sources);

        if (results.Errors.Count > 0)
        {
            string errsText = "";
            foreach (CompilerError CompErr in results.Errors)
            {
                errsText = "("+CompErr.ErrorNumber +
                            ")Line " + CompErr.Line +
                            ",Column "+CompErr.Column +
                            ":"+CompErr.ErrorText + "" +
                            Environment.NewLine;
            }
            return errsText;
        }
        else
        {
            return "Success";
        }
    }

но проблема CodeDom - он может компилировать только c # с .NET Framework 4.0, но мне нужно скомпилировать файлы c # с 4.6.1 .NET Framework версии. Итак, вопрос: могу ли я скомпилировать некоторые файлы c # (.cs) с 4.6.1 .NET Framework версия с использованием Roslyn Compiler?

...