コード例 #1
0
        /// <summary>
        /// 存储程序集。
        /// </summary>
        /// <param name="descriptor">程序集描述符。</param>
        /// <param name="fileName">程序集文件名称。</param>
        public void StoreAssembly(AssemblyDescriptor descriptor, string fileName)
        {
            var path = PrecompiledAssemblyPath(descriptor);

            Logger.Information("存储程序集 {0} 到程序集探测目录", descriptor.ToString());
            _appDataFolder.StoreFile(fileName, path);
        }
コード例 #2
0
        AssemblyDescriptor GetAssembly(string name)
        {
            if (name == null)
            {
                return(_defaultAssembly);
            }

            AssemblyDescriptor rv;

            if (!AssemblyNameCache.TryGetValue(name, out rv))
            {
                var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
                var match            = loadedAssemblies.FirstOrDefault(a => a.GetName().Name == name);
                if (match != null)
                {
                    AssemblyNameCache[name] = rv = new AssemblyDescriptor(match);
                }
                else
                {
                    // iOS does not support loading assemblies dynamically!
                    //
#if !__IOS__
                    AssemblyNameCache[name] = rv = new AssemblyDescriptor(Assembly.Load(name));
#endif
                }
            }

            return(rv);
        }
コード例 #3
0
        public void ProcessRuntimeDescriptorSaveTest()
        {
            AssemblyServiceRepository repo = GetAssemblyManagementRepository(GetConsoleLogger(), nameof(ProcessRuntimeDescriptorSaveTest));

            repo.SetDaoNamespace <ProcessRuntimeDescriptor>();
            repo.Database.TryEnsureSchema <Dao.AssemblyDescriptor>();
            List <AssemblyDescriptor> descriptors = AssemblyDescriptor.GetCurrentAppDomainDescriptors().ToList();
            ProcessRuntimeDescriptor  current     = ProcessRuntimeDescriptor.PersistCurrentToRepo(repo);

            Expect.AreEqual(descriptors.Count, current.AssemblyDescriptors.Length, "Number of descriptors didn't match");

            ProcessRuntimeDescriptor retrieved = repo.Retrieve <ProcessRuntimeDescriptor>(current.Id);

            Expect.AreEqual(descriptors.Count, retrieved.AssemblyDescriptors.Length, "Number of retrieved descriptors didn't match");

            foreach (AssemblyDescriptor descriptor in retrieved.AssemblyDescriptors)
            {
                AssemblyDescriptor retrievedDescriptor = repo.Retrieve <AssemblyDescriptor>(descriptor.Uuid);
                OutLineFormat("Checking {0}", ConsoleColor.DarkBlue, retrievedDescriptor.AssemblyFullName);
                AssemblyDescriptor actual = descriptors.FirstOrDefault(d =>
                                                                       d.Name.Equals(retrievedDescriptor.Name) &&
                                                                       d.FileHash.Equals(retrievedDescriptor.FileHash) &&
                                                                       d.AssemblyFullName.Equals(retrievedDescriptor.AssemblyFullName)
                                                                       );

                Expect.AreEqual(actual.AssemblyReferenceDescriptors?.Count, retrievedDescriptor.AssemblyReferenceDescriptors?.Count);
                OutLineFormat("ProcessRuntimeDescriptors count {0}", retrievedDescriptor.ProcessRuntimeDescriptors.Count);
            }
        }
コード例 #4
0
        /// <summary>
        /// 存储程序集。
        /// </summary>
        /// <param name="moduleName">模块名称。</param>
        public void StoreAssembly(string moduleName)
        {
            var descriptor = _extensionManager.GetExtension(moduleName);

            if (descriptor == null)
            {
                return;
            }

            /*            var paths = GetModuleAssemblyPaths(descriptor);
             *          if (paths == null)
             *              return;
             *
             *          foreach (var item in paths)
             *          {
             *              var assembly = item.Key;
             *              var fileName = item.Value;
             *              StoreAssembly(assembly, _applicationFolder.MapPath(fileName));
             *          }*/
            var path = GetModuleAssemblyPath(descriptor);

            Logger.Information("为模块 \"{1}\" 存储程序集文件 \"{0}\"", path, moduleName);
            var assemblyDescriptor = new AssemblyDescriptor(moduleName);

            StoreAssembly(assemblyDescriptor, _applicationFolder.MapPath(path));
        }
