internal TypeSystem(NETHeader netheader) { this._managedHeader = netheader; if (netheader.ParentAssembly._path.StartsWith(@"C:\Windows\Microsoft.NET\Framework") && netheader.ParentAssembly._path.EndsWith("\\mscorlib.dll")) _iscorlib = true; else { _mscorlibRef = new AssemblyReference("mscorlib", AssemblyAttributes.None, new Version(), AssemblyHashAlgorithm.None, 0, null) { _netheader = netheader }; } Void = CreateCorLibTypeRef("System", "Void", ElementType.Void); IntPtr = CreateCorLibTypeRef("System", "IntPtr", ElementType.I); Int8 = CreateCorLibTypeRef("System", "SByte", ElementType.I1); Int16 = CreateCorLibTypeRef("System", "Int16", ElementType.I2); Int32 = CreateCorLibTypeRef("System", "Int32", ElementType.I4); Int64 = CreateCorLibTypeRef("System", "Int64", ElementType.I8); UIntPtr = CreateCorLibTypeRef("System", "UIntPtr", ElementType.U); UInt8 = CreateCorLibTypeRef("System", "Byte", ElementType.U1); UInt16 = CreateCorLibTypeRef("System", "UInt16", ElementType.U2); UInt32 = CreateCorLibTypeRef("System", "UInt32", ElementType.U4); UInt64 = CreateCorLibTypeRef("System", "UInt64", ElementType.U8); Object = CreateCorLibTypeRef("System", "Object", ElementType.Object); Single = CreateCorLibTypeRef("System", "Single", ElementType.R4); Double = CreateCorLibTypeRef("System", "Double", ElementType.R8); Char = CreateCorLibTypeRef("System", "Char", ElementType.Char); String = CreateCorLibTypeRef("System", "String", ElementType.String); Type = CreateCorLibTypeRef("System", "Type", ElementType.Type); Boolean = CreateCorLibTypeRef("System", "Boolean", ElementType.Boolean); }
public virtual LWin32 Resolve(AssemblyReference reference) { LWin32 resolvedAssembly = null; string name = reference.Name; if (reference.HasImage && !string.IsNullOrEmpty(reference.NETHeader.ParentAssembly.Path)) { // Check directory of container assembly. TryGetAssembly(Path.GetDirectoryName(reference.NETHeader.ParentAssembly.Path), name, out resolvedAssembly); } if (resolvedAssembly == null) { // Check gac directories. if (!TryGetAssemblyGac(Path.Combine(_gacDirectory, "GAC_64"), name, out resolvedAssembly)) if (!TryGetAssemblyGac(Path.Combine(_gacDirectory, "GAC_32"), name, out resolvedAssembly)) TryGetAssemblyGac(Path.Combine(_gacDirectory, "GAC_MSIL"), name, out resolvedAssembly); } if (resolvedAssembly == null) { // Check search directories foreach (var directory in SearchDirectories) { if (TryGetAssembly(directory, name, out resolvedAssembly)) break; } } if (resolvedAssembly == null) OnResolutionFailed(reference); if (resolvedAssembly != null) _assemblyCache.Add(reference.Name, resolvedAssembly); return resolvedAssembly; }
public override void LoadCache() { reference = Reference; }
public override void ClearCache() { base.ClearCache(); reference = null; }
public AssemblyRefProcessor(uint processor, AssemblyReference asmReference) : base(new MetaDataRow(processor, asmReference.TableIndex)) { reference = asmReference; }
public AssemblyRefOS(uint platformID, uint majorversion, uint minorversion, AssemblyReference asmReference) : base(new MetaDataRow(platformID, majorversion, minorversion, asmReference.TableIndex)) { reference = asmReference; }
protected virtual void OnResolutionFailed(AssemblyReference reference) { if (ResolutionFailed != null) ResolutionFailed(this, reference); }