小编Gab*_*iba的帖子

C#:Type.GetType 在动态加载的程序集的类上为 null

这是我关于堆栈溢出的第一个问题。我试图寻找一种解决方案,但在任何地方都找不到一个或类似的解决方案。

我有一个 MVC 网站项目,它有不同的 DLL(插件),由于这些 DLL 不需要部署在所有环境中,所以我从文件夹中的 Global.asax 中的 Application_Start 上动态加载它们,并仅部署每个环境所需的内容。所以我不知道在项目中引用它们,这样我就可以为所有人构建一个版本。

我的问题是 Type.GetType("FullClassName, AssemblyName") 总是在这些插件中的对象上返回 null。

在 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();                                    
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过这种方法,对我的程序集进行强命名并将它们添加到 web.config 中,但没有效果。

<dependentAssembly>
    <assemblyIdentity name="MyAssembly"  culture="neutral" publicKeyToken="123456789"/>
        <codeBase version="1.0.1524.23149" href="FILE://C:/Myassemblies/MyAssembly2.dll"/>
    </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗我错过了什么吗?

提前致谢。

c# types appdomain gettype .net-assembly

3
推荐指数
1
解决办法
1121
查看次数

标签 统计

.net-assembly ×1

appdomain ×1

c# ×1

gettype ×1

types ×1