コード例 #5
0
 private static void OutputInfo(AssemblyDescriptor descriptor)
 {
     OutLineFormat("Name: {0}", ConsoleColor.Cyan, descriptor.AssemblyFullName);
     OutLineFormat("Hash: {0}", ConsoleColor.DarkCyan, descriptor.FileHash);
     OutLineFormat("\tReference count: {0}", ConsoleColor.Blue, descriptor.AssemblyReferenceDescriptors?.Count);
     OutLine();
 }
コード例 #6
0
        public void SaveDescriptorSavesReferences()
        {
            AssemblyServiceRepository repo = GetAssemblyManagementRepository(GetConsoleLogger(), nameof(SaveDescriptorDoesntDuplicate));

            repo.Database.TryEnsureSchema <Dao.AssemblyDescriptor>();
            AssemblyDescriptor[] descriptors = AssemblyDescriptor.GetCurrentAppDomainDescriptors().ToArray();
            for (int i = 0; i < 3; i++)
            {
                foreach (AssemblyDescriptor descriptor in descriptors)
                {
                    int?referenceCount = descriptor.AssemblyReferenceDescriptors?.Count;
                    if (referenceCount > 0)
                    {
                        AssemblyDescriptor wrapped   = repo.Save(descriptor);
                        AssemblyDescriptor retrieved = repo.Retrieve <AssemblyDescriptor>(wrapped.Id);
                        Expect.AreEqual(referenceCount, retrieved.AssemblyReferenceDescriptors?.Count);
                        Pass(descriptor.AssemblyFullName);
                    }
                    else
                    {
                        OutLineFormat("No references: {0}", ConsoleColor.Cyan, descriptor.AssemblyFullName);
                    }
                }
            }
        }
コード例 #7
0
        private static IReadOnlyList <MetadataReference> GetMetadataReferences(DataBuilderOptions options,
                                                                               Type accessorType)
        {
            var references = new List <AssemblyDescriptor>(options?.MigrationAssemblyReferences.Distinct());

            // Add DbContextAccessor AssemblyReference
            var accessorReference = AssemblyDescriptor.Create(accessorType?.Assembly);

            if (!references.Contains(accessorReference))
            {
                references.Add(accessorReference);
            }

            references.Sort();

            return(references.Select(refer => refer.ToMetadataReference()).AsReadOnlyList());

            //var metadatas = new List<MetadataReference>();
            //foreach (var reference in references)
            //{
            //    if (reference.CopyLocal)
            //    {
            //        if (reference.Location.IsEmpty())
            //            throw new InvalidOperationException(InternalResource.InvalidOperationExceptionNotFindPathForAssemblyReferenceFormat.Format(reference.ToString()));

            //        File.Copy(reference.Location, Path.Combine(assemblyPath.BasePath, Path.GetFileName(reference.Location)), overwrite: true);
            //    }
            //    metadatas.AddRange(reference.Metadatas);
            //}
        }
コード例 #8
0
ファイル: Shared.cs プロジェクト: AparnaSGhenge/Hello_World
        private AssemblyDescriptor GetAssembly(string name)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            AssemblyDescriptor rv;

            if (!AssemblyNameCache.TryGetValue(name, out rv))
            {
                var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
                var match            = loadedAssemblies.FirstOrDefault(a => a.GetName().Name == name);
                if (match != null)
                {
                    AssemblyNameCache[name] = rv = new AssemblyDescriptor(match);
                }
                else
                {
                    // iOS does not support loading assemblies dynamically!
                    //
#if __IOS__
                    throw new InvalidOperationException(
                              $"Assembly {name} needs to be referenced and explicitly loaded before loading resources");
#else
                    name = Uri.UnescapeDataString(name);
                    AssemblyNameCache[name] = rv = new AssemblyDescriptor(Assembly.Load(name));
#endif
                }
            }

            return(rv);
        }
