Ejemplo n.º 1
0
        public DotNetCorePathFinder(string parentAssemblyFileName, string targetFrameworkIdString, TargetFrameworkIdentifier targetFramework, Version targetFrameworkVersion, ReferenceLoadInfo loadInfo = null)
            : this(targetFramework, targetFrameworkVersion)
        {
            string assemblyName = Path.GetFileNameWithoutExtension(parentAssemblyFileName);
            string basePath     = Path.GetDirectoryName(parentAssemblyFileName);

            searchPaths.Add(basePath);

            var depsJsonFileName = Path.Combine(basePath, $"{assemblyName}.deps.json");

            if (File.Exists(depsJsonFileName))
            {
                packages = LoadPackageInfos(depsJsonFileName, targetFrameworkIdString).ToArray();

                foreach (var path in LookupPaths)
                {
                    foreach (var p in packages)
                    {
                        foreach (var item in p.RuntimeComponents)
                        {
                            var itemPath = Path.GetDirectoryName(item);
                            var fullPath = Path.Combine(path, p.Name, p.Version, itemPath).ToLowerInvariant();
                            if (Directory.Exists(fullPath))
                            {
                                packageBasePaths.Add(fullPath);
                            }
                        }
                    }
                }
            }
            else
            {
                loadInfo?.AddMessage(assemblyName, MessageKind.Warning, $"{assemblyName}.deps.json could not be found!");
            }
        }
Ejemplo n.º 2
0
        public DotNetCorePathFinder(string parentAssemblyFileName, string targetFrameworkId, Version version, ReferenceLoadInfo loadInfo = null)
        {
            string assemblyName = Path.GetFileNameWithoutExtension(parentAssemblyFileName);
            string basePath     = Path.GetDirectoryName(parentAssemblyFileName);

            this.version = version;

            var depsJsonFileName = Path.Combine(basePath, $"{assemblyName}.deps.json");

            if (!File.Exists(depsJsonFileName))
            {
                loadInfo?.AddMessage(assemblyName, MessageKind.Warning, $"{assemblyName}.deps.json could not be found!");
                return;
            }

            packages = LoadPackageInfos(depsJsonFileName, targetFrameworkId).ToDictionary(i => i.Name);

            foreach (var path in LookupPaths)
            {
                foreach (var pk in packages)
                {
                    foreach (var item in pk.Value.RuntimeComponents)
                    {
                        var itemPath = Path.GetDirectoryName(item);
                        var fullPath = Path.Combine(path, pk.Value.Name, pk.Value.Version, itemPath).ToLowerInvariant();
                        if (Directory.Exists(fullPath))
                        {
                            packageBasePaths.Add(fullPath);
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public DotNetCorePathFinder(string parentAssemblyFileName, string targetFrameworkIdString, TargetFrameworkIdentifier targetFramework, Version version, ReferenceLoadInfo loadInfo = null)
        {
            string assemblyName = Path.GetFileNameWithoutExtension(parentAssemblyFileName);
            string basePath     = Path.GetDirectoryName(parentAssemblyFileName);

            this.version = version;

            if (targetFramework == TargetFrameworkIdentifier.NETStandard)
            {
                // .NET Standard 2.1 is implemented by .NET Core 3.0 or higher
                if (version.Major == 2 && version.Minor == 1)
                {
                    this.version = new Version(3, 0, 0);
                }
            }

            var depsJsonFileName = Path.Combine(basePath, $"{assemblyName}.deps.json");

            if (!File.Exists(depsJsonFileName))
            {
                loadInfo?.AddMessage(assemblyName, MessageKind.Warning, $"{assemblyName}.deps.json could not be found!");
                return;
            }

            packages = LoadPackageInfos(depsJsonFileName, targetFrameworkIdString).ToArray();

            foreach (var path in LookupPaths)
            {
                foreach (var p in packages)
                {
                    foreach (var item in p.RuntimeComponents)
                    {
                        var itemPath = Path.GetDirectoryName(item);
                        var fullPath = Path.Combine(path, p.Name, p.Version, itemPath).ToLowerInvariant();
                        if (Directory.Exists(fullPath))
                        {
                            packageBasePaths.Add(fullPath);
                        }
                    }
                }
            }
        }