Beispiel #1
0
        public Assembly Load(AssemblyName assemblyName, IAssemblyLoadContext loadContext)
        {
            // An assembly name like "MyLibrary!alternate!more-text"
            // is parsed into:
            // name == "MyLibrary"
            // aspect == "alternate"
            // and the more-text may be used to force a recompilation of an aspect that would
            // otherwise have been cached by some layer within Assembly.Load

            var    name   = assemblyName.Name;
            string aspect = null;
            var    parts  = name.Split(new[] { '!' }, 3);

            if (parts.Length != 1)
            {
                name   = parts[0];
                aspect = parts[1];
            }

            Project project;

            if (!_projectResolver.TryResolveProject(name, out project))
            {
                return(null);
            }

            return(_compilationEngine.LoadProject(
                       project,
                       aspect,
                       loadContext));
        }
Beispiel #2
0
        public Assembly Load(AssemblyName assemblyName, IAssemblyLoadContext loadContext)
        {
            // An assembly name like "MyLibrary!alternate!more-text"
            // is parsed into:
            // name == "MyLibrary"
            // aspect == "alternate"
            // and the more-text may be used to force a recompilation of an aspect that would
            // otherwise have been cached by some layer within Assembly.Load
            var    name   = assemblyName.Name;
            string aspect = null;
            var    parts  = name.Split(new[] { '!' }, 3);

            if (parts.Length != 1)
            {
                name   = parts[0];
                aspect = parts[1];
            }

            if (!string.IsNullOrEmpty(assemblyName.CultureName) &&
                Path.GetExtension(name).Equals(".resources", StringComparison.OrdinalIgnoreCase))
            {
                name = Path.GetFileNameWithoutExtension(name);
            }

            RuntimeProject project;

            if (!_projects.TryGetValue(name, out project))
            {
                return(null);
            }

            return(_compilationEngine.LoadProject(
                       project.Project,
                       project.Framework,
                       aspect,
                       loadContext,
                       assemblyName,
                       _configuration));
        }