コード例 #9
0
        public void CanSaveAndRetrieveAllCurrentAppDomainDescriptorsTest()
        {
            DaoRepository daoRepo = GetAssemblyManagementRepository(GetConsoleLogger());

            AssemblyDescriptor[] descriptors = AssemblyDescriptor.GetCurrentAppDomainDescriptors().ToArray();
            foreach (AssemblyDescriptor descriptor in descriptors)
            {
                OutLine("Before save");
                OutputInfo(descriptor);

                AssemblyDescriptor saved = daoRepo.Save(descriptor);
                OutLine("Original after save", ConsoleColor.Yellow);
                OutputInfo(descriptor);

                OutLine("Result after save", ConsoleColor.DarkYellow);
                OutputInfo(saved);

                Expect.AreEqual(descriptor.AssemblyFullName, saved.AssemblyFullName, "AssemlbyFullName didn't match");
                Expect.AreEqual(descriptor.AssemblyReferenceDescriptors?.Count, saved.AssemblyReferenceDescriptors?.Count, "AssemblyReferenceDescriptors count didn't match");

                AssemblyDescriptor retrieved = daoRepo.Retrieve <AssemblyDescriptor>(saved.Uuid);
                OutLine("Retrieved after save", ConsoleColor.DarkGreen);
                OutputInfo(saved);

                Expect.AreEqual(descriptor.AssemblyFullName, retrieved.AssemblyFullName, "AssemlbyFullName didn't match");
                Expect.AreEqual(descriptor.AssemblyReferenceDescriptors?.Count, retrieved.AssemblyReferenceDescriptors?.Count, "AssemblyReferenceDescriptors count didn't match");
            }
        }
コード例 #10
0
ファイル: AssetLoader.cs プロジェクト: CarlSosaDev/Avalonia
 public AssetLoader(Assembly assembly = null)
 {
     if (assembly == null)
         assembly = Assembly.GetEntryAssembly();
     if (assembly != null)
         _defaultAssembly = new AssemblyDescriptor(assembly);
 }
コード例 #11
0
        private void projectView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Node.Parent == null)
            {
                return;
            }
            string clicked = e.Node.Parent.Text.Trim();

            if (clicked.Equals("Assemblies"))
            {
                SampleAssembly = (AssemblyDescriptor)e.Node.Tag;
                UIServices.AssemblyUtilities.LoadAssemblyToList(SampleAssembly.Assembly, lstVwAssemblies);
            }
            else if (clicked.Equals("Mapped Objects"))
            {
                MapReferences select = (MapReferences)e.Node.Tag;
                ctxMapForMethods.DropDownItems.Clear();
                ctxDataForMethods.DropDownItems.Clear();
                foreach (MethodParameterMap aMap in select.ViableInfo.TheMap.MethodParameters)
                {
                    string method    = Parameters.FormParameterMethod(aMap);
                    var    aMenuItem = ctxMapForMethods.DropDownItems.Add(method);
                    aMenuItem.Click += mnuMapWindow_Click;
                    aMenuItem.Tag    = aMap;

                    aMenuItem        = ctxDataForMethods.DropDownItems.Add(method);
                    aMenuItem.Click += mnuQueryWindow_Click;
                    aMenuItem.Tag    = aMap;
                }
            }
        }
コード例 #12
0
 public AssetLoader(Assembly assembly = null)
 {
     if (assembly == null)
     {
         assembly = Assembly.GetEntryAssembly();
     }
     _defaultAssembly = new AssemblyDescriptor(assembly);
 }
コード例 #13
0
ファイル: AssemblyService.cs プロジェクト: ThreeHeadz/Bam.Net
        protected void StoreAssemblyFileChunks(AssemblyDescriptor assemblyDescriptor)
        {
            Assembly assembly = Assembly.Load(assemblyDescriptor.AssemblyFullName);
            FileInfo fileInfo = assembly.GetFileInfo();

            Args.ThrowIf(!fileInfo.Sha256().Equals(assemblyDescriptor.FileHash), "FileHash validation failed: {0}", assemblyDescriptor.AssemblyFullName);
            FileService.StoreFileChunksInRepo(fileInfo, assemblyDescriptor.Name);
        }
コード例 #14
0
 private void mnuFindAssembly_Click(object sender, EventArgs e)
 {
     try
     {
         UIServices.AssemblyUtilities.AddAssembly(projectView, dlgOpenAssembly, ctxAssemblyNode);
         SampleAssembly = (AssemblyDescriptor)projectView.SelectedNode.Tag;
         UIServices.AssemblyUtilities.LoadAssemblyToList(SampleAssembly.Assembly, lstVwAssemblies);
     }
     catch { }
 }
