Beispiel #1
0
        public void ReleaseReferenceAssemblyContext(ReferenceAssemblyContext referenceAssemblyContext)
        {
            int num;

            if (referenceAssemblyContext != null && this.referenceAssemblyContextTable.TryGetValue(referenceAssemblyContext, out num))
            {
                this.referenceAssemblyContextTable[referenceAssemblyContext] = num - 1;
                if (this.referenceAssemblyContextTable[referenceAssemblyContext] == 0 && referenceAssemblyContext.ReferenceAssemblyMode != ReferenceAssemblyMode.TargetFramework)
                {
                    referenceAssemblyContext.Dispose();
                    this.referenceAssemblyContextTable.Remove(referenceAssemblyContext);
                }
            }
        }
Beispiel #2
0
        public ReferenceAssemblyContext CreateReferenceAssemblyContext(IProject project)
        {
            ReferenceAssemblyContext referenceAssemblyContext;
            ReferenceAssemblyContext referenceAssemblyContext1;
            ProjectType projectType = project.ProjectType as ProjectType;

            if (projectType != null)
            {
                ReferenceAssemblyMode referenceAssemblyMode = projectType.GetReferenceAssemblyMode(project);
                if (referenceAssemblyMode != ReferenceAssemblyMode.None)
                {
                    if (referenceAssemblyMode == ReferenceAssemblyMode.TargetFramework)
                    {
                        using (IEnumerator <ReferenceAssemblyContext> enumerator = this.referenceAssemblyContextTable.Keys.GetEnumerator())
                        {
                            while (enumerator.MoveNext())
                            {
                                ReferenceAssemblyContext current = enumerator.Current;
                                if (current.ReferenceAssemblyMode != ReferenceAssemblyMode.TargetFramework || !current.TargetFramework.Equals(project.TargetFramework))
                                {
                                    continue;
                                }
                                this.referenceAssemblyContextTable[current] = this.referenceAssemblyContextTable[current] + 1;
                                referenceAssemblyContext1 = current;
                                return(referenceAssemblyContext1);
                            }
                            referenceAssemblyContext = new ReferenceAssemblyContext(referenceAssemblyMode, project.TargetFramework);
                            this.referenceAssemblyContextTable.Add(referenceAssemblyContext, 1);
                            return(referenceAssemblyContext);
                        }
                        return(referenceAssemblyContext1);
                    }
                    referenceAssemblyContext = new ReferenceAssemblyContext(referenceAssemblyMode, project.TargetFramework);
                    this.referenceAssemblyContextTable.Add(referenceAssemblyContext, 1);
                    return(referenceAssemblyContext);
                }
            }
            return(null);
        }
 public ReferenceAssemblyUniverse(ReferenceAssemblyContext context)
 {
     this.context = context;
 }