<commit_before>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.CodeDom;

namespace Zyan.Communication.Scripting
{
    /// <summary>
    /// Kompiliert dynamisch C#-Quellcode zur Luafzeit.
    /// </summary>
    public static class ScriptEngine
    {
        /// <summary>
        /// Erzeugt aus C#-Quellcode eine ausführbare Assembly im Speicher.
        /// </summary>
        /// <param name="scriptCode">C#-Quellcode</param>
        /// <param name="referenceAsseblies">Array mit referenzierten Assemblynamen</param>
        /// <returns>Kompilierte Assembly</returns>
        public static Assembly CompileScriptToAssembly(string scriptCode, params string[] referenceAsseblies)
        {
            // Parameter für den Kompilierung festlegen
            CompilerParameters cp = new CompilerParameters()
            {
                GenerateExecutable=false,
                GenerateInMemory=true,                
            };            
            // Wenn zusätzliche Verweise angegeben wurden ...
            if (referenceAsseblies.Length > 0)
                // Zusätzliche Verweise anfügen
                cp.ReferencedAssemblies.AddRange(referenceAsseblies);
            else
                // Standardverweise anfügen
                cp.ReferencedAssemblies.AddRange(new string[] 
                {<commit_msg>[en] Ensure reference to System.Xml is set.<commit_after>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.CodeDom;

namespace Zyan.Communication.Scripting
{
    /// <summary>
    /// Kompiliert dynamisch C#-Quellcode zur Luafzeit.
    /// </summary>
    public static class ScriptEngine
    {
        /// <summary>
        /// Erzeugt aus C#-Quellcode eine ausführbare Assembly im Speicher.
        /// </summary>
        /// <param name="scriptCode">C#-Quellcode</param>
        /// <param name="referenceAsseblies">Array mit referenzierten Assemblynamen</param>
        /// <returns>Kompilierte Assembly</returns>
        public static Assembly CompileScriptToAssembly(string scriptCode, params string[] referenceAsseblies)
        {
            // Parameter für den Kompilierung festlegen
            CompilerParameters cp = new CompilerParameters()
            {
                GenerateExecutable=false,
                GenerateInMemory=true,                
            };            
            // Wenn zusätzliche Verweise angegeben wurden ...
            if (referenceAsseblies.Length > 0)
            {
                // Zusätzliche Verweise anfügen
                cp.ReferencedAssemblies.AddRange(referenceAsseblies);

                if ((from referenceAssembly in referenceAsseblies where referenceAssembly.Equals("System.Xml.dll",StringComparison.InvariantCultureIgnoreCase) select referenceAssembly).Count()==0)
                    cp.ReferencedAssemblies.Add("System.Xml.dll");
            }
            else
                // Standardverweise anfügen
                cp.ReferencedAssemblies.AddRange(new string[] 
                {
{'fraction_non_alphanumeric': 0.09219858156028368, 'fraction_numerical': 0.0009250693802035153, 'mean_word_length': 2.092469018112488, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7053804', 'n_tokens_mistral': 868, 'n_tokens_neox': 855, 'n_words': 184}