コード例 #15
0
        public void AssemblyDescriptorHasReferenceDescriptorsTest()
        {
            Assembly current = Assembly.GetExecutingAssembly();

            AssemblyName[]     assNames   = current.GetReferencedAssemblies().Where(AssemblyDescriptor.AssemblyNameFilter).ToArray();
            AssemblyDescriptor descriptor = new AssemblyDescriptor(current);

            Expect.IsTrue(assNames.Length > 0);
            Expect.AreEqual(assNames.Length, descriptor.AssemblyReferenceDescriptors.Count);
        }
コード例 #16
0
        /// <summary>
        /// 删除程序集。
        /// </summary>
        /// <param name="descriptor">程序集描述符。</param>
        public void DeleteAssembly(AssemblyDescriptor descriptor)
        {
            var path = PrecompiledAssemblyPath(descriptor);

            if (!_appDataFolder.FileExists(path))
            {
                return;
            }
            Logger.Information("从程序集探测目录删除程序集 {0}", descriptor.ToString());
            _appDataFolder.DeleteFile(path);
        }
コード例 #17
0
ファイル: AssetLoader.cs プロジェクト: KvanTTT/Perspex
 AssemblyDescriptor GetAssembly(string name)
 {
     if (name == null)
         return _defaultAssembly;
     AssemblyDescriptor rv;
     if (!AssemblyNameCache.TryGetValue(name, out rv))
         AssemblyNameCache[name] = rv =
             new AssemblyDescriptor(AppDomain.CurrentDomain.GetAssemblies()
                 .FirstOrDefault(a => a.GetName().Name == name)
                                    ?? Assembly.Load(name));
     return rv;
 }
コード例 #18
0
        public void AssemblyDescriptorHasReferenceDescriptorsTest()
        {
            Assembly current = Assembly.GetExecutingAssembly();

            AssemblyName[]     assNames   = current.GetReferencedAssemblies().Where(AssemblyDescriptor.AssemblyNameFilter).ToArray();
            AssemblyDescriptor descriptor = new AssemblyDescriptor(current);

            Thread.Sleep(300);
            (assNames.Length > 0).IsTrue();
            Message.PrintLine("Assembly names: {0}", assNames.Select(an => an.Name).ToArray().ToDelimited(s => s, ", "));
            (descriptor.AssemblyReferenceDescriptors.Count > 0).IsTrue();
        }
コード例 #19
0
        public List <AssemblyDescriptor> GetLoadedAssemblyInformation()
        {
            var assemblyDescriptors = new List <AssemblyDescriptor>();

            var applicationModel = BuildApplicationModel();

            if (applicationModel != null && applicationModel.Controllers.Any())
            {
                foreach (var controller in applicationModel.Controllers)
                {
                    var assembly = controller.ControllerType.Assembly;
                    if (assemblyDescriptors.Any(k => k.ComponentId == assembly.GetComponentId()))
                    {
                        continue;
                    }

                    var assemblyInfo       = new AssemblyInformationHelper(assembly);
                    var viewComponents     = GetViewComponents(assembly);
                    var assemblyDescriptor = new AssemblyDescriptor
                    {
                        IsHosting       = assemblyInfo.IsHosting,
                        ComponentId     = assemblyInfo.ComponentId,
                        Title           = assemblyInfo.Title,
                        PackageId       = assemblyInfo.PackageId,
                        PackageVersion  = assemblyInfo.PackageVersion,
                        Authors         = assemblyInfo.Authors,
                        Company         = assemblyInfo.Company,
                        Product         = assemblyInfo.Product,
                        Description     = assemblyInfo.Description,
                        Copyright       = assemblyInfo.Copyright,
                        LicenceUrl      = assemblyInfo.LicenceUrl,
                        ProjectUrl      = assemblyInfo.ProjectUrl,
                        IconUrl         = assemblyInfo.IconUrl,
                        RepositoryUrl   = assemblyInfo.RepositoryUrl,
                        Tags            = assemblyInfo.Tags,
                        ReleaseNotes    = assemblyInfo.ReleaseNotes,
                        NeutrelLanguage = assemblyInfo.NeutrelLanguage,
                        Version         = assemblyInfo.Version,
                        FileVersion     = assemblyInfo.FileVersion,
                        ViewComponents  = viewComponents
                    };
                    var avmComponent = new List <ComponentControllerDescriptor>(); // Controller

                    GetAssemblyController(ref avmComponent, controller);

                    assemblyDescriptor.Controllers = avmComponent;
                    assemblyDescriptors.Add(assemblyDescriptor);
                }
            }

            return(assemblyDescriptors);
        }
