コード例 #1
0
        /// <summary>
        /// Recupera o assembly do pacote informado.
        /// </summary>
        /// <param name="package"></param>
        /// <returns></returns>
        public System.IO.Stream GetAssemblyPackageStream(IAssemblyPackage package)
        {
            package.Require("package").NotNull();
            var fileName = GetAssemblyPackageLocalFileName(package.Uid);

            if (System.IO.File.Exists(fileName))
            {
                return(System.IO.File.OpenRead(fileName));
            }
            return(null);
        }
コード例 #2
0
        /// <summary>
        /// Tenta carregar o assembly associado com o nome informado.
        /// </summary>
        /// <param name="assemblyName">Nome do assembly.</param>
        /// <param name="assembly">Instancia do assembly carregado.</param>
        /// <param name="exception">Error ocorrido</param>
        /// <returns>True caso o assembly tenha sido carregado com sucesso.</returns>
        public bool TryGet(string assemblyName, out System.Reflection.Assembly assembly, out Exception exception)
        {
            var assemblyName2 = new System.Reflection.AssemblyName(assemblyName);

            System.Reflection.Assembly assembly2 = null;
            exception = null;
            try
            {
                assembly2 = _domain.Load(assemblyName2);
            }
            catch (Exception ex)
            {
                exception = ex;
                assembly  = null;
            }
            if (assembly2 != null)
            {
                assembly = assembly2;
                return(true);
            }
            var assemblyPart         = new AssemblyPart(assemblyName);
            IAssemblyPackage package = null;

            try
            {
                var container = _assemblyRepository.GetAssemblyPackages(new AssemblyPart[] {
                    assemblyPart
                });
                package = container.FirstOrDefault();
            }
            catch (Exception ex)
            {
                exception = ex;
                assembly  = null;
                return(false);
            }
            if (package != null)
            {
                assembly2 = package.GetAssembly(assemblyPart);
                assembly  = assembly2;
                exception = null;
                return(assembly2 != null);
            }
            else
            {
                assembly = null;
                return(false);
            }
        }
コード例 #3
0
        /// <summary>
        /// Valida o pacote.
        /// </summary>
        /// <param name="assemblyPackage"></param>
        /// <param name="files"></param>
        /// <returns></returns>
        private bool Validate(IAssemblyPackage assemblyPackage, IDictionary <string, FileInfo2> files)
        {
            if (assemblyPackage == null)
            {
                return(false);
            }
            FileInfo2 info = null;

            foreach (var part in assemblyPackage)
            {
                if (!files.TryGetValue(part.Source, out info) || info.LastWriteTime > assemblyPackage.CreateTime)
                {
                    return(false);
                }
            }
            return(true);
        }
コード例 #4
0
 /// <summary>
 /// Recupera a stream do pacote do assembly.
 /// </summary>
 /// <param name="package"></param>
 /// <returns></returns>
 public System.IO.Stream GetAssemblyPackageStream(IAssemblyPackage package)
 {
     throw new NotSupportedException();
 }