public string FindAssemblyFile(AssemblyNameReference name)
        {
            var    targetFramework = TargetFramework.Split(new[] { ",Version=v" }, StringSplitOptions.None);
            string file            = null;

            switch (targetFramework[0])
            {
            case ".NETCoreApp":
            case ".NETStandard":
                if (targetFramework.Length != 2)
                {
                    return(ResolveInternal(name));
                }
                if (dotNetCorePathFinder == null)
                {
                    var version = targetFramework[1].Length == 3 ? targetFramework[1] + ".0" : targetFramework[1];
                    dotNetCorePathFinder = new DotNetCorePathFinder(mainAssemblyFileName, TargetFramework, version);
                }
                file = dotNetCorePathFinder.TryResolveDotNetCore(name);
                if (file != null)
                {
                    return(file);
                }
                return(ResolveInternal(name));

            default:
                return(ResolveInternal(name));
            }
        }
Exemplo n.º 2
0
        public static ModuleDefinition LoadMainModule(string mainAssemblyFileName,
                                                      bool throwOnError = true, bool inMemory = false)
        {
            var resolver = new UniversalAssemblyResolver(mainAssemblyFileName, throwOnError, null);

            var module = ModuleDefinition.ReadModule(mainAssemblyFileName, new ReaderParameters
            {
                AssemblyResolver = resolver,
                InMemory         = inMemory
            });

            resolver = new UniversalAssemblyResolver(mainAssemblyFileName, throwOnError,
                                                     DotNetCorePathFinder.DetectTargetFrameworkId(module.Assembly));

            module = ModuleDefinition.ReadModule(mainAssemblyFileName, new ReaderParameters
            {
                AssemblyResolver = resolver,
                InMemory         = inMemory,
                MetadataResolver = new CachedMetadataResolver(resolver)
            });

            resolver.MetadataResolver = module.MetadataResolver;

            return(module);
        }
        public string FindAssemblyFile(AssemblyNameReference name)
        {
            if (name.IsWindowsRuntime)
            {
                return(FindWindowsMetadataFile(name));
            }

            string file;

            switch (targetFrameworkIdentifier)
            {
            case TargetFrameworkIdentifier.NETCoreApp:
            case TargetFrameworkIdentifier.NETStandard:
                if (IsZeroOrAllOnes(targetFrameworkVersion))
                {
                    goto default;
                }
                if (dotNetCorePathFinder == null)
                {
                    dotNetCorePathFinder = new DotNetCorePathFinder(mainAssemblyFileName, targetFramework, targetFrameworkIdentifier, targetFrameworkVersion);
                }
                file = dotNetCorePathFinder.TryResolveDotNetCore(name);
                if (file != null)
                {
                    return(file);
                }
                goto default;

            case TargetFrameworkIdentifier.Silverlight:
                if (IsZeroOrAllOnes(targetFrameworkVersion))
                {
                    goto default;
                }
                file = ResolveSilverlight(name, targetFrameworkVersion);
                if (file != null)
                {
                    return(file);
                }
                goto default;

            default:
                return(ResolveInternal(name));
            }
        }
Exemplo n.º 4
0
        public AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters parameters)
        {
            var    targetFramework = TargetFramework.Split(new[] { ",Version=v" }, StringSplitOptions.None);
            string file            = null;

            switch (targetFramework[0])
            {
            case ".NETCoreApp":
            case ".NETStandard":
                if (targetFramework.Length != 2)
                {
                    return(ResolveInternal(name, parameters));
                }
                if (dotNetCorePathFinder == null)
                {
                    var version = targetFramework[1].Length == 3 ? targetFramework[1] + ".0" : targetFramework[1];
                    dotNetCorePathFinder = new DotNetCorePathFinder(mainAssemblyFileName, TargetFramework, version, this.loadedAssemblyReferences);
                }
                file = dotNetCorePathFinder.TryResolveDotNetCore(name);
                if (file == null)
                {
                    return(ResolveInternal(name, parameters));
                }
                else
                {
                    var asm = ModuleDefinition.ReadModule(file, parameters).Assembly;
                    if (throwOnError && asm == null)
                    {
                        throw new AssemblyResolutionException(name);
                    }
                    return(asm);
                }

            default:
                return(ResolveInternal(name, parameters));
            }
        }
        string FindClosestVersionDirectory(string basePath, Version version)
        {
            string path = null;

            foreach (var folder in new DirectoryInfo(basePath).GetDirectories().Select(d => DotNetCorePathFinder.ConvertToVersion(d.Name))
                     .Where(v => v.Item1 != null).OrderByDescending(v => v.Item1))
            {
                if (path == null || folder.Item1 >= version)
                {
                    path = folder.Item2;
                }
            }
            return(path ?? version.ToString());
        }