当前位置: 首页>>代码示例>>C#>>正文


C# AssemblyResolver.AddSearchDirectory方法代码示例

本文整理汇总了C#中AssemblyResolver.AddSearchDirectory方法的典型用法代码示例。如果您正苦于以下问题:C# AssemblyResolver.AddSearchDirectory方法的具体用法?C# AssemblyResolver.AddSearchDirectory怎么用?C# AssemblyResolver.AddSearchDirectory使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在AssemblyResolver的用法示例。


在下文中一共展示了AssemblyResolver.AddSearchDirectory方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: LoadAssemblies

		IEnumerable<IUnresolvedAssembly> LoadAssemblies()
		{
			var resolver = new AssemblyResolver();
			foreach (var path in fileNames.Select(f => Path.GetDirectoryName(f)).Distinct(StringComparer.OrdinalIgnoreCase))
				resolver.AddSearchDirectory(path);
			List<AssemblyDefinition> assemblies = new List<AssemblyDefinition>();
			foreach (var file in fileNames.Distinct(StringComparer.OrdinalIgnoreCase))
				assemblies.Add(resolver.LoadAssemblyFile(file));
			foreach (var asm in assemblies.ToArray())
				assemblies.AddRange(asm.Modules.SelectMany(m => m.AssemblyReferences).Select(r => resolver.TryResolve(r)).Where(r => r != null));
			return assemblies.Distinct().Select(asm => loader.LoadAssembly(asm));
		}
开发者ID:nylen,项目名称:SharpDevelop,代码行数:12,代码来源:AssemblyAnalyzer.cs

示例2: Main

        static void Main(string[] args)
        {
            string directory = @"..\..\TestAssemblies\Gendarme\";
            string output = @"..\..\output\";

            IList<string> toMerge = new List<string>(), toCopy = new List<string>();

            foreach(var file in Directory.EnumerateFiles(directory, "Gendarme.Rules.*",SearchOption.TopDirectoryOnly))
            {
                FileInfo fi = new FileInfo(file);
                toMerge.Add(fi.Name);
            }

            //toMerge = new List<string>() { "gendarme.exe" };
            //toCopy = new List<string>() { "gendarme.exe" };
            //toCopy = new List<string>() { "Castle.Windsor.dll", "Castle.Core.dll" };
               // toMerge = new List<string>() { "monolinker.exe", "Mono.Cecil.dll" , "Mono.Cecil.Rocks.dll" };
            //toMerge = new List<string>() { "JanuszLembicz.PW.UI.Forms.exe", "JanuszLembicz.PW.BLC.dll", /*"JanuszLembicz.PW.Common.dll",*/ "JanuszLembicz.PW.UI.Form.Utils.dll" };
            //toCopy = new List<string>() { "Mono.Cecil.dll", "Mono.Cecil.Rocks.dll","monolinker.exe", "Lucene.Net.dll" };

            IList<AssemblyDefinition> assembliesToMerge = new List<AssemblyDefinition>();
            IList<AssemblyDefinition> assembliesToCopy = new List<AssemblyDefinition>();

            AssemblyResolver resolver = new AssemblyResolver();

            foreach(var dir in resolver.GetSearchDirectories())
            {
                resolver.RemoveSearchDirectory(dir);
            }
            resolver.AddSearchDirectory(directory);

            var parameters = new ReaderParameters()
            {
                AssemblyResolver = resolver,
            };

            foreach(var assembly in toMerge)
            {
                assembliesToMerge.Add(AssemblyDefinition.ReadAssembly(directory + assembly, parameters));
            }

            foreach(var assembly in toCopy)
            {
                assembliesToCopy.Add(AssemblyDefinition.ReadAssembly(directory + assembly, parameters));
            }

            MergeAssemblies merger = new MergeAssemblies();

            Console.WriteLine("Merging");
            try
            {
                AssemblyDefinition merged = merger.MergeAssemblies(assembliesToMerge);
                if(merged != null)
                    merged.Write(output + merged.Name.Name + (merged.MainModule.Kind == ModuleKind.Dll ? ".dll" : ".exe"));
            }
            catch(OperationCanceledException e)
            {
                Console.WriteLine(e.Message);
            }
            Console.ReadKey();

            Console.WriteLine("Copying");
            foreach(var assembly in assembliesToCopy)
            {
                AssemblyDefinition copy = merger.CopyAssembly(assembly);
                if(copy != null)
                    copy.Write(output + copy.Name.Name + (copy.MainModule.Kind == ModuleKind.Dll ? ".dll" : ".exe"));
            }

            Console.ReadKey();
        }
开发者ID:Cadla,项目名称:OBFSCTR,代码行数:71,代码来源:Program.cs

示例3: LoadAssemblies

		IList<IUnresolvedAssembly> LoadAssemblies()
		{
			var resolver = new AssemblyResolver();
			foreach (var path in fileNames.Select(f => Path.GetDirectoryName(f)).Distinct(StringComparer.OrdinalIgnoreCase))
				resolver.AddSearchDirectory(path);
			List<AssemblyDefinition> assemblies = new List<AssemblyDefinition>();
			foreach (var file in fileNames.Distinct(StringComparer.OrdinalIgnoreCase))
				assemblies.Add(resolver.LoadAssemblyFile(file));
			foreach (var asm in assemblies.ToArray())
				assemblies.AddRange(asm.Modules.SelectMany(m => m.AssemblyReferences).Select(r => resolver.TryResolve(r)).Where(r => r != null));
			CecilLoader loader = new CecilLoader { IncludeInternalMembers = true };
			// Emulate the old CecilLoader.GetCecilObject() API: 
			loader.OnEntityLoaded = delegate(IUnresolvedEntity entity, MemberReference cecilObj) {
				unresolvedTypeSystemToCecilDict[entity] = cecilObj;
			};
			var loadedAssemblies = new List<IUnresolvedAssembly>();
			foreach (var asm in assemblies.Distinct()) {
				var loadedAssembly = loader.LoadAssembly(asm);
				loadedAssemblies.Add(loadedAssembly);
				unresolvedTypeSystemToCecilDict[loadedAssembly] = asm;
			}
			return loadedAssemblies;
		}
开发者ID:ratoy,项目名称:SharpDevelop,代码行数:23,代码来源:AssemblyAnalyzer.cs

示例4: MonitorAssembly

        /// <summary>
        /// Monitors the specified P# assembly.
        /// </summary>
        /// <param name="dll">Assembly</param>
        private void MonitorAssembly(string dll)
        {
            var path = Assembly.GetAssembly(typeof(Program)).Location;
            var assembly = Assembly.LoadFrom(dll);

            string[] searchDirectories = new[]{
                Path.GetDirectoryName(path),
                Path.GetDirectoryName(assembly.Location),
            };

            var resolver = new AssemblyResolver();
            Array.ForEach(searchDirectories, d => resolver.AddSearchDirectory(d));
            resolver.Attach();

            var engine = new RemoteRaceInstrumentationEngine();
            engine.Execute(this.Configuration);
        }
开发者ID:yonglehou,项目名称:PSharp,代码行数:21,代码来源:ThreadMonitorProcess.cs


注:本文中的AssemblyResolver.AddSearchDirectory方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。