示例#1
0
        protected QueryCompiler(QueryCore query, bool addReferences)
        {
            this.IsMyExtensions = query.IsMyExtensions;
            if (this.IsMyExtensions)
            {
                MyExtensions.UpdateAdditionalRefs(query);
            }
            if (GacResolver.IsEntityFrameworkAvailable)
            {
                this.References.Add("System.Data.Entity.dll");
            }
            DataContextDriver driver = query.GetDriver(true);

            if ((query.Repository != null) && (driver != null))
            {
                this.ImportedNamespaces.RemoveRange(driver.GetNamespacesToRemoveInternal(query.Repository));
                this.ImportedNamespaces.AddRange(driver.GetNamespacesToAddInternal(query.Repository));
                if (addReferences)
                {
                    this.References.AddRange(query.Repository.GetDriverAssemblies());
                }
            }
            if (addReferences)
            {
                this.References.AddRange(PluginAssembly.GetCompatibleAssemblies(query.IsMyExtensions));
            }
            this.ImportedNamespaces.AddRange(query.AdditionalNamespaces);
            if (!string.IsNullOrEmpty(query.QueryBaseClassNamespace))
            {
                this.ImportedNamespaces.Add(query.QueryBaseClassNamespace);
            }
            if (addReferences)
            {
                this.References.AddRange(query.AllFileReferences);
                foreach (string str in query.AdditionalGACReferences)
                {
                    string item = GacResolver.FindPath(str);
                    if (item != null)
                    {
                        this.References.Add(item);
                    }
                }
                this.References.AddRange(query.GetStaticSchemaSameFolderReferences());
                if (!this.IsMyExtensions)
                {
                    this.References.AddRange(MyExtensions.AdditionalRefs);
                }
            }
        }