스캔.netdll 참조 dll
8591 단어 .net
번역한 후에 때때로 어떤 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 <4
|| r.AssemblyName.Name =="FluentNHibernate" && r.AssemblyName.Version.Major <2
)
.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);
}
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.