加载外部dll时出现reflectiontypeloadeexception

本文关键字:reflectiontypeloadeexception 外部 dll 加载 | 更新日期: 2023-09-27 18:13:55

假设我有一些项目的解决方案。在项目Proj1.BL中,我有抽象类MyAbstractClass,并且(强需求)我应该仅在其他解决方案中继承它。它们都将只包含一个类(例如DerivedClass : MyAbstractClass),将从第一个解决方案(Proj1.BL, Proj1.DataModel等)中引用相应的项目,并将编译为dll(类库)。总之,这些dll (另一个强要求)将存储在$(OutDir of first solution)'Externals中。

我的问题是:我应该如何在第一个解决方案中正确加载这些程序集?我试过这样的方法:

public static Type LoadType(string fileName)
{
    if (fileName == null) throw new ArgumentNullException("fileName");
    fileName = Path.Combine("Externals", fileName);
    if (!File.Exists(fileName)) throw new ApplicationException("File does not exist.");
    return
        Assembly.LoadFrom(fileName)
                .GetTypes()
                .SingleOrDefault(_ => _.IsSubclassOf(typeof (MyAbstractClass)));
}

但是我还是得到

ReflectionTypeLoadException。无法加载一个或多个请求的类型。获取LoaderExceptions属性以获取更多信息。

LoaderException是关于CLR无法从Proj1.BL, Version=*.*.*.*, Culture=neutral, PublicKeyToken=null中加载Proj1.BL.MyAbstractClass类型。

但是我正在运行的代码是在Proj1.BL .怎么了?

谢谢你的建议

加载外部dll时出现reflectiontypeloadeexception

嗯,答案比预期的要简单。当Proj1程序集的"版本"值在每次重建后自动递增时,存在版本不匹配,但DLL期望找到在编译时指定的Proj1程序集的"版本"。

相关文章:
  • 没有找到相关文章