我正在尝试用https://github.com/lukebuehler/Caliburn-Composite-Prototype作为我的向导,使用Caliburn micro编写模块化应用程序。
然而,我遇到了一个问题,我确信这归结为我对VS的不熟悉以及所涉及的复杂设置。
基本上我有一个基础应用程序(仪表板),它使用Caliburn micro并覆盖SelectAssemblies
,以便从名为Modules的子文件夹中加载dll(形成我的模块)。
protected override IEnumerable<Assembly> SelectAssemblies()
{
var assemblies = base.SelectAssemblies();
var directory = new DirectoryInfo(@"Modules");
var files = directory.GetFiles("*.dll", SearchOption.TopDirectoryOnly);
//only load the the dlls that are from this namespace
var modules = files.Where(f => f.Name.Contains("Dashboard"))
.Select(f => Assembly.LoadFile(f.FullName));
return assemblies.Concat(modules);
}
现在问题来自于这些dll是由主程序(Dashboard)运行的事实,然后我的所有引用都被破坏,除非我将它们移动到Dashboard的基本目录并且配置,否则无法找到DLL引用找不到文件(例如包含端点的文件)。
我需要做的是允许我的模块使用所需的外部lib和配置文件自包含,然后让仪表板知道在哪里找到这些文件。但是我不知道我需要做些什么才能让它发挥作用。
我希望我能正确解释。