internal static string Transform(string xml, IAssemblyReferenceResolver resolver) { if (xml == null) throw new ArgumentNullException("xml"); var setup = new AppDomainSetup { ApplicationBase = Path.GetDirectoryName(typeof(IsolatedResourceTransformer).Assembly.Location), ApplicationName = "Isolated Transformer" }; var appDomain = AppDomain.CreateDomain( setup.ApplicationName, AppDomain.CurrentDomain.Evidence, setup ); try { using (new AssemblyResolver()) { var transformer = (IsolatedResourceTransformer)appDomain.CreateInstanceAndUnwrap( typeof(IsolatedResourceTransformer).Assembly.FullName, typeof(IsolatedResourceTransformer).FullName ); return transformer.PerformTransform(xml, resolver); } } finally { AppDomain.Unload(appDomain); } }
public DecompiledCodeResult(IDecompiledDocument[] documents, CompilerMetadataReference[] assemblyReferences, IAssemblyReferenceResolver assemblyReferenceResolver, TargetPlatform platform) { Documents = documents; AssemblyReferences = assemblyReferences; AssemblyReferenceResolver = assemblyReferenceResolver; Platform = platform; }
public DecompiledCodeResult(string assemblyName, byte[] publicKey, IDecompiledDocument[] documents, CompilerMetadataReference[] assemblyReferences, IAssemblyReferenceResolver assemblyReferenceResolver, TargetPlatform platform) { AssemblyName = assemblyName; PublicKey = publicKey; Documents = documents; AssemblyReferences = assemblyReferences; AssemblyReferenceResolver = assemblyReferenceResolver; Platform = platform; }
public AssemblyReference(IAssemblyReferenceResolver resolver) { Name = resolver.GetName(); PublicKey = resolver.GetPublicKey(); PublicKeyToken = resolver.GetPublicKeyToken(); Version = resolver.GetVersion(); Culture = resolver.GetCulture(); Hash = resolver.GetHash(); Attributes = resolver.GetAttributes(); HashAlgorithm = resolver.GetHashAlgorithm(); }
// these flags control various optimization techniques public InitialisationProcess( IInputFileResolver inputFileResolver = null, IInitialBuildProcess initialBuildProcess = null, IInitialTestProcess initialTestProcess = null, ITestRunner testRunner = null, IAssemblyReferenceResolver assemblyReferenceResolver = null) { _inputFileResolver = inputFileResolver ?? new InputFileResolver(); _initialBuildProcess = initialBuildProcess ?? new InitialBuildProcess(); _initialTestProcess = initialTestProcess ?? new InitialTestProcess(); _testRunner = testRunner; _assemblyReferenceResolver = assemblyReferenceResolver ?? new AssemblyReferenceResolver(); }
public InitialisationProcess( IInputFileResolver inputFileResolver = null, IInitialBuildProcess initialBuildProcess = null, IInitialTestProcess initialTestProcess = null, ITestRunner testRunner = null, IAssemblyReferenceResolver assemblyReferenceResolver = null) { _inputFileResolver = inputFileResolver ?? new InputFileResolver(); _initialBuildProcess = initialBuildProcess ?? new InitialBuildProcess(); _initialTestProcess = initialTestProcess ?? new InitialTestProcess(); _testRunner = testRunner; _assemblyReferenceResolver = assemblyReferenceResolver ?? new AssemblyReferenceResolver(); _logger = ApplicationLogging.LoggerFactory.CreateLogger <InitialisationProcess>(); }
public static string Transform(string xml, IAssemblyReferenceResolver resolver) { var ids = new Dictionary <string, Guid>(); var document = XDocument.Parse(xml); var imports = document.Root.Element(Ns + "imports"); if (imports != null) { foreach (var import in document.Root.Element(Ns + "imports").Elements(Ns + "import")) { var assembly = Assembly.Load(File.ReadAllBytes( resolver.ResolveAssemblyReference(import.Attribute("from").Value) )); var type = assembly.GetType(import.Attribute("type").Value, true); var prefixAttribute = import.Attribute("prefix"); string prefix = prefixAttribute != null ? prefixAttribute.Value : ""; foreach (var field in type.GetFields(BindingFlags.Public | BindingFlags.Static)) { if (typeof(Guid).IsAssignableFrom(field.FieldType)) { ids.Add(prefix + field.Name, (Guid)field.GetValue(null)); } } } imports.Remove(); } TransformElement(ids, document.Root.Element(Ns + "ui")); document.Root.AddBeforeSelf(new XComment( @" This code was generated by a tool. Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. ")); return(document.ToString()); }
public static string Transform(string xml, IAssemblyReferenceResolver resolver) { var ids = new Dictionary<string, Guid>(); var document = XDocument.Parse(xml); var imports = document.Root.Element(Ns + "imports"); if (imports != null) { foreach (var import in document.Root.Element(Ns + "imports").Elements(Ns + "import")) { var assembly = Assembly.Load(File.ReadAllBytes( resolver.ResolveAssemblyReference(import.Attribute("from").Value) )); var type = assembly.GetType(import.Attribute("type").Value, true); var prefixAttribute = import.Attribute("prefix"); string prefix = prefixAttribute != null ? prefixAttribute.Value : ""; foreach (var field in type.GetFields(BindingFlags.Public | BindingFlags.Static)) { if (typeof(Guid).IsAssignableFrom(field.FieldType)) ids.Add(prefix + field.Name, (Guid)field.GetValue(null)); } } imports.Remove(); } TransformElement(ids, document.Root.Element(Ns + "ui")); document.Root.AddBeforeSelf(new XComment( @" This code was generated by a tool. Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. ")); return document.ToString(); }
internal static string Transform(string xml, IAssemblyReferenceResolver resolver) { if (xml == null) { throw new ArgumentNullException("xml"); } var setup = new AppDomainSetup { ApplicationBase = Path.GetDirectoryName(typeof(IsolatedResourceTransformer).Assembly.Location), ApplicationName = "Isolated Transformer" }; var appDomain = AppDomain.CreateDomain( setup.ApplicationName, AppDomain.CurrentDomain.Evidence, setup ); try { using (new AssemblyResolver()) { var transformer = (IsolatedResourceTransformer)appDomain.CreateInstanceAndUnwrap( typeof(IsolatedResourceTransformer).Assembly.FullName, typeof(IsolatedResourceTransformer).FullName ); return(transformer.PerformTransform(xml, resolver)); } } finally { AppDomain.Unload(appDomain); } }
public static string GenerateContract(ApiContractGenerator generator, MemoryStream peStream, IAssemblyReferenceResolver assemblyResolver = null) { using var writer = new StringWriter(); return(GenerateContract(generator, writer, peStream, assemblyResolver)); }
private static string GenerateContract(ApiContractGenerator generator, StringWriter writer, MemoryStream assemblyStream, IAssemblyReferenceResolver assemblyResolver = null) { assemblyStream.Seek(0, SeekOrigin.Begin); if (assemblyResolver == null) { assemblyResolver = new CompositeAssemblyReferenceResolver( new GacAssemblyReferenceResolver(), new SameDirectoryAssemblyReferenceResolver(Path.GetDirectoryName(typeof(object).GetTypeInfo().Assembly.Location))); } using (var metadataReferenceResolver = new MetadataReaderReferenceResolver(() => assemblyStream.CreateReadOnlyView(), assemblyResolver)) using (var source = new MetadataReaderSource(assemblyStream, metadataReferenceResolver)) generator.Generate(source, metadataReferenceResolver, new CSharpTextFormatter(writer, metadataReferenceResolver)); return(writer.ToString()); }
public static string GenerateContract(ApiContractGenerator generator, string sourceCode, Microsoft.CodeAnalysis.VisualBasic.LanguageVersion languageVersion, IAssemblyReferenceResolver assemblyResolver = null) { using var stream = new MemoryStream(); EmitCompilation(sourceCode, stream, languageVersion); return(GenerateContract(generator, stream, assemblyResolver)); }
private string PerformTransform(string xml, IAssemblyReferenceResolver resolver) { return ResourceTransformer.Transform(xml, resolver); }
public ContractConstraint WithAssemblyResolver(IAssemblyReferenceResolver assemblyResolver) { this.assemblyResolver = assemblyResolver; return(this); }
public MetadataReaderReferenceResolver(Func <Stream> currentAssemblyStreamFactory, IAssemblyReferenceResolver assemblyResolver) { this.currentAssemblyStreamFactory = currentAssemblyStreamFactory ?? throw new ArgumentNullException(nameof(currentAssemblyStreamFactory)); this.assemblyResolver = assemblyResolver ?? throw new ArgumentNullException(nameof(assemblyResolver)); }
/// <summary> /// Constructor /// </summary> /// <param name="assemblyName">Name of the edited assembly. It's only the simple name (eg. "MyAssembly"), and doesn't contain the public key token, version, etc</param> /// <param name="publicKey">The public key or null if none</param> /// <param name="assemblyReferences">Assembly and module references</param> /// <param name="assemblyReferenceResolver">Reference resolver</param> /// <param name="platform">Platform</param> public CompilerProjectInfo(string assemblyName, byte[] publicKey, CompilerMetadataReference[] assemblyReferences, IAssemblyReferenceResolver assemblyReferenceResolver, TargetPlatform platform) { AssemblyName = assemblyName ?? throw new ArgumentNullException(nameof(assemblyName)); PublicKey = publicKey; AssemblyReferences = assemblyReferences ?? throw new ArgumentNullException(nameof(assemblyReferences)); AssemblyReferenceResolver = assemblyReferenceResolver ?? throw new ArgumentNullException(nameof(assemblyReferenceResolver)); Platform = platform; }
private string PerformTransform(string xml, IAssemblyReferenceResolver resolver) { return(ResourceTransformer.Transform(xml, resolver)); }