コード例 #20
0
        public void CanSaveAndRetrieveAssemblyDescriptorTest()
        {
            DaoRepository      daoRepo    = GetAssemblyManagementRepository(GetConsoleLogger());
            AssemblyDescriptor descriptor = new AssemblyDescriptor(Assembly.GetExecutingAssembly());

            Expect.IsTrue(descriptor.AssemblyReferenceDescriptors.Count > 0, "No references found");
            AssemblyDescriptor saved = daoRepo.Save(descriptor);

            Expect.AreEqual(descriptor.AssemblyReferenceDescriptors?.Count, saved.AssemblyReferenceDescriptors?.Count, "Saved references didn't match");
            AssemblyDescriptor retrieved = daoRepo.Retrieve <AssemblyDescriptor>(descriptor.Uuid);

            Expect.AreEqual(descriptor.AssemblyReferenceDescriptors?.Count, saved.AssemblyReferenceDescriptors?.Count, "Retrieved references didn't match");
        }
コード例 #21
0
ファイル: IAssemblyLoader.cs プロジェクト: YSRE/SuperRocket
        /// <summary>
        /// 根据程序集描述符装载一个程序集。
        /// </summary>
        /// <param name="assemblyLoader">程序集装载机。</param>
        /// <param name="descriptor">程序集描述符。</param>
        /// <returns>程序集。</returns>
        /// <exception cref="ArgumentNullException"><paramref name="descriptor"/> 为null。</exception>
        public static Assembly Load(this IAssemblyLoader assemblyLoader, AssemblyDescriptor descriptor)
        {
            if (assemblyLoader == null)
            {
                throw new ArgumentNullException("assemblyLoader");
            }
            if (descriptor == null)
            {
                throw new ArgumentNullException("descriptor");
            }

            return(assemblyLoader.Load(descriptor.FullName));
        }
コード例 #22
0
        public void StoreAndDeleteAssemblyTest()
        {
            var descriptor = new AssemblyDescriptor("SuperRocket.Framework.Tests");

            if (AssemblyProbingFolder.AssemblyExists(descriptor))
            {
                AssemblyProbingFolder.DeleteAssembly(descriptor);
            }

            AssemblyProbingFolder.StoreAssembly(descriptor, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, descriptor.Name + ".dll"));
            Assert.IsTrue(AssemblyProbingFolder.AssemblyExists(descriptor));
            AssemblyProbingFolder.DeleteAssembly(descriptor);
            Assert.IsFalse(AssemblyProbingFolder.AssemblyExists(descriptor));
        }
コード例 #23
0
ファイル: ObjectReader.cs プロジェクト: ClusterReply/Migrant
        internal AssemblyDescriptor ReadAssembly()
        {
            var assemblyId = PrimitiveReader.ReadInt32();

            if (assembliesList.Count <= assemblyId)
            {
                var descriptor = AssemblyDescriptor.ReadFromStream(this);
                assembliesList.Add(descriptor);
                return(descriptor);
            }
            else
            {
                return(assembliesList[assemblyId]);
            }
        }
コード例 #24
0
ファイル: ObjectWriter.cs プロジェクト: ClusterReply/Migrant
        internal int TouchAndWriteAssemblyId(AssemblyDescriptor assembly)
        {
            int assemblyId;

            if (assemblyIndices.ContainsKey(assembly))
            {
                assemblyId = assemblyIndices[assembly];
                writer.Write(assemblyId);
                return(assemblyId);
            }
            assemblyId = nextAssemblyId++;
            assemblyIndices.Add(assembly, assemblyId);
            writer.Write(assemblyId);
            assembly.WriteTo(this);
            return(assemblyId);
        }
コード例 #25
0
        AssemblyDescriptor GetAssembly(string name)
        {
            if (name == null)
            {
                return(_defaultAssembly);
            }
            AssemblyDescriptor rv;

            if (!AssemblyNameCache.TryGetValue(name, out rv))
            {
                AssemblyNameCache[name] = rv =
                    new AssemblyDescriptor(AppDomain.CurrentDomain.GetAssemblies()
                                           .FirstOrDefault(a => a.GetName().Name == name)
                                           ?? Assembly.Load(name));
            }
            return(rv);
        }
