扫描.net dll引用dll
2024-09-13 00:34:39
最近升级系统里的NHibernate,从3.3到4,项目工程太多, 一个模块分bll,dal,model,web,test,10几个模块,就要60多dll,升级一次太头疼。
编译过后,有时候会有的dll没引用到对的NHibernate,但是又不说具体哪个dll,手工一个个找也挺麻烦的。后来看了下资料可以用反射,
Assembly.GetReferencedAssemblies()来看下引用的dll。
/*
* User: Peter yu
* Date: 2015/1/7
* Time: 10:50
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Reflection; namespace SearchBin
{ public class RefAssemblyInfo
{
public AssemblyName AssemblyName
{
get;
set;
}
public Assembly SourceAssembly
{
get;
set;
} }
class Program
{
public static void Main(string[] args)
{ List<RefAssemblyInfo> infos = new List<RefAssemblyInfo>(); LoadAssembly( assembly =>
{ foreach(var name in assembly.GetReferencedAssemblies())
{
RefAssemblyInfo refAssemblyInfo = new RefAssemblyInfo(); refAssemblyInfo.AssemblyName = name;
refAssemblyInfo.SourceAssembly= assembly;
infos.Add(refAssemblyInfo);
} },
"*.*.dll",
@"D:\projects\ehr10_new_2\Web\bin"); var resultList= infos
.Where (r=>r.AssemblyName.Name =="NHibernate" && r.AssemblyName.Version.Major <
|| r.AssemblyName.Name =="FluentNHibernate" && r.AssemblyName.Version.Major <
) .OrderBy(r=>r.AssemblyName.Name); foreach(var item in resultList)
{ Console.WriteLine("{0},{1}",item.AssemblyName.FullName,item.SourceAssembly.FullName); }
Console.ReadLine(); } public static void LoadAssembly(
Action<Assembly> load,
string pattern ="*.*",
string path = "",
Func<string, bool> except = null,
bool shadow = false)
{ string adjustPath = path; DirectoryInfo dirInfo = new DirectoryInfo(adjustPath);
foreach (FileInfo file in dirInfo.GetFiles(pattern))
{
try{
bool isFilePass = true;
if (except != null)
{
isFilePass = !except(file.FullName); } if (isFilePass)
{
Assembly assembly;
if (!shadow)
{
assembly = Assembly.LoadFile(file.FullName);
}
else
{
string dllName = file.Name.Remove(file.Name.LastIndexOf("."));
assembly = Assembly.Load(dllName);
}
load(assembly);
}
}catch(Exception error)
{
Console.WriteLine(error);
}
}
}
}
}
最新文章
- List 用法和实例(转载)
- 解决虚拟机 MAC10.9 不能设置1366*768分辨率问题
- NABCD需求分析
- SQL Server 性能调优(一)——从等待状态判断系统资源瓶颈【转】
- java基本概念
- ios strong weak 的区别 与 理解
- C++ multimap 的插入,遍历,删除
- 修改IIS虚拟目录名称
- php array_walk_recursive函数的使用
- sparklyr包:实现Spark与R的接口
- pku 1330 Nearest Common Ancestors LCA离线
- 使用redis限制ip访问次数
- window文件过长无法删除的处理方式
- 【Git】Git使用记录: 撤回已经commit到本地的提交记录
- ORA-30377 MV_CAPABILITIES_TABLE not found
- RF-For循环使用
- 写在OI退役后和高中毕业前的一些话
- Why are Eight Bits Enough for Deep Neural Networks?
- 云计算之路-阿里云上:对“黑色n秒”问题的最终猜想——CPU C-states引起的
- type=file的change事件只能执行一次的解决方案