public NuGenModuleReference(NuGenAssembly assembly, uint token, string name)
		{
			Token = token;
			Assembly = assembly;
			Name = name;
			NuGenHelperFunctions.GetMemberReferences(Assembly, Token);
		}
		public NuGenMethodSpec(uint token, NuGenTokenBase parent, IntPtr signature, uint signatureLength, NuGenAssembly	assembly)
		{
			Token = token;
			Parent = parent;
			Signature = signature;
			SignatureLength = signatureLength;
		}
		public NuGenTypeReference(NuGenIMetaDataImport2 import, NuGenAssembly assembly, string name, uint token, uint resolutionScope)
		{
			Assembly = assembly;
			Name = name;
			Token = token;
			ResolutionScope = resolutionScope;
			NuGenHelperFunctions.GetMemberReferences(Assembly, Token);
		}
		public NuGenTypeSpecification(NuGenAssembly assembly, uint token, IntPtr signatureBlob, uint signatureBlobLength)
		{
			Token = token;
			SignatureBlob = signatureBlob;
			SignatureBlobLength = signatureBlobLength;
			Assembly = assembly;

			NuGenHelperFunctions.GetMemberReferences(Assembly, Token);
		}
		public void LoadInMemoryModule(ModuleWrapper inMemoryModule)
		{
			List<NuGenAssembly> loadedAssemblies = new List<NuGenAssembly>(1);

			try
			{
				string moduleName = inMemoryModule.GetName();

				try
				{
					moduleName = Path.GetFileNameWithoutExtension(moduleName);
				}
				catch
				{
				}

				NuGenAssembly inMemoryAssembly = new NuGenAssembly(true);
				inMemoryAssembly.FileName = moduleName;
				inMemoryAssembly.Name = moduleName;
				NuGenMetaDataDispenserEx dispenser = new NuGenMetaDataDispenserEx();

				inMemoryAssembly.LoadAssemblyFromMetadataInterfaces(dispenser, (NuGenIMetaDataAssemblyImport)inMemoryModule.GetMetaDataAssemblyImport(), (NuGenIMetaDataImport2)inMemoryModule.GetMetaDataImport2(), inMemoryModule);
				loadedAssemblies.Add(inMemoryAssembly);
			}
			catch (Exception exception)
			{
				NuGenUIHandler.Instance.DisplayUserWarning("An error occurred while loading the assembly.");
				NuGenUIHandler.Instance.ShowException(exception);
			}

			NuGenUIHandler.Instance.ResetProgressBar();

			if (loadedAssemblies.Count > 0)
			{
				NuGenUIHandler.Instance.AssembliesLoaded(loadedAssemblies, false);

				if (AssembliesLoaded != null)
				{
					AssembliesLoaded(loadedAssemblies, false);
				}
			}
		}
		public NuGenModuleScope(NuGenIMetaDataImport2 import, NuGenAssembly assembly)
		{
			Assembly = assembly;
			uint moduleNameLength;
			import.GetScopeProps(NuGenProject.DefaultCharArray, Convert.ToUInt32(NuGenProject.DefaultCharArray.Length), out moduleNameLength, ref mvid);

			if (moduleNameLength > NuGenProject.DefaultCharArray.Length)
			{
				NuGenProject.DefaultCharArray = new char[moduleNameLength];

				import.GetScopeProps(NuGenProject.DefaultCharArray, Convert.ToUInt32(NuGenProject.DefaultCharArray.Length), out moduleNameLength, ref mvid);
			}

			Name = NuGenHelperFunctions.GetString(NuGenProject.DefaultCharArray, 0, moduleNameLength);

			uint token;
			import.GetModuleFromScope(out token);
			Token = token;
			Assembly.AllTokens[Token] = this;
		}
		public NuGenFoundItemEventArgs(NuGenAssembly assembly, NuGenTokenBase foundTokenObject)
		{
			Assembly = assembly;
			FoundTokenObject = foundTokenObject;
		}
		public NuGenStandAloneSignature(NuGenAssembly assembly, uint token, IntPtr signatureBlob, uint signatureBlobLength)
		{
			Assembly = assembly;
			Token = token;
			SignatureBlob = signatureBlob;
			SignatureBlobLength = signatureBlobLength;
		}
		private void Start(object parameter)
		{
			string[] fileNames = (string[])parameter;
			List<NuGenAssembly> loadedAssemblies = new List<NuGenAssembly>(fileNames.Length);
			bool isProjectChanged = false;

			foreach (string fileName in fileNames)
			{
				try
				{
					if (fileName == null || fileName.Length == 0)
					{
						NuGenUIHandler.Instance.SetProgressText(fileName, "File not found.", false);
					}
					else
					{
						NuGenAssembly assembly = new NuGenAssembly(false);
						assembly.FullPath = fileName;
						assembly.LoadAssembly();

						if (assembly != null)
						{
							loadedAssemblies.Add(assembly);
						}
					}
				}
				catch (Exception exception)
				{
					isProjectChanged = true;
					NuGenUIHandler.Instance.DisplayUserWarning("An error occurred while loading the assembly.");
					NuGenUIHandler.Instance.ShowException(exception);
				}

				NuGenUIHandler.Instance.SetProgressText("\n\n", true);
			}

			NuGenUIHandler.Instance.ResetProgressBar();
			NuGenUIHandler.Instance.AssembliesLoaded(loadedAssemblies, isProjectChanged);

			if (AssembliesLoaded != null)
			{
				AssembliesLoaded(loadedAssemblies, isProjectChanged);
			}
		}
		public NuGenAssemblySearchOptions(NuGenAssembly assembly)
		{
			Assembly = assembly;
			SelectedOptions = Assembly.SearchOptions;
		}
		public NuGenManifestResource(NuGenAssembly assembly, uint token, string name, uint providerToken, uint offset, uint flags)
		{
			Assembly = assembly;
			Token = token;
			Name = name;
			ProviderToken = providerToken;
			Offset = offset;
			Flags = (CorManifestResourceFlags)flags;
		}