コード例 #26
0
        private void WriteAssemblySpec(AssemblyDescriptor assembly)
        {
            WriteIdentifier(assembly.Name, true);
            _writer.Write(", Version=");
            _writer.Write(assembly.Version.ToString());
            _writer.Write(", PublicKeyToken=");

            var token = assembly.GetPublicKeyToken();

            if (token is null)
            {
                _writer.Write("null");
            }
            else
            {
                WriteHexBlob(token);
            }

            _writer.Write(", Culture=");
            WriteIdentifier(assembly.Culture ?? "neutral");
        }
コード例 #27
0
        private void Init(Type t)
        {
            UnderlyingType = t;

            TypeAssembly = AssemblyDescriptor.CreateFromAssembly(t.Assembly);

            genericArguments = new List <TypeDescriptor>();
            if (UnderlyingType.IsGenericType)
            {
                GenericFullName = UnderlyingType.GetGenericTypeDefinition().FullName;
                GenericAssemblyQualifiedName = UnderlyingType.GetGenericTypeDefinition().AssemblyQualifiedName;
                foreach (var genericArgument in UnderlyingType.GetGenericArguments())
                {
                    genericArguments.Add(TypeDescriptor.CreateFromType(genericArgument));
                }
            }
            else
            {
                GenericAssemblyQualifiedName = UnderlyingType.AssemblyQualifiedName;
                GenericFullName = UnderlyingType.FullName;
            }

            if (t.BaseType != null)
            {
                System.IO.File.AppendAllText("/tmp/log", string.Format("Setting base type '{0}' for '{1}' in Init method\n", t.BaseType.FullName, t.FullName));
                baseType = TypeDescriptor.CreateFromType(t.BaseType);
            }

            var fieldsToDeserialize = new List <FieldInfoOrEntryToOmit>();

            foreach (var field in StampHelpers.GetFieldsInSerializationOrder(UnderlyingType, true))
            {
                fieldsToDeserialize.Add(new FieldInfoOrEntryToOmit(field));
                if (!field.IsTransient())
                {
                    fields.Add(new FieldDescriptor(field));
                }
            }
            FieldsToDeserialize = fieldsToDeserialize;
        }
コード例 #28
0
ファイル: TypeDescriptor.cs プロジェクト: anthrax3/Migrant
        private void Init(Type t)
        {
            UnderlyingType = t;

            TypeAssembly = AssemblyDescriptor.CreateFromAssembly(t.Assembly);

            genericArguments = new List <TypeDescriptor>();
            if (UnderlyingType.IsGenericType)
            {
                GenericFullName = UnderlyingType.GetGenericTypeDefinition().FullName;
                GenericAssemblyQualifiedName = UnderlyingType.GetGenericTypeDefinition().AssemblyQualifiedName;
                foreach (var genericArgument in UnderlyingType.GetGenericArguments())
                {
                    genericArguments.Add(TypeDescriptor.CreateFromType(genericArgument));
                }
            }
            else
            {
                GenericAssemblyQualifiedName = UnderlyingType.AssemblyQualifiedName;
                GenericFullName = UnderlyingType.FullName;
            }

            if (t.BaseType != null)
            {
                baseType = TypeDescriptor.CreateFromType(t.BaseType);
            }

            var fieldsToDeserialize = new List <FieldInfoOrEntryToOmit>();

            foreach (var field in StampHelpers.GetFieldsInSerializationOrder(UnderlyingType, true))
            {
                fieldsToDeserialize.Add(new FieldInfoOrEntryToOmit(field));
                if (!field.IsTransient())
                {
                    fields.Add(new FieldDescriptor(field));
                }
            }
            FieldsToDeserialize = fieldsToDeserialize;
        }
