gpt4 book ai didi

c# - 找不到程序集

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:37 24 4
gpt4 key购买 nike

我正在使用 Autofac 动态加载程序集。只要程序集与执行程序集位于同一文件夹中,它就可以正常工作。

但是,如果我要动态加载的程序集位于子文件夹中,则应用程序会崩溃并显示“无法加载文件或程序集...”

我知道,我可以将这些程序集放入 GAC,然后问题就解决了。但这不是我想要的......

这就是我正在做的...

    var builder = new ContainerBuilder();
builder.RegisterApiControllers(AppDomain.CurrentDomain.GetAssemblies());
builder.RegisterModule(new ConfigurationSettingsReader());
builder.Register(c => c.ResolveNamed<IMyInterface>(myVersion));

还有一些配置:

    autofac defaultAssembly="blah"
modules
module type="myVersionFile, blah"
modules
autofac

关于如何在不使用 GAC 的情况下动态加载位于子文件夹中的程序集有什么想法吗?

谢谢

最佳答案

您有多种选择:

  1. 添加 probing path到您的 app.config 指向子文件夹。只有当您尝试加载的程序集以某种方式在您的项目中被引用时,这才会起作用。
  2. 您可以通过其他方式指定要加载的程序集。例如,我总是通过路径和文件名掩码加载它们,即特定文件夹中具有特定名称模式的所有程序集。例如,您可以使用类似这样的代码:

    var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, subFolder);
    var pattern = "YourProject.*.dll";
    var assemblies = Directory.GetFiles(path, pattern).Select(Assembly.LoadFrom);
    builder.RegisterApiControllers(assemblies);

关于c# - 找不到程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12490381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com