Esempio n. 1
0
        private bool isApplicableAssembly(
            Metaspec.AssemblyInfo assemblyInfo,
            ExternalAssemblyReferenceInfo csProjAssemblyReferenceInfo
            )
        {
            //system dll
            if (csProjAssemblyReferenceInfo.assemblyInfo.getVersion().isNull())
            {
                string requiredTargetFramework = csProjAssemblyReferenceInfo.solutionRequiredTargetFramework;
                if (requiredTargetFramework != null)
                {
                    AssemblyVersion av = getMinAssemblyVersionFromRequiredTargetFramework(requiredTargetFramework);

                    if (assemblyInfo.getVersion() > av)
                    {
                        return(false);
                    }
                }
            }

            if (csProjAssemblyReferenceInfo.specificVersion)
            {
                if (assemblyInfo.Version.MajorVersion != csProjAssemblyReferenceInfo.assemblyInfo.Version.MajorVersion ||
                    assemblyInfo.Version.MinorVersion != csProjAssemblyReferenceInfo.assemblyInfo.Version.MinorVersion ||
                    assemblyInfo.Version.BuildNumber != csProjAssemblyReferenceInfo.assemblyInfo.Version.BuildNumber ||
                    assemblyInfo.Version.RevisionNumber != csProjAssemblyReferenceInfo.assemblyInfo.Version.RevisionNumber)
                {
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 2
0
        int selectBetterAssembly(
            ExternalAssemblyReferenceInfo csProjAssemblyReferenceInfo,
            Metaspec.AssemblyInfo assemblyInfo1,
            Metaspec.AssemblyInfo assemblyInfo2
            )
        {
            bool ap1 = isApplicableAssembly(assemblyInfo1, csProjAssemblyReferenceInfo);
            bool ap2 = isApplicableAssembly(assemblyInfo2, csProjAssemblyReferenceInfo);

            if (ap1 != ap2)
            {
                if (ap1)
                {
                    return(1);
                }
                else
                {
                    return(2);
                }
            }

            bool            csProjAssemblyReferenceInfoAssemblyInfoIsNull = csProjAssemblyReferenceInfo.assemblyInfo.getVersion().isNull();
            string          requiredTargetFramework = csProjAssemblyReferenceInfo.solutionRequiredTargetFramework;
            AssemblyVersion av1 = assemblyInfo1.getVersion();
            AssemblyVersion av2 = assemblyInfo2.getVersion();

            //system dll
            if (csProjAssemblyReferenceInfoAssemblyInfoIsNull &&
                requiredTargetFramework != null)
            {
                AssemblyVersion av = getMinAssemblyVersionFromRequiredTargetFramework(requiredTargetFramework);
                bool            g1 = av1 >= av;
                bool            g2 = av2 >= av;
                if (g1 != g2)
                {
                    if (g1)
                    {
                        return(1);
                    }
                    else
                    {
                        return(2);
                    }
                }
            }

            //user dll
            else
            {
                AssemblyVersion av = csProjAssemblyReferenceInfo.assemblyInfo.getVersion();

                bool g1 = av1 >= av;
                bool g2 = av2 >= av;
                if (g1 != g2)
                {
                    if (g1)
                    {
                        return(1);
                    }
                    else
                    {
                        return(2);
                    }
                }
                if (g1 && g2)
                {
                    if (av1 > av2)
                    {
                        return(1);
                    }
                    else if (av2 > av1)
                    {
                        return(2);
                    }
                }
            }

            string processorArhitecture;

            if (csProjAssemblyReferenceInfo.assemblyInfo.ProcessorArchitecture != null)
            {
                processorArhitecture = csProjAssemblyReferenceInfo.assemblyInfo.ProcessorArchitecture;
            }
            else
            {
                processorArhitecture = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
            }
            if (assemblyInfo1.ProcessorArchitecture == processorArhitecture)
            {
                return(1);
            }
            else if (assemblyInfo2.ProcessorArchitecture == processorArhitecture)
            {
                return(2);
            }

            return(0);
        }