コード例 #29
0
        public void SaveDescriptorDoesntDuplicate()
        {
            AssemblyServiceRepository repo = GetTestRepo(nameof(SaveDescriptorDoesntDuplicate));

            AssemblyDescriptor descriptor = new AssemblyDescriptor(Assembly.GetExecutingAssembly());

            AssemblyDescriptor one = repo.Save(descriptor);
            AssemblyDescriptor two = repo.Save(descriptor);

            Expect.IsNotNull(one, "first save returned null");
            Expect.IsNotNull(two, "second save returned null");
            Expect.AreEqual(one.Id, two.Id, "Ids didn't match");
            Expect.AreEqual(one.Uuid, two.Uuid, "Uuids didn't match");

            Dao.AssemblyDescriptorCollection descriptors = Dao.AssemblyDescriptor
                                                           .Where(q =>
                                                                  q.AssemblyFullName == descriptor.AssemblyFullName &&
                                                                  q.FileHash == descriptor.FileHash &&
                                                                  q.Name == descriptor.Name, repo.Database);

            Expect.AreEqual(1, descriptors.Count);
        }
コード例 #30
0
 public static void AddAssembly(TreeView projectView, OpenFileDialog dlgOpenAssembly, ContextMenuStrip menu)
 {
     try
     {
         if (dlgOpenAssembly.ShowDialog() == DialogResult.OK)
         {
             Assembly           loadedAssm  = Assembly.LoadFrom(dlgOpenAssembly.FileName);
             AssemblyDescriptor aDescriptor = new AssemblyDescriptor();
             aDescriptor.Assembly        = loadedAssm;
             aDescriptor.Enums           = loadedAssm.GetTypes().Where(x => x.IsEnum);
             aDescriptor.AbstractClasses = loadedAssm.GetTypes().Where(x => x.IsAbstract);
             aDescriptor.Interfaces      = loadedAssm.GetTypes().Where(x => x.IsInterface);
             TreeNode aNode = projectView.Nodes[0].Nodes[2].Nodes.Add(System.IO.Path.GetFileName(dlgOpenAssembly.FileName));
             aNode.ToolTipText        = dlgOpenAssembly.FileName;
             aNode.Tag                = aDescriptor;
             aNode.ContextMenuStrip   = menu;
             projectView.SelectedNode = aNode;
         }
     }
     catch
     {
         MessageBox.Show("Unable to load assembly", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
コード例 #31
0
        public static IDataBuilder AddDatabaseDesignTime <TDesignTime>(this IDataBuilder builder)
            where TDesignTime : class, IDesignTimeServices
        {
            builder.NotNull(nameof(builder));

            var designTimeType = typeof(TDesignTime);

            builder.SetProperty(p => p.DatabaseDesignTimeType, designTimeType);

            var designTime = designTimeType.EnsureCreate <TDesignTime>();

            designTime.ConfigureDesignTimeServices(builder.Services);

            builder.Services.Configure <DataBuilderOptions>(options =>
            {
                var reference = AssemblyDescriptor.Create(designTimeType.Assembly);
                if (!options.MigrationAssemblyReferences.Contains(reference))
                {
                    options.MigrationAssemblyReferences.Add(reference);
                }
            });

            return(builder);
        }
コード例 #32
0
ファイル: AssetLoader.cs プロジェクト: CarlSosaDev/Avalonia
 public void SetDefaultAssembly(Assembly assembly)
 {
     _defaultAssembly = new AssemblyDescriptor(assembly);
 }
コード例 #33
0
ファイル: AssetLoader.cs プロジェクト: CarlSosaDev/Avalonia
        private AssemblyDescriptor GetAssembly(string name)
        {
            if (name == null)
            {
                return _defaultAssembly;
            }

            AssemblyDescriptor rv;
            if (!AssemblyNameCache.TryGetValue(name, out rv))
            {
                var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
                var match = loadedAssemblies.FirstOrDefault(a => a.GetName().Name == name);
                if (match != null)
                {
                    AssemblyNameCache[name] = rv = new AssemblyDescriptor(match);
                }
                else
                {
                    // iOS does not support loading assemblies dynamically!
                    //
#if !__IOS__
                    AssemblyNameCache[name] = rv = new AssemblyDescriptor(Assembly.Load(name));
#endif
                }
            }

            return rv;
        }
コード例 #34
0
        /// <summary>
        /// 装载程序集。
        /// </summary>
        /// <param name="descriptor">程序集描述符。</param>
        /// <returns>程序集。</returns>
        public Assembly LoadAssembly(AssemblyDescriptor descriptor)
        {
            var path = PrecompiledAssemblyPath(descriptor);

            return(!_appDataFolder.FileExists(path) ? null : _assemblyLoader.Load(descriptor));
        }