В моем проекте есть следующий вспомогательный метод, который проходит через всю сборку и получает все типы, которые являются подклассами типа BaseCamaFrom.
public static List<Type> GetAllTestActionFormTypes()
{
List<Type> types = new List<Type>();
// add all the types that are subclasses of BaseCamaForm to the _camaFormType list
foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
foreach (Type t in asm.GetTypes())
if (t.IsSubclassOf(typeof(BaseCamaForm)))
types.Add(t);
return types;
}
Этот метод работает правильно при первом вызове.Однако при повторном вызове этого метода при вызове asm.GetTypes()
возникает следующее исключение:
ReflectionTypeLoadException was unhandled by user code: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
При просмотре свойства LoaderException я обнаружил System.IO.FileLoadException
со следующим сообщением:
Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
Почему этот код работает в первый раз, когда он вызывается, но всегда исключает второй раз?
Редактировать: После дополнительных исследований, единственные сборки, на которые я ссылаюсьВерсии выполнения 2.0.50727 имеют Microsoft.TeamFoundation.Client и Microsoft.TeamFoundation.VersionControl.Client.Я не могу понять, почему эти ссылки вызывают проблемы с размышлениями, или почему это происходит только со 2-й попытки.Это, кажется, также происходит спорадически при попытке использовать вызов
Activator.CreateInstance(types[x])
в некоторых классах.