尝试在Prism中使用DirectoryModuleCatalog时遇到问题。我在WPF项目中使用Unity的Prism版本6.3.0。
在尝试加载模块时,会出现错误:
System.IO.FileNotFoundException:'无法加载文件或程序集'System.Core,版本= 0.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089'或其依赖项之一。系统找不到指定的文件。'
有趣的部分是,当我使用Costura.Fody编织除我从NuGet额外获得的组件之外的所有组件时,一切正常,模块加载。
以防万一,这里有一些代码片段
模块
[Module(ModuleName = "Usb2Usb")]
public class Usb2UsbModule : IModule
{
private IRegionManager _regionManager;
private IUnityContainer _container;
public Usb2UsbModule(IUnityContainer container, IRegionManager regionManager)
{
_container = container;
_regionManager = regionManager;
}
public void Initialize()
{
_regionManager.RegisterViewWithRegion(RegionNames.ToolbarRegion, typeof(TestButton));
_container.RegisterTypeForNavigation<Usb2UsbView>();
}
}
引导程序-CreateModuleCatalog
protected override IModuleCatalog CreateModuleCatalog()
{
DirectoryInfo[] directoryInfoArray = new DrectoryInfo("Modules").GetDirectories("*.*", SearchOption.AllDirectories);
var directoryModuleCatalog = new DirectoryModuleCatalog();
foreach (DirectoryInfo directoryInfo in directoryInfoArray)
{
directoryModuleCatalog.ModulePath = directoryInfo.FullName;
}
return directoryModuleCatalog;
}
发布构建脚本
robocopy "$(TargetDir)\" "$(SolutionDir)ColoradoTime.Testing\$(OutDir)Modules\Usb2Usb" *.dll /purge
if %errorlevel% geq 8 exit 1
exit 0
我可以继续使用Fody技巧,但希望不必维护所有dll排除项的列表。任何建议,不胜感激。谢谢!