Это мой первый вопрос о переполнении стека.Я пытался найти решение, но нигде не смог найти ни одного, ни похожего.
У меня есть проект веб-сайта MVC, в котором есть разные библиотеки DLL (плагины), и поскольку эти библиотеки не нужно развертывать во всех средах, которые яЯ загружаю их динамически в Application_Start в Global.asax из папки и развертываю только то, что мне нужно для каждой среды.Поэтому мне не нужно ссылаться на них в проекте, чтобы у меня была одна сборка для всех.
Моя проблема в том, что Type.GetType ("FullClassName, AssemblyName") всегда возвращает ноль для объектов, которые находятся в этихПлагины.
В Application_Start я в основном загружаю сборку, регистрирую ее в GAC, загружаю в текущий AppDomain, инициализирую ее метаданные и запускаю ее загрузчик с отражениями для регистрации компонентов в глобальном контейнере Unity.
foreach (string file in fileList) {
string fileName = (Path.GetFileName(file));
Assembly asm = Assembly.LoadFrom(file);
foreach (Type assemblyType in asm.GetTypes()) {
new System.EnterpriseServices.Internal.Publish().GacInstall(file);
AppDomain.CurrentDomain.Load(asm.GetName());
MetaDataHelper.InitialiseMetadataForAssembly(asm);
IBootstrapper bootsrapper = (IBootstrapper)Activator.CreateInstance(assemblyType, container);
bootsrapper.Initialise();
}
}
Я также попробовал этот подход, когда Strong Naming назвал мои сборки и добавил их в web.config безрезультатно.
<dependentAssembly>
<assemblyIdentity name="MyAssembly" culture="neutral" publicKeyToken="123456789"/>
<codeBase version="1.0.1524.23149" href="FILE://C:/Myassemblies/MyAssembly2.dll"/>
</dependentAssembly>
Кто-нибудь может мне помочь, пожалуйста, я что-то упустил?
Заранее спасибо.