在iis7下检测插件程序集
本文关键字:插件 程序集 检测 iis7 | 更新日期: 2023-09-27 18:02:17
我有一个c#程序集,用于网站和winform应用程序。此dll的一部分具有检查是否存在可选插件dll的功能,并在存在时使用它。这通过扫描其本地文件夹查找具有匹配接口的dll来工作。因此,所发生的事情的缩写形式是:
Assembly executingAssembly = Assembly.GetExecutingAssembly();
foreach (FileInfo dllFile in exeLocation.GetFiles("*.dll"))
{
assembly = Assembly.LoadFile(dllFile.FullName);
foreach (Type exportedType in assembly.GetExportedTypes())
{
foreach (Type interfaceType in exportedType.GetInterfaces())
{
if (interfaceType == typeof(IMyInterface))
{
//Found it!
}
}
}
}
不幸的是,在iis7下运行时,它似乎在'Temporary ASP下创建了一个影子副本。. NET文件,其中每个dll位于其自己的文件夹中,因此exeLocation。GetFiles只返回一个dll(它自己)。我需要一个解决方案,将工作为所有的winforms, webforms,服务等(最好不改变iis7配置)
任何想法?
DirectoryInfo location;
if(HttpRuntime.AppDomainAppId != null) {
location = new DirectoryInfo(Path.Combine(HttpContext.Current.Server.MapPath("~/bin")));
} else {
location = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory;
}
foreach (var file in location.GetFiles("*.dll"))
{
// your code
}