Exemple #12
0
		public NuGenFile(NuGenAssembly assembly, uint token, string name, IntPtr hash, uint hashLength, uint flags)
		{
			Assembly = assembly;
			Token = token;
			Name = name;
			Hash = hash;
			HashLength = hashLength;
			Flags = (CorFileFlags)flags;
		}
		public NuGenAssemblyReference(NuGenAssembly assembly, uint token, string name, IntPtr publicKeyOrToken, uint publicKeyOrTokenLength, NuGenAssemblyMetadata metadata, IntPtr hashBlob, uint hashBlobLength, uint flags)
		{
			Assembly = assembly;
			Token = token;
			Name = name;
			PublicKeyOrToken = publicKeyOrToken;
			PublicKeyOrTokenLength = publicKeyOrTokenLength;
			Metadata = metadata;
			HashBlob = hashBlob;
			HashBlobLength = hashBlobLength;
			Flags = (CorAssemblyFlags)flags;
		}
		public NuGenMemberReference(NuGenAssembly assembly, string name, uint token, uint typeDefToken, IntPtr signatureBlob, uint signatureBlobLength)
		{
			Assembly = assembly;
			Name = name;
			Token = token;
			TypeDefToken = typeDefToken;
			SignatureBlob = signatureBlob;
			SignatureBlobLength = signatureBlobLength;

			signatureReader = new NuGenMethodRefSignatureReader(assembly.AllTokens, SignatureBlob, SignatureBlobLength);
			signatureReader.ReadSignature();
			MethodSpecs = NuGenHelperFunctions.EnumMethodSpecs(assembly.Import, assembly, this);
		}
		private void ShowAssembly(TreeNode projectNode, NuGenAssembly assembly)
		{
			if (assembly != null)
			{
				TreeNode assemblyNode = new TreeNode(NuGenHelperFunctions.TruncateText(assembly.FileName));
				assemblyNode.ContextMenuStrip = assemblyMenu;
                assemblyNode.ImageIndex = 1;

				if (NuGenProject.Instance.StartupAssembly == assembly)
				{
					assemblyNode.ForeColor = Color.Red;
					assemblyNode.NodeFont = new Font(ProjectElements.Font, FontStyle.Italic);
				}

				assemblyNode.Tag = assembly;
				projectNode.Nodes.Add(assemblyNode);

				if (assembly.DisplayInTree)
				{
					TreeNode assemblyDefinitionNode = new TreeNode(" definition");
					assemblyDefinitionNode.Tag = assembly;
                    assemblyDefinitionNode.ImageIndex = 2;
					assemblyNode.Nodes.Add(assemblyDefinitionNode);
				}

				if (assembly.AssemblyReferences != null)
				{
					TreeNode referencesNode = new TreeNode(" References");
					referencesNode.Tag = assembly;
                    referencesNode.ImageIndex = 3;
					assemblyNode.Nodes.Add(referencesNode);

					foreach (NuGenAssemblyReference reference in assembly.AssemblyReferences.Values)
					{
						TreeNode referenceNode = new TreeNode(NuGenHelperFunctions.TruncateText(reference.Name));
						referenceNode.ContextMenuStrip = assemblyReferenceMenu;
						referenceNode.Tag = reference;
                        referenceNode.ImageIndex = 1;
						referencesNode.Nodes.Add(referenceNode);
					}
				}

				if (assembly.ManifestResources != null)
				{
					TreeNode manifestResourcesNode = new TreeNode(" Manifest Resources");
                    manifestResourcesNode.ImageIndex = 4;
					assemblyNode.Nodes.Add(manifestResourcesNode);

					foreach (NuGenManifestResource manifestResource in assembly.ManifestResources)
					{
						TreeNode manifestResourceNode = new TreeNode(NuGenHelperFunctions.TruncateText(manifestResource.Name));
						manifestResourceNode.Tag = manifestResource;
                        manifestResourceNode.ImageIndex = 1;
						manifestResourcesNode.Nodes.Add(manifestResourceNode);
					}
				}

				if (assembly.Files != null)
				{
					TreeNode filesNode = new TreeNode(" Files");
                    filesNode.ImageIndex = 5;
					assemblyNode.Nodes.Add(filesNode);

					foreach (NuGenFile file in assembly.Files)
					{
						if (file.DisplayInTree)
						{
							TreeNode fileNode = new TreeNode(NuGenHelperFunctions.TruncateText(file.Name));
							fileNode.Tag = file;
                            fileNode.Tag = 5;
							filesNode.Nodes.Add(fileNode);
						}
					}
				}

				if (assembly.ModuleReferences != null)
				{
					TreeNode moduleReferencesNode = new TreeNode(" Module References");
                    moduleReferencesNode.ImageIndex = 6;
					assemblyNode.Nodes.Add(moduleReferencesNode);

					foreach (NuGenModuleReference moduleReference in assembly.ModuleReferences)
					{
						TreeNode moduleReferenceNode = new TreeNode(NuGenHelperFunctions.TruncateText(moduleReference.Name));
						moduleReferenceNode.Tag = moduleReference;
                        moduleReferenceNode.ImageIndex = 1;
                        moduleReferencesNode.Nodes.Add(moduleReferenceNode);
					}
				}

				TreeNode moduleScopeNode = new TreeNode(NuGenHelperFunctions.TruncateText(assembly.ModuleScope.Name));
                moduleScopeNode.ImageIndex = 7;
				assemblyNode.Nodes.Add(moduleScopeNode);

				TreeNode moduleScopeDefinitionNode = new TreeNode(" definition");
                moduleScopeDefinitionNode.ImageIndex = 2;
				moduleScopeDefinitionNode.Tag = assembly.ModuleScope;
				moduleScopeNode.Nodes.Add(moduleScopeDefinitionNode);
				Dictionary<string, TreeNode> namespaceNodes = new Dictionary<string, TreeNode>();

				foreach (NuGenTypeDefinition typeDefinition in assembly.ModuleScope.TypeDefinitions.Values)
				{
					CreateTypeDefinitionNode(namespaceNodes, moduleScopeNode, typeDefinition, true);
				}

				if (assembly.GlobalType.FieldDefinitions != null || assembly.GlobalType.MethodDefinitions != null || assembly.GlobalType.Properties != null)
				{
					CreateTypeDefinitionNode(namespaceNodes, moduleScopeNode, assembly.GlobalType, false).Text = " {global type}";
				}
			}
		}
		public void AddAssemblyToProject(NuGenAssembly assembly)
		{
			projectElements.BeginUpdate();

            if (projectElements.Nodes.Count == 0)
            {
                projectElements.Nodes.Add("New Project");
            }

			ShowAssembly(projectElements.Nodes[0], assembly);
			NuGenProject.Instance.Assemblies.Add(assembly);
			if (!assembly.IsInMemory)
			{
				NuGenProject.Instance.IsSaved = false;
			}

			projectElements.EndUpdate();

            ShowProject();
		}
		public void RemoveAssemblyRelatedBreakpoints(NuGenAssembly assembly)
		{
			int index = 0;

			while (index < FunctionBreakpoints.Count)
			{
				NuGenFunctionBreakpointInformation breakpoint = FunctionBreakpoints[index];

				if (breakpoint.MethodDefinition.BaseTypeDefinition.ModuleScope.Assembly == assembly)
				{
					breakpoint.Remove();
					FunctionBreakpoints.Remove(breakpoint);
					NuGenUIHandler.Instance.RemoveBreakpoint(breakpoint);
				}
				else
				{
					index++;
				}
			}
		}