コード例 #1
0
        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);
            }
        }
コード例 #2
0
 public DecompiledCodeResult(IDecompiledDocument[] documents, CompilerMetadataReference[] assemblyReferences, IAssemblyReferenceResolver assemblyReferenceResolver, TargetPlatform platform)
 {
     Documents                 = documents;
     AssemblyReferences        = assemblyReferences;
     AssemblyReferenceResolver = assemblyReferenceResolver;
     Platform = platform;
 }
コード例 #3
0
 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;
 }
コード例 #4
0
 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();
 }
コード例 #5
0
 // 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();
 }
コード例 #6
0
 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>();
 }
コード例 #7
0
        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());
        }
コード例 #8
0
ファイル: ResourceTransformer.cs プロジェクト: netide/netide
        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();
        }
コード例 #9
0
        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);
            }
        }
コード例 #10
0
 public static string GenerateContract(ApiContractGenerator generator, MemoryStream peStream, IAssemblyReferenceResolver assemblyResolver = null)
 {
     using var writer = new StringWriter();
     return(GenerateContract(generator, writer, peStream, assemblyResolver));
 }
コード例 #11
0
		public DecompiledCodeResult(IDecompiledDocument[] documents, CompilerMetadataReference[] assemblyReferences, IAssemblyReferenceResolver assemblyReferenceResolver, TargetPlatform platform) {
			Documents = documents;
			AssemblyReferences = assemblyReferences;
			AssemblyReferenceResolver = assemblyReferenceResolver;
			Platform = platform;
		}
コード例 #12
0
        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());
        }
コード例 #13
0
 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));
 }
コード例 #14
0
 private string PerformTransform(string xml, IAssemblyReferenceResolver resolver)
 {
     return ResourceTransformer.Transform(xml, resolver);
 }
コード例 #15
0
 public ContractConstraint WithAssemblyResolver(IAssemblyReferenceResolver assemblyResolver)
 {
     this.assemblyResolver = assemblyResolver;
     return(this);
 }
コード例 #16
0
 public MetadataReaderReferenceResolver(Func <Stream> currentAssemblyStreamFactory, IAssemblyReferenceResolver assemblyResolver)
 {
     this.currentAssemblyStreamFactory = currentAssemblyStreamFactory ?? throw new ArgumentNullException(nameof(currentAssemblyStreamFactory));
     this.assemblyResolver             = assemblyResolver ?? throw new ArgumentNullException(nameof(assemblyResolver));
 }
コード例 #17
0
 /// <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;
 }
コード例 #18
0
 private string PerformTransform(string xml, IAssemblyReferenceResolver resolver)
 {
     return(ResourceTransformer.Transform(xml, resolver));
 }