public static MetadataReference CreateMetadataReference(this CompilerMetadataReference mdRef) { if (mdRef.IsAssemblyReference) { return(MetadataReference.CreateFromImage(mdRef.Data, MetadataReferenceProperties.Assembly)); } var moduleMetadata = ModuleMetadata.CreateFromImage(mdRef.Data); return(moduleMetadata.GetReference()); }
public static MetadataReference CreateMetadataReference(this CompilerMetadataReference mdRef, IRoslynDocumentationProviderFactory docFactory) { var docProvider = docFactory.TryCreate(mdRef.Filename); if (mdRef.IsAssemblyReference) { return(MetadataReference.CreateFromImage(mdRef.Data, MetadataReferenceProperties.Assembly, docProvider, mdRef.Filename)); } var moduleMetadata = ModuleMetadata.CreateFromImage(mdRef.Data); return(moduleMetadata.GetReference(docProvider, mdRef.Filename)); }
public static CompilerMetadataReference?Create(IRawModuleBytesProvider rawModuleBytesProvider, IAssembly tempAssembly, ModuleDef module, TypeDef nonNestedEditedTypeOrNull, bool makeEverythingPublic) { var moduleData = rawModuleBytesProvider.GetRawModuleBytes(module); if (moduleData == null) { return(null); } var patcher = new ModulePatcher(moduleData, tempAssembly, nonNestedEditedTypeOrNull, makeEverythingPublic); if (!patcher.Patch(module, out var newModuleData)) { return(null); } var asmRef = module.Assembly.ToAssemblyRef(); if (module.IsManifestModule) { return(CompilerMetadataReference.CreateAssemblyReference(newModuleData, asmRef, module.Location)); } return(CompilerMetadataReference.CreateModuleReference(newModuleData, asmRef, module.Location)); }
public static CompilerMetadataReference?Create(IRawModuleBytesProvider rawModuleBytesProvider, ModuleDef module, bool makeEverythingPublic) { var moduleData = rawModuleBytesProvider.GetRawModuleBytes(module); if (moduleData == null) { return(null); } if (makeEverythingPublic) { bool success = new MetadataFixer(moduleData).MakePublic(); if (!success) { return(null); } } var asmRef = module.Assembly.ToAssemblyRef(); if (module.IsManifestModule) { return(CompilerMetadataReference.CreateAssemblyReference(moduleData, asmRef, module.Location)); } return(CompilerMetadataReference.CreateModuleReference(moduleData, asmRef, module.Location)); }
public DecompiledCodeResult(IDecompiledDocument[] documents, CompilerMetadataReference[] assemblyReferences, IAssemblyReferenceResolver assemblyReferenceResolver, TargetPlatform platform) { Documents = documents; AssemblyReferences = assemblyReferences; AssemblyReferenceResolver = assemblyReferenceResolver; Platform = platform; }
public bool AddMetadataReferences(CompilerMetadataReference[] metadataReferences) { Debug.Assert(workspace != null); if (workspace == null) throw new InvalidOperationException(); var newProj = workspace.CurrentSolution.Projects.First().AddMetadataReferences(metadataReferences.Select(a => a.CreateMetadataReference(docFactory))); return workspace.TryApplyChanges(newProj.Solution); }