最近升级系统里的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);
}
}
}
}
}

最新文章

  1. List 用法和实例(转载)
  2. 解决虚拟机 MAC10.9 不能设置1366*768分辨率问题
  3. NABCD需求分析
  4. SQL Server 性能调优(一)——从等待状态判断系统资源瓶颈【转】
  5. java基本概念
  6. ios strong weak 的区别 与 理解
  7. C++ multimap 的插入,遍历,删除
  8. 修改IIS虚拟目录名称
  9. php array_walk_recursive函数的使用
  10. sparklyr包:实现Spark与R的接口
  11. pku 1330 Nearest Common Ancestors LCA离线
  12. 使用redis限制ip访问次数
  13. window文件过长无法删除的处理方式
  14. 【Git】Git使用记录: 撤回已经commit到本地的提交记录
  15. ORA-30377 MV_CAPABILITIES_TABLE not found
  16. RF-For循环使用
  17. 写在OI退役后和高中毕业前的一些话
  18. Why are Eight Bits Enough for Deep Neural Networks?
  19. 云计算之路-阿里云上:对“黑色n秒”问题的最终猜想——CPU C-states引起的
  20. type=file的change事件只能执行一次的解决方案

热门文章

  1. Spark Streaming揭秘 Day23 启动关闭源码图解
  2. CR0,CR3寄存器
  3. xaml中绑定单例属性
  4. DOM初涉
  5. 【cheerio】nodejs的抓取页面模块
  6. appStore上传苹果应用程序软件发布流程(之前都是同事发,复制一份备用)
  7. bzoj 2744: [HEOI2012]朋友圈 二分图匹配
  8. 团体程序设计天梯赛-练习集L1-010. 比较大小
  9. 如何保护 .NET 应用的安全?
  10. hdu 3929 Big Coefficients 容斥原理