Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
		public DecompiledCodeResult(IDecompiledDocument[] documents, CompilerMetadataReference[] assemblyReferences, IAssemblyReferenceResolver assemblyReferenceResolver, TargetPlatform platform) {
			Documents = documents;
			AssemblyReferences = assemblyReferences;
			AssemblyReferenceResolver = assemblyReferenceResolver;
			Platform = platform;
		}
Ejemplo n.º 6
0
		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);
		}