Exemple #1
0
        private static void AddReferences(string sourcecode, CompilerParameters cp)
        {
            cp.ReferencedAssemblies.Add("system.dll");
            string usingPattern     = @"using\s+([\w\.]+)[\s;{]";
            string referencePattern = "/\\*\\s*<\\s*[aA][rR][eE][fF]\\s*=\\s*?\"(.+?)\"\\s*>\\s*\\*/";

            string[] assemblies;

            foreach (Match m in Regex.Matches(sourcecode, usingPattern))
            {
                if (NamespaceToAssembly.Resolve(m.Groups[1].Value, out assemblies))
                {
                    foreach (string assembly in assemblies)
                    {
                        if (!cp.ReferencedAssemblies.Contains(assembly.ToLower()))
                        {
                            cp.ReferencedAssemblies.Add(assembly.ToLower());
                        }
                    }
                }
            }

            foreach (Match m in Regex.Matches(sourcecode, referencePattern))
            {
                if (!cp.ReferencedAssemblies.Contains(m.Groups[1].Value.ToLower()))
                {
                    cp.ReferencedAssemblies.Add(m.Groups[1].Value.ToLower());
                }
            }
        }