首页 > 解决方案 > Orleans silo 无法从程序集中动态加载谷物,除非我先加载它们

问题描述

我正在尝试修改 HelloWorld 示例,以便能够动态加载颗粒/接口,而不是 SiloHost 的显式依赖项。但是我不断收到错误消息,“Orleans.Runtime.OrleansConfigurationException:添加到 ApplicationPartManager 的程序集均不包含生成的代码。确保已为grain接口和类程序集执行代码生成。”,或者如果我尝试添加“.WithCodeGeneration ",我在尝试加载 DLL 时遇到 FileNotFound 错误。

所以我在 Silo 的 main 函数的开头添加了一行代码,它显式地加载了相关的 DLL,然后宾果游戏,一切正常 - 是的,grain 可以成功地实例化和调用。我将其修改为

 foreach (var fn in System.IO.Directory.GetFiles(appDomainBase, "*.dll"))
     System.Reflection.Assembly.LoadFrom(fn);

它仍然工作得很好。有趣的是,当我尝试使用“LoadFile”时它不起作用。

那么把它留在这里有什么害处吗?为什么还需要它呢?

标签: c#.netorleans

解决方案


推荐阅读