在Prism 6 Unity WPF项目中使用DirectoryModuleCatalog时,发生System.Core FileNotFoundException。

时间:2018-10-11 21:59:12

标签: c# wpf mvvm unity-container prism-6

尝试在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排除项的列表。任何建议,不胜感激。谢谢!

0 个答案:

没有答案